Linux下使用iptables进行端口转发
玩vps的经常要用到端口转发用以实现更快的速度。比如ovh机房的网络我这里访问非常慢,用远程桌面会吐血的类型。所以就会用其他的线路作为跳板,比如洛杉矶,香港之类的。再比如如果需要一个日本ip,但是本地访问linode,conoha的日本都绕路,又慢,这时如果用一个香港的vps做中转,就能达到比较稳定快速的效果。
今天就先介绍一个使用Iptables来进行中转的教程。使用iptables的好处就是不用额外装东西,上手就可以搞。
这篇教程的出处:http://aixiaoxiao.cn/thread-239-1-1.html 我看写的已经很详细了,并且我自己验证可以用了,所以就直接转载了。。省点事。。
第一步:开启系统的转发功能
1 |
vi /etc/sysctl.conf |
将net.ipv4.ip_forward=0
修改成net.ipv4.ip_forward=1
编辑后使用命令让配置马上生效
1 |
sysctl -p |
第二步:iptables的命令
1 2 3 4 |
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使配置生效
1 2 |
service iptables save service iptables restart |
扩展需求
多端口转发修改方案:(将本地服务器的50000~65535转发至目标IP为1.1.1.1的50000~65535端口)
1 2 3 4 |
-A PREROUTING -p tcp -m tcp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1 -A PREROUTING -p udp –m udp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1 -A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000:65535 -j SNAT --to–source [本地服务器IP] -A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000:65535 -j SNAT --to–source [本地服务器IP] |
非同端口号修改方案:(使用本地服务器的60000端口来转发目标IP为1.1.1.1的50000端口)
1 2 3 4 |
-A PREROUTING -p tcp -m tcp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000 -A PREROUTING -p udp -m udp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000 -A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000 -j SNAT --to-source [本地服务器IP] -A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000 -j SNAT --to-source [本地服务器IP] |