这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

『原创』Shadowsocks iptables 中继(中转/端口转发) 便捷管理脚本

Shadowsocks Toyo 80评论
广告
本文最后更新于 2018年9月20日 20:09 可能会因为没有更新而失效。如已失效或需要修正,请留言!

最近没什么教程好写的,那就闲的没事写个脚本吧!

Shadowsocks 中继(中转)能用的工具很多,我的网站介绍过 HaProxy、iptables、Socat。

前两天我写了Socat和HaProxy的脚本,今天我就写个iptables的脚本。

iptables手动教程:Shadowsocks利用 iptables 实现中继(中转/端口转发)加速

其他 Shadowsocks中继(中转)教程:传送门

点击展开 查看个端口转发工具优缺点

系统要求

Centos / Debian / Ubuntu 14.04 +

推荐 Debian / Ubuntu,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。

CentOS 7 默认的防火墙是 firewall,要使用本脚本,请先卸载或关闭 firewall 服务器,并安装 iptables 全套软件。

脚本版本

Ver: 1.1.1

安装步骤

  1. wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh

下载并运行脚本后,先选择 1. 安装 iptables ,会检测是否安装 iptables 同时也会进行 iptables 防火墙开机启动加载等配置。

使用方法

  1. ./iptables-pf.sh

运行脚本后,会显示菜单:

  1. iptables 端口转发一键管理脚本 [vx.x.x]
  2. -- Toyo | doub.io/wlzy-20 --
  3. 0. 升级脚本
  4. ————————————
  5. 1. 安装 iptables
  6. 2. 清空 iptables 端口转发
  7. ————————————
  8. 3. 查看 iptables 端口转发
  9. 4. 添加 iptables 端口转发
  10. 5. 删除 iptables 端口转发
  11. ————————————
  12. 注意:初次使用前请请务必执行 1. 安装 iptables(不仅仅是安装)
  13.  
  14. 请输入数字 [0-5]:

选择 4. 添加 iptables 端口转发 后,会提示你依次输入 欲转发IP、欲转发端口、本地监听端口、本地IP、转发类型:

  1. 请输入 iptables 欲转发至的 远程端口 [1-65535] (支持端口段 2333-6666, 被转发服务器):10000-11000
  2.  
  3. 欲转发端口 : 10000-11000
  4.  
  5. 请输入 iptables 欲转发至的 远程IP(被转发服务器):2.2.2.2
  6.  
  7. 欲转发服务器IP : 2.2.2.2
  8.  
  9. 请输入 iptables 本地监听端口 [1-65535] (支持端口段 2333-6666)
  10. (默认端口: 10000-11000):
  11.  
  12. 本地监听端口 : 10000-11000
  13.  
  14. 请输入 本服务器的 公网IP网卡IP(注意是网卡绑定的IP,而不仅仅是公网IP,回车自动检测):
  15.  
  16. 本服务器IP : 1.1.1.1
  17.  
  18. 请输入数字 来选择 iptables 转发类型:
  19. 1. TCP
  20. 2. UDP
  21. 3. TCP+UDP
  22.  
  23. (默认: TCP+UDP):
  24.  
  25. ——————————————————————————————
  26. 请检查 iptables 端口转发规则配置是否有误 !
  27.  
  28. 本地监听端口 : 10000-11000
  29. 服务器 IP : 2.2.2.2
  30.  
  31. 欲转发的端口 : 10000-11000
  32. 欲转发 IP : 1.1.1.1
  33. 转发类型 : TCP+UDP
  34. ——————————————————————————————

最后会提示你确认配置是否有误,如果没有问题就按任意键继续,启动成功后就会提示:

  1. ——————————————————————————————
  2. iptables 端口转发规则配置完成 !
  3.  
  4. 本地监听端口 : 10000:11000
  5. 服务器 IP : 1.1.1.1
  6.  
  7. 欲转发的端口 : 10000:11000
  8. 欲转发 IP : 2.2.2.2
  9. 转发类型 : TCP+UDP
  10. ——————————————————————————————

选择 3. 查看 iptables 端口转发 后,会显示如下:

  1. 当前有 2 iptables 端口转发规则。
  2. 1. 类型: tcp 监听端口: 10000:20000 转发IP和端口: 2.2.2.2:10000-20000
  3. 2. 类型: udp 监听端口: 10000:20000 转发IP和端口: 2.2.2.2:10000-20000

