CentOS 6 通过iptables进行流量转发

有运维或运维开发方面的需求,可以联系博主QQ 452336092或Email:admin#centos.bz(收费)

受限于国内网络环境以及国际出口的成天炸炸炸,当然这一切都可以通过加钱来解决,加钱世界可及 — 中国奠信

有些服务器的网络面向大陆比较友好,例如阿里云香港B/C区、腾讯云香港,这时可以通过使用iptables进行流量转发来让那些面向大陆网络情况不是很友好的服务器,也能跑满100Mbps甚至更高。

流量转发的方案很多,iptables算是其中一种,还有HaProxy和SoCat,不过都有比较大的局限,例如HaProxy无法转发UDP,SoCat无法批量转发多个端口,但是单端口转发SoCat是个不错的选择。

既然要进行流量转发,那么首先要开启服务器的转发功能,打开控制台输入 vi /etc/sysctl.conf 然后找到 net.ipv4.ip_forward = 0 修改为 net.ipv4.ip_forward = 1 随后保存。

执行 sysctl -p 来使更改生效。

然后执行以下命令来添加iptables转发规则

单端口转发

iptables -t nat -A PREROUTING -p tcp --dport [要转发的端口号] -j DNAT --to-destination [要转发的服务器IP]
iptables -t nat -A PREROUTING -p udp --dport [要转发的端口号] -j DNAT --to-destination [要转发的服务器IP]
iptables -t nat -A POSTROUTING -p tcp -d [要转发的服务器IP] --dport [要转发的端口号] -j SNAT --to-source [本机IP]
iptables -t nat -A POSTROUTING -p udp -d [要转发的服务器IP] --dport [要转发的端口号] -j SNAT --to-source [本机IP]

端口段转发,栗子:转发10000到20000这个端口段,则填10000:20000

iptables -t nat -A PREROUTING -p tcp --dport [要转发的端口段] -j DNAT --to-destination [要转发的服务器IP]
iptables -t nat -A PREROUTING -p udp --dport [要转发的端口段] -j DNAT --to-destination [要转发的服务器IP]
iptables -t nat -A POSTROUTING -p tcp -d [要转发的服务器IP] --dport [要转发的端口段] -j SNAT --to-source [本机IP]
iptables -t nat -A POSTROUTING -p udp -d [要转发的服务器IP] --dport [要转发的端口段] -j SNAT --to-source [本机IP]

最后保存规则和重启iptables服务

service iptables save

service iptables restart

现在可以去试试看流量转发后速度效果如何了。

原文出处:dkys -> http://www.dkys.org/archives/1075.html

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^