背景说明

国外的一些vps,线路一到高峰期就炸,或者说一些运营商的线路好,而切换到另外一个运营商,线路就没法看了。这就会导致各种丢包啊,速度难以忍受啊。

遇到这种情况,要么加钱上三网直连或者买针对自己线路优化的服务器,要么就看看通过国内或者香港、新加坡等对国内国外都比较稳定的VPS来进行中转。

以我当前认为表现比较优异的阿里云国际版 ECS新加坡为例,目前从移动、电信过去的线路比较稳定,基本可以应付中转。

说到中转就涉及到中转的方式选择,大致以下:

  • rinetd
  • haproxy
  • iptables

更多的就不说明了。

rinetdhaproxy都是已经成型的工具,基本可以自行搜索相关使用以及配置方式。这里主要说明通过iptables规则的方式,而这种方式又涉及到直接使用iptables命令以及使用集成工具firewall(centos)以及ufw(debian/ubuntu)。

iptables规则转发图
iptables规则转发图

开启ipv4转发

echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

在配置规则之后可以查询是否设置到了iptables

iptables -t nat -L -v

Centos Firewall端口转发配置

首先检查防火墙伪装功能(SNAT)

# 检查是否允许伪装IP
firewall-cmd --query-masquerade
# 允许防火墙伪装IP
firewall-cmd --add-masquerade --permanent
# 禁止防火墙伪装IP
firewall-cmd --remove-masquerade --permanent

如果查询出来为no,则需要通过add添加。

设置端口转发

# 将80端口的流量转发至8080
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# 将80端口的流量转发至192.168.0.1
firewall-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端口转发配置

  1. 设置默认转发策略
    将默认转发策略从DROP修改为ACCEPT。

    vi /etc/default/ufw
    DEFAULT_FORWARD_POLICY="ACCEPT"
  2. 配置转发规则
    将发往本地端口的数据转发到目的端口

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

参考

最后修改:2021 年 01 月 26 日 11 : 13 PM