生命不息
折腾不止

端口转发教程(一):使用iptables进行端口转发

玩 vps 的经常要用到端口转发用以实现更快的速度。比如 ovh 机房的网络我这里访问非常慢,用远程桌面会吐血的类型。所以就会用其他的线路作为跳板,比如洛杉矶,香港之类的。再比如如果需要一个日本 ip ,但是本地访问 linodeconoha 的日本都绕路,又慢,这时如果用一个香港的 vps 做中转,就能达到比较稳定快速的效果。

今天就先介绍一个使用 Iptables 来进行中转的教程。使用 iptables 的好处就是不用额外装东西,上手就可以搞。

这篇教程的出处: http://aixiaoxiao.cn/thread-239-1-1.html 我看写的已经很详细了,并且我自己验证可以用了,所以就直接转载了。。省点事。。

* 特别注明:本地服务器 IP 未必是公网 IP ,像阿里云就是内网 IP ,请用 ipconfig 确认下走流量的网卡 IP 是外网还是内网。

第一步:开启系统的转发功能

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]

第三步:重启 iptables 使配置生效

service iptables save
service iptables restart

扩展需求

多端口转发修改方案: ( 将本地服务器的 50000~65535 转发至目标 IP 为 1.1.1.1 的 50000~65535 端口 )

-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 端口)

-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]

 

赞(2)
未经允许不得转载:91云(91yun.co) » 端口转发教程(一):使用iptables进行端口转发

留言 18

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    -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 PREROUTING -p tcp -m tcp –dport 50000:65535 -j DNAT –to-destination 2.2.2.2
    -A PREROUTING -p udp -m udp –dport 50000:65535 -j DNAT –to-destination 2.2.2.2

    端口相同的话
    可以这样一台服务器中转多个ss吗?

    yilin1018年前 (2017-05-12)回复
  2. #0

    我阿里云国际版上海服务器中转成功了,上面对centos7的系统有错误的地方

    风花雪月8年前 (2017-02-11)回复
  3. #0

    centos6.5 添加了楼主给的nat规则,但是防火墙规则怎么设置呢?外部的网络根本连接不到中转服务器,中转服务器扫端口只开了22
    如何开启中转服务器的端口池呢?

    笑娃8年前 (2016-12-24)回复
  4. #0

    博主 pptp怎么做跳板呢

    8年前 (2016-08-29)回复
  5. #0

    Debian配置失败!求指点!谢谢!
    iptables-restore < /etc/iptables.rules iptables-restore v1.4.14: Line 54 seems to have a -t table option. Error occurred at line: 54 Try `iptables-restore -h' or 'iptables-restore –help' for more information.

    夏天乐园9年前 (2016-08-14)回复
  6. #0

    我也没成功。vps是在机房nat里(虽然是外网ip)。
    然后实现ss 出去把80的数据都转发到squid的3128上。(ss和squid都是在一台vps上)
    你们是从国内一台转发到国外另一台,有点不一样。

    UClinux9年前 (2016-08-05)回复
  7. #0

    iptables转发还是很稳定的,要设置forward chain才对。

    hlx980079年前 (2016-07-26)回复
  8. #0

    来,我也顺带求个友链

    Kevin9年前 (2016-07-21)回复
  9. #0

    你的站没友情链接??换了友链不

    我是小马甲~9年前 (2016-07-21)回复
    • 暂时还没规划友链位置

      91yun9年前 (2016-07-21)回复
  10. #0

    32是什么意思

    萌新9年前 (2016-07-21)回复
  11. #0

    请问PPTP可以通过这种方式转发吗?

    VVFGV9年前 (2016-07-21)回复
    • 你可以试下,理论上只要是tcp和udp的包都可以

      91yun9年前 (2016-07-21)回复
    • PPTP是GRE隧道。

      19年前 (2016-07-21)回复
      • 哦。对

        91yun9年前 (2016-07-21)回复
  12. #0

    ss中转是不是用这个就行了,Blog主

    小码9年前 (2016-07-21)回复
    • 91yun9年前 (2016-07-21)回复