这个是逗比根据地的备份镜像站(非官方)。牢记域名: [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

安装步骤

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 防火墙开机启动加载等配置。

使用方法

./iptables-pf.sh

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

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

 请输入数字 [0-5]:

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

请输入 iptables 欲转发至的 远程端口 [1-65535] (支持端口段 如 2333-6666, 被转发服务器):10000-11000

 欲转发端口 : 10000-11000

请输入 iptables 欲转发至的 远程IP(被转发服务器):2.2.2.2

 欲转发服务器IP : 2.2.2.2

请输入 iptables 本地监听端口 [1-65535] (支持端口段 如 2333-6666)
(默认端口: 10000-11000):

 本地监听端口 : 10000-11000

请输入 本服务器的 公网IP网卡IP(注意是网卡绑定的IP,而不仅仅是公网IP,回车自动检测):

 本服务器IP : 1.1.1.1

请输入数字 来选择 iptables 转发类型:
 1. TCP
 2. UDP
 3. TCP+UDP

(默认: TCP+UDP):

——————————————————————————————
 请检查 iptables 端口转发规则配置是否有误 !

 本地监听端口 : 10000-11000
 服务器 IP : 2.2.2.2

 欲转发的端口 : 10000-11000
 欲转发 IP : 1.1.1.1
 转发类型 : TCP+UDP
——————————————————————————————

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

——————————————————————————————
 iptables 端口转发规则配置完成 !

 本地监听端口 : 10000:11000
 服务器 IP : 1.1.1.1

 欲转发的端口 : 10000:11000
 欲转发 IP : 2.2.2.2
 转发类型 : TCP+UDP
——————————————————————————————

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

当前有 2 个 iptables 端口转发规则。
1. 类型: tcp 监听端口: 10000:20000 转发IP和端口: 2.2.2.2:10000-20000
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。

ifconfig
# 输入命令后会看到 网卡信息,我们看第二行的 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 端口转发规则删除完成 ! [email protected] ~]# 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 回复