选择 5. 删除 iptables 端口转发 后,也会显示列表,然后让你选择 要删除的端口转发规则序号

Shadowsocks客户端说明

假设你的海外服务器(被中转)中搭建的Shadowsocks服务端的IP是 2.2.2.2  ,SS端口是 10000

假设中转服务器的IP是 1.1.1.1 ,本地监听端口和SS端口不一致,本地监听端口是 20000

那么,你的Shadowsocks客户端,添加Shadowsocks服务器,IP填写 1.1.1.1 ,端口填写 20000 其他的 密码/加密方式/协议/混淆等等 全部和原Shadowsocks账号一样!

其他说明

CentOS 7 默认的防火墙是 firewall,要使用本脚本,请先卸载或关闭 firewall 服务器,并安装 iptables 全套软件。

关于国内腾讯云等服务器转发失败解释

国内的很多服务器,例如腾讯云,在VPS网卡上面绑定的都是内网IP,这样的话,如果你用脚本自动检测外网IP,会转发失败,需要在添加转发规则的时候,本服务器IP手动写你的服务器 网卡上面绑定的IP。

  1. ifconfig
  2. # 输入命令后会看到 网卡信息,我们看第二行的 inet addr:xxx.xxx.xxx.xxx ,这里的 xxx 就是你的网卡绑定的IP。

提示wget: unknown host “raw.githubusercontent.com” 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

点击展开 查看更多

提示 wget: command not found 的错误

这是你的系统精简的太干净了,wget都没有安装,所以需要安装wget。

点击展开 查看更多

更换 apt源,解决安装错误:[错误] iptables安装失败 等等

一些VPS的 apt源太老旧,导致无法安装或升级iptables,所以我这里写上如何更换 apt源。所以我只针对这两个系统,Centos的自己去谷歌yum镜像源。

点击展开 查看更多

更新日志

2017年09月01日,版本 v1.1.1

1. 修复 删除转发规则 顺序错误的问题。

2017年06月05日,版本 v1.1.0

1. 重写 脚本。

2017年02月23日,版本 v1.0.1

1.新增 手动输入服务器公网IP功能

2016年12月24日,版本 v1.0.0

1.推出 正式版本。

iptables手动教程:Shadowsocks利用 iptables 实现单端口 中继(中转)加速

其他 Shadowsocks中继(中转)教程:传送门

