找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5594|回复: 3

openwrt+luci+ss如何自动运行一条iptables命令

[复制链接]
发表于 2016-7-13 20:55 | 显示全部楼层 |阅读模式
本帖最后由 holu 于 2016-7-13 20:58 编辑

硬件是wndr3700v2,刷的是OpenWrt Chaos Calmer 15.05.1+LuCI 15.05-149,安装ss-libev-spec和luci-app-ss-spec,默认是走全局代理,加UDP转发到8.8.4.4:53,。

在dnsmasq下建了一个list.conf,包含server=/.facebook.com/127.0.0.1#5353和ipset=/.facebook.com/gfwlist的静态网址清单,译好的ip地址全部进gfwlist的ipset,然后用一条iptables -t nat -I SS_SPEC_WAN_AC 2 -p ALL -m set ! --match-set gfwlist dst -j RETURN将不在此ip清单里地址就直连不走ss代理。手工运行这条规则也已成功,完整实现了需要的效果。

问题是现在这条语句无论如何无法随机启动自动运行,试过在系统——启动项、网络——防火墙——自定义规则添加这条语句,也试过在rc.d和init.d里按优先级添加脚本,试过在firewall.user、rc.local以及s-s原生的/var/etc/s-s.include里添加命令,都无法有效运行。

而且经过测试,刚启动时iptables里是有这一条规则的,但很快就被刷新掉了,不知这个刷新是由哪造成的?这条语句最合理的地方应该添加在哪?

谢谢!
 楼主| 发表于 2016-7-13 22:51 | 显示全部楼层
自己顶一下,寻高手

不知道修改ss-rule是不是合适的解决方案?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-14 08:23 | 显示全部楼层
自己解决了,把命令加到ss-rules里就成功了,而且发现ss-rules里就有一个flush命令,估计原来加在启动项里的iptables命令也是被ss-rules的f给清洗掉了。

不知还有什么更合适的解决方法?
回复 支持 反对

使用道具 举报

发表于 2016-10-15 08:29 | 显示全部楼层
经你启发,知道了为啥将iptables的命令放在防火墙的自定义规则里面没用。原来是ss会自动清除nat规则。
搜索了一下,可以用自定义脚本的形式解决,将命令写到脚本,放到usr/bin/user-defy
然后在ss的启动脚本(etc/init.d/s-s)里面修改如下
----------------
start() {
        rules && redir
        case "$(uci_get_by_type port_forward enable)" in
                1|on|true|yes|enabled) tunnel;;
        esac
-----------------
##user defy iptables rule
        /usr/bin/user-defy
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-7 15:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表