“学翻墙,需要先会翻墙,才能学习翻墙。” —— 逗比悖论
逗比交流群:Telegram

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

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

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

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

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

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

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

Socat:

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

HaProxy:

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

iptables:

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

系统要求

Centos / Debian / Ubuntu 14.04 +

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

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

脚本版本

Ver: 1.0.0

安装步骤

wget -N --no-check-certificate https://softs.pw/Bash/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh

备用下载地址(上面的链接无法下载,就用这个):

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

下载并运行脚本后,会自动检测并开始 安装/升级 iptables 。

使用方法

# 添加 端口转发规则
bash iptables-pf.sh add

# 删除 端口转发规则
bash iptables-pf.sh del

# 查看 端口转发规则 列表
bash iptables-pf.sh list

# 清空 端口转发规则
bash iptables-pf.sh uninstall

使用 bash iptables-pf.sh add 后,会提示你依次输入 本地监听端口、欲转发IP、欲转发端口、转发类型:

请输入 iptables 的 本地监听端口 [1-65535](支持端口段: 2333-6666): 10000-20000
请输入 iptables 欲转发的 端口 [1-65535](支持端口段: 2333-6666):
(默认端口: 10000-20000)
请输入 本服务器的 公网IP (回车默认: 自动检测):
请输入 iptables 欲转发的 IP:2.2.2.2
请输入数字 来选择 iptables 转发类型:
1. TCP
2. UDP
3. TCP+UDP

(默认: TCP+UDP):

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

本地监听端口 : 10000-20000
公网 IP     : 1.1.1.1
欲转发端口   : 10000-20000
欲转发 IP   : 2.2.2.2
转发类型     : TCP+UDP
——————————————————————————————

请按任意键继续,如有配置错误请使用 Ctrl+C 退出。

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

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

公网 IP     : 1.1.1.1
本地监听端口 : 10000-20000

欲转发 IP   : 2.2.2.2
欲转发端口  : 10000-20000
转发类型    : TCP+UDP
——————————————————————————————

使用 bash iptables-pf.sh list 后,会显示如下:

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

使用 bash iptables-pf.sh del 后,也会显示列表,然后让你选择要删除的 规则前面 的数字。

Shadowsocks客户端说明

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

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

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

其他说明

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

防火墙设置

脚本 已经自动设置了防火墙规则,如果发现没有或者其他情况,可以自己开放端口。

如果你设置后无法链接,那么多半是防火墙 阻拦了,只要开放端口 就行了。以 23333 为例。

iptables -I INPUT -p tcp --dport 23333 -j ACCEPT
iptables -I INPUT -p udp --dport 23333 -j ACCEPT

# 端口段 示例
iptables -I INPUT -p tcp --dport 2333:6666 -j ACCEPT
iptables -I INPUT -p udp --dport 2333:6666 -j ACCEPT

Centos系统执行(debian/ubuntu 不需要):

/etc/init.d/iptables save
# 保存防火墙
/etc/init.d/iptables restart
# 重启防火墙

提示wget: unknown host “softs.pw” 之类的错误

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

echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

提示 wget: command not found 的错误

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

Centos系统:

yum install -y wget

Debian/Ubuntu系统:

apt-get install -y wget

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

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

依次输入就可以更换apt源了,下面的代码是以 us美国 为例,你可以自己去这里选一个近一些合适的,然后替换下面代码中 us.sources.listus

wget -N --no-check-certificate -P /etc/apt https://softs.pw/Bash/sources/us.sources.list
rm -rf /etc/apt/sources.list
cp /etc/apt/us.sources.list /etc/apt/sources.list

更新日志

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

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

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

1.推出 正式版本。

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

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

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

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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(22)个小伙伴在吐槽
  1. 现在很多 VPS 使用了智能路由,所以有时候脚本检测到了外网地址,但是需要填的是内网地址。所以作者能不能在 IP 那块,选择自动获取或手动输入呢? 或者干脆手动输入最好了。连自己服务器IP都不知道还玩个鸟 -,-
    DevilAngel2017-02-23 16:29 (2天前)回复
    • 新版本 v1.0.1 新增 手动输入本地公网IP功能,重新下载脚本使用。
      Toyo2017-02-23 20:37 (2天前)回复
  2. 好东西,终于能转发了,打赏打赏 :cool:
    Araragi2017-02-06 00:22 回复
  3. 站长你好,我想单独转发到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 回复
  4. 实测centos用这个脚本无效果,手动设置就可以
    danny2017-01-12 00:38 回复
    • 我不用centos,所以只在debian/ubuntu上面做了测试,centos是否可以我也没测试。
      Toyo2017-01-12 01:12 回复
  5. 其实可以用curl来代替wget,而且一般的linux都有curl的。
    天使也无奈2017-01-05 13:07 回复
    • 然并卵,我见过没有安装curl的比没有安装wget的VPS多得多。
      Toyo2017-01-05 13:11 回复
  6. 腾讯云上安装成功后,无任何错误提示 Debian 7.4 64位 转发不成功,重启过了。
    甘文2017-01-02 07:08 回复
    • 确定用法和客户端信息正确吗?我没有用腾讯云测试过,但是用我自己的VPS测试是完全可以的。
      Toyo2017-01-02 11:47 回复
  7. :???: 为哈中转不了。阿里云的机器上面测试
    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 回复
  8. 非常喜欢!请问博主,从效率上来讲,是不是 iptables 更好呢?
    老八2016-12-29 22:40 回复
    • 你要说具体效率对比,我也没测试过,也不是搞网络研究的,不懂这些,我只知道,iptables端口转发比较方便,支持端口段,支持TCP/UDP。至于效率,即使是有,也应该差别不大。
      Toyo2016-12-30 00:08 回复