找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5166|回复: 21

[openwrt(x86)] pve lxc 监控防火墙的脚本-测试版

[复制链接]
发表于 2022-1-17 17:39 | 显示全部楼层 |阅读模式
本帖最后由 olvolv 于 2022-1-17 18:12 编辑

    pve7.x(好像和内核有关,6.x的内核版本高的话也有可能出错,未验证)lxc版openwrt
据我体验的有两个坑:
1、水一篇,lxc版op防火墙失败原因(水。。。)我这个帖子说的是一个
2、因为debian(pve)防火墙和op的防火墙管理工具不同,具体的我也说不清
就摘录下网上搜到的内容
iptables(command)的最底层是netfilter,它的用户空间管理工具是iptables

nftables(command)是iptables(command) 的一个替代品并兼容iptables(command),最底层依然是netfilter,它的用户空间管理工具是nft

导致pppoe拨号后内核报bpfilter: read fail -512;然后导致fw3命令没有正常执行

这两个坑我是分别遇到的所以解决方法也是分开的,第一个那个帖子说明了
第二个我没能力找到根本原因去解决只能写个脚本去监控fw3执行是否成功
fw3解析firewall配置脚本来执行iptables命令设置防火墙规则,用户可以添加
脚本在fw3 reload/restart时执行,我就添加个脚本根据iptables -S输出内容
判断防火墙是否成功,最后发现两个坑可以用一个脚本解决所以我修改了下老脚本。

为了方便我写了个“安装”脚本,我的op是官方rootfs版本,如图

但是我的op不是重新安装的,不确定新安装的op,这个监控脚本还适不适合
脚本没有长时间测试,所以不保证质量
有需求的朋友可以试一试,有问题可以回复
  1. #!/bin/sh
  2. set -e
  3. FW_SCT='/etc/fw_dog.include'
  4. FW_CONF='/etc/config/firewall'
  5. FW_CONF_BK="/root/etc_config_firewall"

  6. usage(){
  7.   echo $0 add   添加防火墙监控脚本功能
  8.   echo $0 del   移除防火墙监控脚本功能
  9.   exit
  10. }


  11. add(){
  12.     if [ ! -f $FW_CONF_BK ];then
  13.         cp $FW_CONF $FW_CONF_BK
  14.         echo "###$FW_CONF已备份到$FW_CONF_BK"
  15.     fi
  16.     echo "###添加防火墙监控脚本###"
  17.     uci set firewall.watchdog=include
  18.     uci set firewall.watchdog.path=$FW_SCT
  19.     uci set firewall.watchdog.type='script'
  20.     uci set firewall.watchdog.reload='1'
  21.     uci commit firewall
  22.    
  23.     echo "###添加脚本文件$FW_SCT###"
  24.     cat << 'EOF' > $FW_SCT
  25. logger -t firewall-watchdog '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 启动...'
  26. LOCK=/tmp/firewallwatchdog
  27. FW_LINE_MIN_NUM=10
  28. FW_LINE_MIN_NUM6=10
  29. watchdog(){
  30.     touch $LOCK
  31.     while sleep 1;do
  32.       #FILTER=$(iptables -S | grep -c 'zone_wan_src_REJECT')           #以防火墙是否有'zone_wan_src_REJECT'来判断成功与否;
  33.       #FILTER6=$(ip6tables -S | grep -c 'zone_wan_src_REJECT')
  34.       
  35.       FILTER=$(($(iptables -S|wc -l)-$FW_LINE_MIN_NUM))                               #以防火墙条目数是否大于$FW_LINE_MIN_NUM来判断成功与否;
  36.       FILTER6=$(($(ip6tables -S|wc -l)-$FW_LINE_MIN_NUM6))
  37.       NAT=$(iptables -S -tnat | grep -c 'MASQUERADE')                  #NAT表如果没有'MASQUERADE'说明防火墙没有成功;
  38.       if [ $FILTER -ge 1 -a $FILTER6 -ge 1 -a $NAT -ge 1 ];then
  39.         logger -t firewall-watchdog "》》》》》》》》》》》》》》》》》》 OK!"
  40.         break
  41.       else
  42.         logger -t firewall-watchdog "<<<<<<<<<<<<< 错误!执行:fw3 restart..."
  43.         fw3 restart
  44.         sleep 1
  45.       fi
  46.     done
  47.     rm $LOCK
  48. }
  49. [ -f $LOCK ] || (watchdog &)
  50. EOF
  51. }

  52. del(){
  53.     if uci get firewall.watchdog >/dev/null 2>&1 ;then
  54.         echo "###移除防火墙监控脚本配置内容###"
  55.         uci del firewall.watchdog
  56.         uci commit firewall
  57.     else
  58.         echo "###防火墙监控脚本配置内容不存在###"
  59.     fi
  60.    
  61.     if [ -f $FW_SCT ];then
  62.         echo "###删除脚本文件$FW_SCT###"
  63.         rm -rf $FW_SCT
  64.     else
  65.         echo "###脚本文件$FW_SCT不存在###"
  66.     fi
  67. }

  68. [ $# -ne 1 ] && usage
  69. case $1 in
  70.     "add")
  71.         add $FW_CONF
  72.         ;;

  73.     "del")
  74.         del
  75.         ;;
  76.     *)
  77.         usage
  78.         ;;
  79. esac
