找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 3153|回复: 11

水一篇,lxc版op防火墙失败原因(水。。。)

[复制链接]
有些lxc安装的op版本当主路由只能自己拨号上网,但是底下的设备没法上网,原因就是防火墙没有
正常的加载规则链,严格来说就是fw3 reload 的时候没有从/etc/config/firewall里加载规则链
重要的是其中的-A zone_wan_postrouting -m comment --comment "!fw3" -j MASQUERADE
op路由器能提供设备上网就是这条链子的作用,所以fw3 reload不正常的时候其它设备就无法上网了。
好吧先说解决方法:在网络-防火墙-自定义规则里加入
iptables -S >/dev/null 2>&1
iptables -S nat >/dev/null 2>&1
ip6tables -S >/dev/null 2>&1
这个方法是摸索实验出来的,但是一直搞不懂为啥执行了这几条命令就正常了呢?
然后有一天发现了strace的工具,它是打印一个命令执行时打印系统调用的,感绝它可以
提供些线索,说干就干:
在op刚启动的时候通过 strace fw3 reload > fw3_0.log
然后执行多执行几次分别重定向到不同文件里进行对比发现没啥区别,然后执行iptables -S
发现链表里都是空的,这时候再执行一次strace fw3 reload > fw3_1.log,再对比下log文件发现
不一样了,我把关键的贴下来:
不正常的:
open("/proc/net/ip_tables_names", O_RDONLY) = 7
read(7, "", 1024)                       = 0
close(7)                                = 0
open("/proc/net/ip_tables_names", O_RDONLY) = 7
read(7, "", 1024)                       = 0
close(7)         
正常的:
open("/proc/net/ip_tables_names", O_RDONLY) = 7
read(7, "nat\nfilter\n", 1024)          = 11
lseek(7, -7, SEEK_CUR)                  = 4
close(7)
fw3 reload 时读取了/proc/net/ip_tables_names 不正常的时候读取字节数是0,正常的时候读取的是"nat\nfilter\n"
看出来了吧,就是iptables的两个表,这时候重新启动op,启动后第一时间cat /proc/net/ip_tables_names不出意料是空的
然后iptables -S再cat多了一行filter,再执行iptables -S nat再cat又加了一行nat,明白了吧。
虚拟机op启动后cat /proc/net/ip_tables_names是nat mangle filter三行内容。
所以又水了一篇


来自手机 | 显示全部楼层
思考了  感谢大佬   终于把LXC的openwrt下lan不能上网nat不工作防火墙不工作的问题搞清楚了
回复

使用道具 举报

本帖最后由 ujsxb@163.com 于 2021-12-7 08:45 编辑

解决了,非常感谢!
回复

使用道具 举报

感谢楼主分享,感谢楼上顶出来,这确实是个坑,我是LXC启动手动重启防火墙,也能解决
回复

使用道具 举报

来自手机 | 显示全部楼层
ujsxb@163.com 发表于 2021-12-7 08:14
解决了,非常感谢!

白天我以为解决了,后来重启多试了几次,发现还是不行。最后rc.local里sleep两三分钟后再reload就可以了,也能接受,毕竟不是经常重启。最后还剩下一个问题,n1打包的固件,我在通信规则里开的外网端口怎么都不生效。但是再k2p里一模一样的设置就没问题。
回复

使用道具 举报

 楼主| | 显示全部楼层
ujsxb@163.com 发表于 2021-12-8 01:13
白天我以为解决了,后来重启多试了几次,发现还是不行。最后rc.local里sleep两三分钟后再reload就可以了 ...

如果用的是pve7的话pppoe拨号的话会有个bpfilter错误的问题,pve 里dmesg会看到,不知道你的和这个有关不,表现就是只能在pve控制台进入op命令界面,其它主机包括pve都没法ssh登录op,因为这个bpf错误会导致防火墙的表默认规则都是drop,op没法和外界通信,fw3 restart后就正常了
回复

使用道具 举报

ujsxb@163.com 发表于 2021-12-8 01:13
白天我以为解决了,后来重启多试了几次,发现还是不行。最后rc.local里sleep两三分钟后再reload就可以了 ...

我在通信规则里设置了从wan访问的端口,链 zone_wan_input 里也能看到,但就是不生效,直接进入了链 zone_wan_src_REJECT 。必须把 区域里的wan入站数据改成accept才能访问,但是这样的话不就相当于全打开了嘛。

同样的配置,我用openwrt编译的k2p原生固件是正常的,用unifreq的打包源码给N1重新打包安装的就有这个问题。所以我怀疑是打包过程中有点小bug。我想用strace去监控,也不知道是哪个进程,也许监控到了,我也看不懂。

openwrt可以把防火墙卸载重新安装吗?
回复

使用道具 举报

ujsxb@163.com 发表于 2021-12-9 15:14
我在通信规则里设置了从wan访问的端口,链 zone_wan_input 里也能看到,但就是不生效,直接进入了链 zone ...

哎,暂时用端口转发解决了
回复

使用道具 举报

ujsxb@163.com 发表于 2021-12-9 17:02
哎,暂时用端口转发解决了

找到原因了,打包时选择了一个比较低版本的内核
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-5-21 12:56

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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