镜像域名: doub.bid 提供给无翻墙能力的人使用,请大家互相通知~~ 有能力的建议访问 doub,io!
「学翻墙,需要先会翻墙,才能学习翻墙。」逗比交流群:Telegram

Shadowsocks利用 iptables 实现中继(中转/端口转发)加速

Shadowsocks Toyo 15评论
文章目录
[显示]
本文最后更新于 2017年1月18日 19:35 可能会因为没有更新而失效。如已失效或需要修正,请留言!

上次写了一个HaProxy中转的教程,但是不支持UDP端口转发,没办法玩游戏之类的,所以这次写个iptables转发端口教程。

其他的优化方案:https://doub.io/ss-jc26/#三、优化Shadowsocks

其他的端口转发教程https://doub.io/ss-jc26/#服务器中继(国内中转)

Socat:

优点:支持 TCP/UDP 转发。缺点:不支持端口段(多个端口需要开启多个转发)

HaProxy:

优点:支持 TCP 转发,支持 端口段 转发。缺点:不支持 UDP 转发。

iptables:

优点:支持 TCP/UDP 转发,支持 端口段 转发。缺点:配置麻烦,容易出错。

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

echo 1 > /proc/sys/net/ipv4/ip_forward

第二步: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]

示例,假设你的国外服务器是 233.233.233.233 ,你的SS端口是 10000 ,而你这台正在操作的VPS的公网IP是 1.1.1.1

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 233.233.233.233:10000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 233.233.233.233:10000
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p tcp -m tcp --dport 10000 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p udp -m udp --dport 10000 -j SNAT --to-source 1.1.1.1

第三步:重启iptables使配置生效(仅适合Centos6,7默认没有安装iptables防火墙,Debian/Ubuntu 不需要输入这个命令)

service iptables save
service iptables restart

扩展需求

多端口转发修改方案:

本地服务器 10000~30000 端口转发至目标IP 233.233.233.233  10000~30000 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:30000 -j DNAT --to-destination 233.233.233.233:10000-30000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:30000 -j DNAT --to-destination 233.233.233.233:10000-30000
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p tcp -m tcp --dport 10000:30000 -j SNAT --to-source [本地服务器IP]
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p udp -m udp --dport 10000:30000 -j SNAT --to-source [本地服务器IP]

非同端口号修改方案:

本地服务器 10000 端口转发至目标IP 233.233.233.233  30000 端口

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 233.233.233.233:30000
iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 233.233.233.233:30000
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p tcp -m tcp --dport 30000 -j SNAT --to-source [本地服务器IP]
iptables -t nat -A POSTROUTING -d 233.233.233.233 -p udp -m udp --dport 30000 -j SNAT --to-source [本地服务器IP]

这个时候你Shadowsocks客户端填写Shadowsocks信息的时候端口应该填 10000 而不是 30000

查看NAT规则

iptables -t nat -vnL

删除NAT规则

通过上面的查看规则命令,查看规则后,确定你要删除的规则的顺序,下面的命令是删除 第一个 规则。

iptables -t nat -D POSTROUTING 1
iptables -t nat -D PREROUTING 1

其他的端口转发教程https://doub.io/ss-jc26/#服务器中继(国内中转)

其他的优化方案:https://doub.io/ss-jc26/#三、优化Shadowsocks

参考资料:https://github.com/shadowsocks/shadowsocks/wiki/Setup-a-Shadowsocks-relay

本教程转载自:https://www.91yun.org/archives/3008

转载请超链接注明:逗比根据地 » Shadowsocks利用 iptables 实现中继(中转/端口转发)加速
责任声明:本站一切资源均原创或收集自互联网,仅作交流学习之用,请勿用作商业!如造成任何后果,本站概不负责!

赞 (16)or打赏
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(15)个小伙伴在吐槽
  1. firewall一样也可以实现上述的功能,centos7不需要改用iptables。
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # 开启防火墙转发
    firewall-cmd --permanent --add-port=2333/tcp
    firewall-cmd --permanent --add-port=2333/udp
    firewall-cmd --permanent --add-masquerade
    firewall-cmd --permanent --add-forward-port=port=2333:proto=tcp:toport=6666:toaddr=1.1.1.1
    firewall-cmd --permanent --add-forward-port=port=2333:proto=udp:toport=6666:toaddr=1.1.1.1
    firewall-cmd --reload
    
    以上完成了简单的防火墙中转。
    其中 2333 代表本地监听端口, 6666 表示欲中转服务器(SS服务端)的端口, 1.1.1.1 代表欲中转服务器(SS服务端)的ip地址,大家可以试一下。
    快看那头熊2016-12-26 15:21 回复
    • 不玩Centos,不清楚这些,我帮你编辑格式化一下。
      Toyo2016-12-26 15:30 回复
      • 我是看到你的文章觉得可以一试,然后去测试了一下,然后我又懒得换iptables了,就直接用firewall搞了一下
        快看那头熊2016-12-26 15:37 回复
  2. 你好,按照要求来弄。输完service iptables save 返回结果:iptables: unrecognized service 不能识别的服务?怎么回事,求解答。
    smish2016-12-22 01:35 回复
    • Debian/Ubuntu是没有把iptables注册成服务的,CentOS 7也是,7默认用的是firewall防火墙,需要关掉或者删掉安装iptables防火墙才行。
      Toyo2016-12-22 10:46 回复
  3. 请问这个能不能同时中转多个ip
    LL2016-11-27 01:30 回复
  4. 233.233.233.233/32 这个32是什么意思?
    John2016-08-25 12:11 回复
  5. 手机上怎么弄
    4019559772016-08-19 23:00 回复
  6. 如非同端口那个方案,转发后算的是10000端口还是30000端口,求解
    jiqimao2016-08-14 17:35 回复
    • 这个时候你Shadowsocks客户端填写Shadowsocks信息的时候端口应该填 10000 而不是 30000 。
      Toyo2016-08-14 19:40 回复
  7. 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.
    夏天乐园2016-08-14 11:10 回复
  8. "看完此逗比文章的心情时"有迷投票bug啊,投票一个人可以多次戳相同的选项。。。
    ENDMAN352016-07-28 06:04 回复
    • 无所谓了,反正也只是加上玩的,不用在意这些细节
      Toyo2016-07-28 06:49 回复