复制代码
保存脚本比如dog.sh,添加权限chmod 755 dog.sh  运行./dog.sh 显示说明:
./dog.sh add 添加防火墙监控脚本功能
./dog.sh del 移除防火墙监控脚本功能

哦,对了,关于打开网页慢,我也遇到过,慢是现象原因肯定不只一种我说说我遇到的
以前pve小鸡有两个千兆,这个现象这出现过一次还是几次,所以没在意,
最近pci-e口的出问题经常变成百兆,所以把利用k2t交换机用vlan把pve中op
弄成单臂路由,然后经常出现win访问网页慢,无法访问的问题,折腾许久发现
主要还是是ipv6问题,windows系统默认用ipv6去查询dns,如果ipv6
没设置好就导致dns查询失败,所以遇见网页打开慢了先在win的cmd运行
nslookup qq.com看看反应,如果失败了就说明ipv6没设置好
我昨天折腾好久才设置好ipv6,其实最关键的是:
光猫ipv6的相关设置(RA...等)一定关闭!!!
光猫ipv6的相关设置(RA...等)一定关闭!!!
光猫ipv6的相关设置(RA...等)一定关闭!!!
我就是没关闭一直和op的冲突导致win的ipv6一直时灵时不灵的,把op的设置截图
发上来做个记录,要不然每次都得折腾好久:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2022-1-17 19:11 | 显示全部楼层
大佬你好,脚本试用后在系统日志有运行记录了,查看防火墙条目也有了就是网络还是不正常baidu打不开其他页面一直在转圈圈加载。
在状态-防火墙点击重启防火墙就正常了,发现个问题脚本运行后系统设置没有防火墙重启的相关记录而手动点击重启有相关加载日志了。

环境:PVE7.1-8 内核:5.13.19-2-pve、openwrt SometimesNa1ve  2022.01.01


LXC conf添加的项目:
hookscript: local:snippets/oplxc.pl
lxc.cgroup2.devices.allow: c 108:0 rwm lxc.cap.keep = net_admin
lxc.mount.entry: /dev_lxc/ppp dev/ppp none bind,optional,create=file


运行截图:



手动重启防火墙日志:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

给你个排查步骤 1,不能打开网页的时候先在win的cmd运行ping 114.114.114.114 通了2,不通3 2,nslookup qq.com 不能返回ip再运行nslookup qq.com 114.114.114.114 返回ip的话确定是dns问题 3,不通看看pppoe  详情 回复 发表于 2022-1-17 21:29
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-1-17 21:29 | 显示全部楼层
smdx 发表于 2022-1-17 19:11
大佬你好,脚本试用后在系统日志有运行记录了,查看防火墙条目也有了就是网络还是不正常baidu打不开其他页 ...

给你个排查步骤
1,不能打开网页的时候先在win的cmd运行ping 114.114.114.114 通了2,不通3
2,nslookup qq.com 不能返回ip再运行nslookup qq.com  114.114.114.114 返回ip的话确定是dns问题

3,不通看看pppoe拨号正常没,在op里ping 114.114.114.114看通不,op里nslookup qq.com 看dns正常不