转载请超链接注明:逗比根据地 » 『原创』Shadowsocks iptables 中继(中转/端口转发) 便捷管理脚本
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (36)
发表我的评论
取消评论
表情

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(80)个小伙伴在吐槽
  1. 这个支持开机启动嘛
    ds2018-11-07 15:37 回复
    • 正常情况下,开机会自动加载规则的(脚本会配置的)。
      Toyo2018-11-07 18:01 回复
  2. ubuntu18.04安装之后,设置好转发端口过一段时间就失效了,然后所有端口也没法开放了
    匿名2018-10-25 13:22 回复
  3. 求逗比大佬更新,转发服务器IP 支持域名....动态IP 我尝试了一下不支持域名!!!
    Luze2018-10-04 10:01 回复
    • 本身就不支持,脚本只负责管理,而不是负责转发。
      Toyo2018-10-04 10:52 回复
  4. 我用了ufw防火墙之后,用了你的一键脚本,所添加的列表根本没起作用。。。
    polo23332018-08-23 17:09 回复
  5. Toko大佬,我想请问的是,被中转的IP是否需要接容原版协议??
    Buddy2018-08-17 17:14 回复
    • 中转服务器只负责转发,不管你转发的是什么内容,就是无脑转发。
      Toyo2018-08-17 17:52 回复
  6. 你好,我有一台搬瓦工和国内的路由器上,本人在国外,想看国内的视频网站,有些地域限制,国外ip没法看。我已经找到视频网站验证是否国内ip的网段 现在我是国外直连ssr到国内的路由器,但是速度太慢,想把国内的网段全部通过搬瓦工中转,验证ip的网段通过搬瓦工再连到国内的路由器上,搬瓦工已经用您的脚本安装好Ssr,还另装了一个ssr-redir 测试一切正常,请问如何设置iptables让某个网段的ip在vps上转发到国内路由器上?谢谢
    nicauswu2018-07-17 06:28 回复
    • 你在国外,你要翻回国内。你在国内的路由器上面搭建或开启了SSR服务端?
      那你只需要在搬瓦工的服务器上面做个中转即可,不需要搭建SSR服务端。
      假设你国内路由器的IP为 1.1.1.1,端口为 2333,你搬瓦工的IP为 2.2.2.2,端口也为 2666(可一样,不一样只是为了让你区分)。
      那么搬瓦工上面中转信息是:本地监听端口 2666,目标IP 1.1.1.1,目标端口 2333。
      而你本地SSR客户端只需要把你原版链接国内路由器的SSR账号信息的IP和端口修改为 2.2.2.2、2666 即可。
      当然有个问题就是,国内大多都是内外IP,不过你能直连路由器说明你已经解决了该问题(端口映射、内网穿透、要求运营商更换为外网IP)。
      另一个问题就是国内的家庭宽带IP都是动态的。你可能需要DDNS之类的软件辅助(部分路由器自带)。
      Toyo2018-07-17 07:31 回复
      • 谢谢回复,国内路由器已经可以用了,但是上传有限,只想视频网站验证的那个ip段走国内,其他国内ip走搬瓦工 我的想法是这样的 澳洲直连外国ip 澳洲-搬瓦工(美国)-国内ip地址 澳洲-搬瓦工-国内路由器-国内视频网站验证的ip地址 其他所有问题都解决,包括国内路由器外网ddns,国内路由和搬瓦工上的ssr服务端部署。 现在只有搬瓦工上的iptables没有解决,研究了半天还是没有头绪。
        nicauswu2018-07-17 12:18 回复
      • 路由器的性能有限,所以我只想让路由器判断是否是国内ip段,是的话就走搬瓦工 搬瓦工来判断是否是视频网站验证的那个ip段,如果是再连国内,如果不是,它就可以直接读取
        nicauswu2018-07-17 12:21 回复
  7. 之前用逗比的brook那个中转,感觉不太稳,经常五六个人同时连上就挂了。要重启brook才行。
    jhon2018-06-09 23:03 回复
  8. 大佬,远程服务器可以添加支持域名吗,有些动态鸡得用域名
    iMusi2018-05-10 15:23 回复
    • 应该是支持的,我没测试过。
      Toyo2018-05-11 13:21 回复
      • 用域名的话可以添加,但添加完查看规则的时候会没添加上
        iMusi2018-05-17 05:56 回复
  9. 请问下大佬,所有的中转都只是延时好看,是吗。我安装BBR或锐速,都提高不了速度
    red2018-02-26 22:01 回复
    • 这要取决于:你与中转服务器之间的网络质量/延迟 和 中转服务器与被中转服务器之间的网络质量/延迟。中转后的延迟要加在一起计算,而不是单纯看你到中转服务器的延迟。
      中转一般适合于,比如你是电信或者那些三流运营商,外网QOS限速严重,那么可以买个国内服务器(联通/移动单线 或者三网)做中转来突破本地运营商对外网的限速。
      Toyo2018-02-27 15:11 回复
  10. 大神你好。。我一台深圳VPS转香港VPS 两台都装了SSR 转发端口8080-20001现在用SS客户端连接一直显示连接不上外网。。求教
    粗哥2017-11-05 11:31 回复
    • 两台都安装SSR服务端干嘛?只需要香港VPS(被中转服务器)安装即可。
      Toyo2017-11-05 17:17 回复
  11. 请问被中转的机器和中转的服务器上是不是都要安装呢? 如果使用ss的话只要中转的主机上要安装ss后端呢? 还是说被中转的和中转的都要安装? 最后一个问题,如果我的国内服务器中转端口为1000-2000 被中转的端口是不是也要设置为1000-2000呢 可不可以只开一个端口呢 例如:被中转的是99端口 中转端口是1000-2000 在此 多谢大佬答疑解惑
    糖糖2017-10-15 23:06 回复
    • 中转服务器 A 只负责中转数据,比如本脚本的iptables 防火墙来负责数据端口转发。
      被中转服务器 B 则需要安装SS/SSR服务端,你的客户端链接中转服务器,中转服务器 A 把数据转发到 被中转服务器 B ,然后被中转服务器 B 上面的SS/SSR服务端就开始访问你要访问的网站等,最后原路返回。
      中转端口和被中转端口无需一致,不过你说的被中转服务器端口为 99,中转端口为 1000-2000 范围,我没试过,但是理论可以。
      Toyo2017-10-16 11:56 回复
      • 感谢大佬回复 辛苦 我试试
        糖糖2017-10-16 16:07 回复
      • 我试了一下还是不信 我的北京节点是中转节点 另一个是香港的 目的是减少延迟 。在香港节点上搭建ss后端,在北京节点上搭建中转 但是北京节点无法连接 。求解要怎么搭才可以
        糖糖2017-10-16 17:52 回复
      • 经过询问大佬 问题解决了 感谢大佬们答疑解惑 么么哒
        糖糖2017-10-16 22:52 回复
        • 请问你是怎么解决的? 求教
          Accidia2017-10-25 14:40 回复
  12. 站长,我设置完以后,用国内服务器可以上谷歌,但是不能上YouTube
    Tionsin2017-10-04 21:22 回复
  13. 好吧,搞定了,运行yum install iptables-services和systemctl enable iptables就好了
    chx8182017-08-31 23:40 回复
  14. 请输入数字 来选择要删除的 iptables 端口转发规则(默认回车取消):1 iptables v1.4.21: Couldn't load match `all':No such file or directory Try `iptables -h' or 'iptables --help' for more information. The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl. [信息] iptables 端口转发规则删除完成 ! root@chx818 ~]# service iptables start Redirecting to /bin/systemctl start iptables.service Failed to issue method call: Unit iptables.service failed to load: No such file or directory. cat大阪的服务器,出现这种情况,而且也是无法使用
    chx8182017-08-31 23:35 回复
  15. 为什么在谷歌云服务器上无法使用,debian9系统,规则查看正常,防火墙正常,控制台已开启ip转发,但就是用不了
    chx8182017-08-31 23:25 回复
  16. 请输入数字 [0-5]:2 请输入正确数字 [0-5] ---------- 为什么一直说输入有误,阿拉伯数字啊,没毛病啊。
    昵称是个符号2017-08-20 17:16 回复
    • 我测试输入 2 正常,你输入 1 3 4 5 这些数字是否正常?脚本是否为最新版本?
      Toyo2017-08-20 19:34 回复
  17. 老大,我卸载了系统自带的Iptables的,然后通过这个脚本进行重新安装。安装之后配置转发规则什么的都没问题,开放了22端口。但是断开SSH后,再次连接就连不上,很苦恼
    poney2017-08-07 17:04 回复
    • 防火墙问题?端口没正常开放?
      Toyo2017-08-07 19:19 回复
  18. iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. toyo大佬,这是什么情况啊,我想用这个脚本去做nat vps
    chx8182017-08-05 21:51 回复
    • Perhaps iptables or your kernel needs to be upgraded.
      也许你需要升级内核或者iptables.
      Toyo2017-08-05 22:43 回复
      • 我在开ovz nat vps,好像用不了其他内核,请问有没有其他中转端口的方法了?
        chx8182017-08-05 23:56 回复
        • 文章里开头写了,不过都有各种缺点。
          Toyo2017-08-06 00:13 回复
          • haproxy能不能够支持多个端口/端口段同时转发
            chx8182017-08-06 10:14 回复
            • 支持,但是只支持TCP转发,UDP不支持。
              Toyo2017-08-06 22:22 回复
    • 可能是因为权限不够, 加个 sudo 试试看.
      iugo2018-10-07 16:59 回复
  19. 请问支持远端服务器的域名输入吗?购买的ss服务器 ip经常变呢
    ger2017-06-30 16:53 回复
    • 没有试过,你可以试试。
      Toyo2017-07-01 13:19 回复
  20. 思科能不能转发大佬?
    jjc2017-06-06 09:46 回复
  21. 比如我现在想用俄罗斯中转vultr(10000-15000) 中转成(20000-25000) 俄罗斯本地再开个(10000-15000) 不知可否
    CN2017-05-15 12:26 回复
    • 你 俄罗斯中转vultr 是把 10000-15000对应转发到了20000-25000,也就是你已经占了这一万个端口了,你就不能再其他地方使用这一万个端口了,因为已经被占用。
      Toyo2017-05-15 13:07 回复
  22. 一对多vps转发,怎么配置,谢谢!
    kelvin2017-03-31 14:15 回复
    • 具体
      Toyo2017-03-31 15:27 回复
      • 我估计他的意思是一台国内vps转发多台国外vps流量,怎么处理
        如风2017-05-03 19:53 回复
  23. 想问一下这可不可以IP转发 即显示源头IP
    CBKEY2017-02-28 19:03 回复
    • 不清楚你说的是什么意思,用这个转发后,去访问某个网站,显示的是 被转发的服务器的IP。
      Toyo2017-02-28 21:59 回复
      • 用户IP经过转发伺服器 用户IP都能在目标伺服器看到
        CBKEY2017-03-01 14:59 回复
        • 不行。至少我这个脚本不行。
          Toyo2017-03-01 15:00 回复
  24. 现在很多 VPS 使用了智能路由,所以有时候脚本检测到了外网地址,但是需要填的是内网地址。所以作者能不能在 IP 那块,选择自动获取或手动输入呢? 或者干脆手动输入最好了。连自己服务器IP都不知道还玩个鸟 -,-
    DevilAngel2017-02-23 16:29 回复
    • 新版本 v1.0.1 新增 手动输入本地公网IP功能,重新下载脚本使用。
      Toyo2017-02-23 20:37 回复
      • 不应该用SNAT,用MASQUERADE, GCE和阿里云都亲测
        darkradx2017-05-23 15:13 回复
  25. 好东西,终于能转发了,打赏打赏 :cool:
    Araragi2017-02-06 00:22 回复
  26. 站长你好,我想单独转发到www.google.com.hk的流量到另一台vps,请问应该怎么设置呢
    kkren2017-02-01 22:55 回复
    • 端口转发只是针对端口的,要转发网页数据,你可能需要反向代理,在我网站搜索反向代理。
      Toyo2017-02-01 23:24 回复
      • 我的意思是把ss的流量直接转发到另一台vps上,不是反代,可以吗
        kkren2017-02-02 00:12 回复
        • 那你该怎么设置怎么设置啊,在中转服务器上面运行脚本,填写要转发的SS IP和端口就行了。
          Toyo2017-02-02 01:30 回复
          • 但是我只想转发去谷歌的流量。。
            kkren2017-02-02 09:54 回复
            • 只转发SS中的Google流量的话,可能需要搭配复杂的iptables规则来实现,我不清楚。
              Toyo2017-02-02 14:49 回复
  27. 实测centos用这个脚本无效果,手动设置就可以
    danny2017-01-12 00:38 回复
    • 我不用centos,所以只在debian/ubuntu上面做了测试,centos是否可以我也没测试。
      Toyo2017-01-12 01:12 回复
  28. 其实可以用curl来代替wget,而且一般的linux都有curl的。
    天使也无奈2017-01-05 13:07 回复
    • 然并卵,我见过没有安装curl的比没有安装wget的VPS多得多。
      Toyo2017-01-05 13:11 回复
  29. 腾讯云上安装成功后,无任何错误提示 Debian 7.4 64位 转发不成功,重启过了。
    甘文2017-01-02 07:08 回复
    • 确定用法和客户端信息正确吗?我没有用腾讯云测试过,但是用我自己的VPS测试是完全可以的。
      Toyo2017-01-02 11:47 回复
      • 腾讯云 公网IP 和ETH0 地址不一样
        大的2017-08-12 17:37 回复
        • 那就不清楚了。。
          Toyo2017-08-12 17:45 回复
  30. :???: 为哈中转不了。阿里云的机器上面测试
    haell2017-01-01 23:27 回复
    • 确定用法和客户端信息正确吗?我没有用阿里云测试过,但是用我自己的VPS测试是完全可以的。
      Toyo2017-01-02 11:47 回复
      • 博主是什么系统测试的我用的是Centos
        haell2017-01-02 12:12 回复
        • 我只在Debian/Ubuntu系统上面做了测试,Centos从来不用。
          Toyo2017-01-02 13:09 回复
      • 阿里云VPC环境下,主机的IP是一个内网IP,需要考虑NAT。
        Cal2017-01-16 18:05 回复
        • 脚本提示输入IP的时候,输入eth0那个内网IP就可以了
          fazero2017-06-20 00:20 回复
    • 我在阿里云服务器上做中转配置没有异常报错 ,也是无法中转
      dd2017-08-07 17:37 回复
  31. 非常喜欢!请问博主,从效率上来讲,是不是 iptables 更好呢?
    老八2016-12-29 22:40 回复
    • 你要说具体效率对比,我也没测试过,也不是搞网络研究的,不懂这些,我只知道,iptables端口转发比较方便,支持端口段,支持TCP/UDP。至于效率,即使是有,也应该差别不大。
      Toyo2016-12-30 00:08 回复