一般来说,机房的网络相比民用网络,有更高的 QoS 级别,出口质量会相对高一些。经朋友推荐,入手了阿里云 ECS(云服务器),用其中转原本直接到服务器的流量。经过几番折腾,总结出设置如下(以下均在 Ubuntu 下操作):
1、开启ip_forward
- echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf
- sysctl -p
2、使用 iptables,转发TCP、UDP流量
- iptables -t nat -A PREROUTING -p tcp –dport 12XXX -j DNAT –to-destination 100.XX.XX.XX:12XXX
- iptables -t nat -A POSTROUTING -p tcp -d 100.XX.XX.XX –dport 12XXX -j SNAT –to-source 139.XX.XX.XX
- iptables -t nat -A PREROUTING -p udp –dport 12XXX -j DNAT –to-destination 100.XX.XX.XX:12XXX
- iptables -t nat -A POSTROUTING -p udp -d 100.XX.XX.XX –dport 12XXX -j SNAT –to-source 139.XX.XX.XX
其中 100.XX.XX.XX:12XXX 是目标服务器的 IP 与 端口,139.XX.XX.XX 是阿里云ECS的公网 IP(若 ECS 为专用网络,则填写内网IP)。
3、保存 iptables
- #这里使用 iptables-persistent 保存iptables配置,也可以使用其他方法保存
- apt-get install iptables-persistent
- netfilter-persistent save
OK,这时将上网客户端的 IP 改为阿里云 ECS 的公网 IP,再去连接,流量就会通过阿里云中转,从此卡顿不再有(钞票也不再有)。
需要注意的是,并非所有机房都支持转发,各个机房网络环境也不同,具体操作过程中需要根据实际情况,找到合适的线路。