你这样,重启后,不能上网的时候运行iptables -S -tnat保存输出,然后用你的方法手段重启防火墙再运行一遍对比两个输出
都做了看看情况,还有许多排查手段描述麻烦,可以私信聊聊具体情况

点评

大佬你好,按你给的步骤排查了。ping 114、nslookup qq.com返回值都是正常的就是网页打不开。 1,不能打开网页 ping 114.114.114.114、nslookup qq.com、nslookup baidu 返回值正常 [attachimg]528967[/attac  详情 回复 发表于 2022-1-18 09:15
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-17 21:38 | 显示全部楼层
好的,现在都在打游戏不方便测试等空闲了按你说的方法试试。谢谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-18 09:15 | 显示全部楼层
olvolv 发表于 2022-1-17 21:29
给你个排查步骤
1,不能打开网页的时候先在win的cmd运行ping 114.114.114.114 通了2,不通3
2,nslooku ...

大佬你好,按你给的步骤排查了。ping 114、nslookup qq.com返回值都是正常的就是网页打不开。


1,不能打开网页
ping 114.114.114.114、nslookup qq.com、nslookup baidu 返回值正常


iptables -S -tnat结果(网页打不开)



iptables -S -tnat结果(手动重启防火墙,网页正常打开)


这是装了另外个lxc,固件是homelede不用重启防火墙网页正常。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

这…网和dns都正常,我一时不知从何说起了,这样,粗暴点,在网页的启动项-本地启动脚本中添加一行: sleep 5;fw3 reload 代替手动重启防火墙试试,sleep时间自己摸索下  详情 回复 发表于 2022-1-18 09:39
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-1-18 09:39 来自手机 | 显示全部楼层
smdx 发表于 2022-1-18 09:15
大佬你好,按你给的步骤排查了。ping 114、nslookup qq.com返回值都是正常的就是网页打不开。



这…网和dns都正常,我一时不知从何说起了,这样,粗暴点,在网页的启动项-本地启动脚本中添加一行: sleep 5;fw3 reload 代替手动重启防火墙试试,sleep时间自己摸索下

点评

有点玄幻的感觉....试了10/30秒两次,10秒看日志有些项没跑完网页打不开然后设30秒看日志已经是跑完所有项再reload了还是不行。。。必须手动点击重启防火墙。手动点击是有特别的buff ??  详情 回复 发表于 2022-1-18 09:56
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-18 09:56 | 显示全部楼层
olvolv 发表于 2022-1-18 09:39
这…网和dns都正常,我一时不知从何说起了,这样,粗暴点,在网页的启动项-本地启动脚本中添加一行: slee ...

有点玄幻的感觉....试了10/30秒两次,10秒看日志有些项没跑完网页打不开然后设30秒看日志已经是跑完所有项再reload了还是不行。。。必须手动点击重启防火墙。手动点击是有特别的buff ??

点评

我想岔了,网页的防火墙命令是:/etc/init.d/firewall restart 其实就是fw3 restart;你把fw3 reload 改成/etc/init.d/firewall restart 试试  详情 回复 发表于 2022-1-18 10:08
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-1-18 10:08 | 显示全部楼层
smdx 发表于 2022-1-18 09:56
有点玄幻的感觉....试了10/30秒两次,10秒看日志有些项没跑完网页打不开然后设30秒看日志已经是跑完所有 ...

我想岔了,网页的防火墙命令是:/etc/init.d/firewall restart 其实就是fw3 restart;你把fw3 reload 改成/etc/init.d/firewall restart 试试

点评

大佬你好,在无法打开网页时仔细看了下系统防火墙那里发现 表:Mangle、表:Raw 是没数据的(此时这个监控脚本已经有运行日志了),然后我在ssh输入 /etc/init.d/firewall restart命令,再查看防火墙列表这两项有信  详情 回复 发表于 2022-1-19 18:15
还是不行....试了这么多个固件就homelede能在lxc正常使用.....凑合用吧。麻烦你了,谢谢  详情 回复 发表于 2022-1-18 11:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-18 11:45 | 显示全部楼层
olvolv 发表于 2022-1-18 10:08
我想岔了,网页的防火墙命令是:/etc/init.d/firewall restart 其实就是fw3 restart;你把fw3 reload 改 ...

还是不行....试了这么多个固件就homelede能在lxc正常使用.....凑合用吧。麻烦你了,谢谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-19 18:15 | 显示全部楼层
本帖最后由 smdx 于 2022-1-19 18:18 编辑
olvolv 发表于 2022-1-18 10:08
我想岔了,网页的防火墙命令是:/etc/init.d/firewall restart 其实就是fw3 restart;你把fw3 reload 改 ...

大佬你好,在无法打开网页时仔细看了下系统防火墙那里发现 表:Mangle、表:Raw 是没数据的(此时这个监控脚本已经有运行日志了),然后我在ssh输入 /etc/init.d/firewall restart命令,再查看防火墙列表这两项有信息了网页也正常了。按理说监控脚本执行了命令防火墙不是应该重新运行了么?怎么手动输入指令就正常了?

脚本运行日志


防火墙这两项没数据,网页打不开

然后手动输入指令重启防火墙


再次查看防火墙信息有了,网页也正常打开了








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-20 09:14 | 显示全部楼层
大佬你好,受你这贴启发昨晚在外网搜索lxc openwrt netfilter这个关键词终于找到解决方法,github有人添加了补丁解决了这个问题。

PS:看日期这个补丁也有2年了搞不懂为什么现在的源码还是出现这个问题?
https://github.com/openwrt/openwrt/pull/2525

在 lxc 容器内,fw3 无法创建 iptables 规则。
iptables-save 什么也不返回。/proc/net/ip6_tables_names 和/proc/net/ip_tables_names 启动为空

点评

本帖提的第一个坑的那个帖子链接,讲的就是这回事,我找到原因后也搜索到了这个github,解决方法也是开机后执行下iptables程序,只不过和我的执行时机不一样,不过现在固件太多,我还是喜欢官方简洁,主题大方,所以  详情 回复 发表于 2022-1-20 14:17
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-1-20 14:17 来自手机 | 显示全部楼层
smdx 发表于 2022-1-20 09:14
大佬你好,受你这贴启发昨晚在外网搜索lxc openwrt netfilter这个关键词终于找到解决方法,github有人添加 ...

本帖提的第一个坑的那个帖子链接,讲的就是这回事,我找到原因后也搜索到了这个github,解决方法也是开机后执行下iptables程序,只不过和我的执行时机不一样,不过现在固件太多,我还是喜欢官方简洁,主题大方,所以没有测试其它固件,没法保证别的固件可以用。啥时候op官方把防火墙底层更新到和现在linux主流内核一样的时候,这个问题应该就解决了,其实op也有nftable的模块,但是fw3不支持,没法用

点评

发现这些坑n年前就有人提出了这么长时间还是未能完全修复真是无语。现在有你这个脚本加上补丁手上用的几个固件都没问题了。开心,感谢大佬的付出!~  详情 回复 发表于 2022-1-20 14:40
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-20 14:31 | 显示全部楼层
bpfilter: read fail -512 这个是你用的OPENWRT自制固件的原因,不是PVE的问题,OP官方LXC并无此问题。

点评

能发个链接吗?研究下  详情 回复 发表于 2022-1-21 07:43
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-20 14:40 | 显示全部楼层
olvolv 发表于 2022-1-20 14:17
本帖提的第一个坑的那个帖子链接,讲的就是这回事,我找到原因后也搜索到了这个github,解决方法也是开机 ...

发现这些坑n年前就有人提出了这么长时间还是未能完全修复真是无语。现在有你这个脚本加上补丁手上用的几个固件都没问题了。开心,感谢大佬的付出!~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-1-20 14:44 | 显示全部楼层
yjd159 发表于 2022-1-20 14:31
bpfilter: read fail -512 这个是你用的OPENWRT自制固件的原因,不是PVE的问题,OP官方LXC并无此问题。

我用官网的固件也有这个问题
下载的这个
https://downloads.openwrt.org/releases/21.02.1/targets/x86/64/

不知道是使用环境问题还是怎样,反正出现了相同的现象。试用lxc一个多月遇到的问题终于都解决了不用折腾了。

点评

OpenWrt 21.02.1 r16325-88151b8303 / LuCI openwrt-21.02 branch git-21.295.67054-13df80d 已经用了几个月了  详情 回复 发表于 2022-1-20 15:55
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 04:04

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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