根据这里的说法

openwrt上的luci ss有一个ipt_ext,再选项中添加

1
option ip_ext "--dport 21:1024"

,就可以只代理21到1024端口。

但是openwrt上的luci shadowsockr阉割了这个选项,直接在/etc/config/shadowsocksr中添加上述的代码是没有用的。
于是我们需要直接去修改ssr的启动脚本(/etc/init.d/ssr-redir.sh),手动在脚本的iptables命令后面添加参数。

找到所有含有

1
--to $SS_REDIR_PORT

的iptables命令,比如

1
2
3
4
local subnet
for subnet in $covered_subnets; do
iptables -t nat -A shadowsocksr_pre -s $subnet -p tcp -j REDIRECT --to $SS_REDIR_PORT
done

将其修改为

1
2
3
4
local subnet
for subnet in $covered_subnets; do
iptables -t nat -A shadowsocksr_pre -s $subnet -p tcp -j REDIRECT --to $SS_REDIR_PORT --dport 21:1024
done

我找到的还有

1
2
3
4
5
6
7
8
9
10
11
12
13
case "$mode" in
disable)
iptables -t nat -A shadowsocksr_pre -s $ip -j RETURN
;;
global)
iptables -t nat -A shadowsocksr_pre -s $ip -p tcp -j REDIRECT --to $SS_REDIR_PORT --dport 21:1024
iptables -t nat -A shadowsocksr_pre -s $ip -j RETURN
;;
game)
iptables -t nat -A shadowsocksr_pre -p tcp -s $ip -m set ! --match-set china dst -j REDIRECT --to $SS_REDIR_PORT
ipset add gameuser $ip
;;
esac

上面明显对应了luci界面中的访问控制部分

因为我自己基本不用这个访问控制所以只在全局后面加了端口限制。
那么上面的subnet应该就是除了访问控制限定的ip之外所有的内网ip。

然后保存,执行

1
2
/etc/init.d/ssr-redir.sh stop
/etc/init.d/ssr-redir.sh start

重启ssr
然后ssr就只会代理21到1024端口了!

————更新—————
看了下 github上有的luci shadowsocksr都是支持ipt_ext参数的
务必先试一试添加ipt_ext参数

3 thoughts to “在openwrt路由器上设置ssr绕过bt下载(只代理指定端口)

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注