VPS 中转 端口转发配置
背景说明
国外的一些vps,线路一到高峰期就炸,或者说一些运营商的线路好,而切换到另外一个运营商,线路就没法看了。这就会导致各种丢包啊,速度难以忍受啊。
遇到这种情况,要么加钱上三网直连或者买针对自己线路优化的服务器,要么就看看通过国内或者香港、新加坡等对国内国外都比较稳定的VPS来进行中转。
以我当前认为表现比较优异的阿里云国际版 ECS新加坡为例,目前从移动、电信过去的线路比较稳定,基本可以应付中转。
说到中转就涉及到中转的方式选择,大致以下:
rinetd
haproxy
iptables
更多的就不说明了。
rinetd
和haproxy
都是已经成型的工具,基本可以自行搜索相关使用以及配置方式。这里主要说明通过iptables规则的方式,而这种方式又涉及到直接使用iptables命令以及使用集成工具firewall
(centos)以及ufw
(debian/ubuntu)。
开启ipv4转发
echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.confsysctl -p
在配置规则之后可以查询是否设置到了iptables
iptables -t nat -L -v
Centos Firewall端口转发配置
首先检查防火墙伪装功能(SNAT)
# 检查是否允许伪装IPfirewall-cmd --query-masquerade# 允许防火墙伪装IPfirewall-cmd --add-masquerade --permanent# 禁止防火墙伪装IPfirewall-cmd --remove-masquerade --permanent
如果查询出来为no,则需要通过add添加。
设置端口转发
# 将80端口的流量转发至8080firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent# 将80端口的流量转发至192.168.0.1firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1 --permanent# 将80端口的流量转发至192.168.0.1的8080端口firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent#查询所有配置firewall-cmd --list-all
Debian/Ubuntu Ufw端口转发配置
设置默认转发策略
将默认转发策略从DROP修改为ACCEPT。vi /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT"
配置转发规则
将发往本地端口的数据转发到目的端口
vi /etc/ufw/before.rules # 注意,需要将下列配置加在(*filter)过滤规则之前。 # --------------------------------- # Forwarding *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport <src port> -j DNAT --to-destination <dst ip>:<dst port>-A PREROUTING -p udp --dport <src port> -j DNAT --to-destination <dst ip>:<dst port>-A POSTROUTING -p tcp -d <dst ip> --dport <dst port> -j SNAT --to-source <src ip>-A POSTROUTING -p udp -d <dst ip> --dport <dst port> -j SNAT --to-source <src ip>COMMIT
<src ip>
:转发服务器ip地址<src port>
:发往转发服务器的本地端口<dst ip>
:目的服务器ip地址<dst port>
:目的服务器端口
这里的src ip
,需要注意的是,如果是在类似阿里云、腾讯云这种存在NAT的服务器厂商,则需要确认是否为内网ip还是外网ip。可以自己尝试,内网不行就换成外网。
例如,阿里云:
阿里云 ECS:经典网络: 使用公网ip
阿里云 ECS:专用网络: 使用内网ip
参考
转载来自:https://www.tkmiss.com/archives/vps_port_forward.html