用uci配置openwrt防火墙
不知道为何缘由,起心升级了路由器的固件。还不错找到了lean大神定制的openwrt固件,让我数年前淘的洋垃圾wndr3800重新闪耀星光。真不敢相信这个路由器还有这么好的性能:在uboot中超频到800m,目前稳定, 带机10来台设备,运行代理客户端,cpu负载10%不到,路由管理界面漂亮且流畅,甚是满意。
本来解决了我透明代理的痛点,但是发现我原来可以通过配置多个wan口ip来访问其他网段局域网机器的功能不能用了。这个关系到我远程到机房项目机器干活的问题,本来以为是个小问题,但是折腾了2天。真是既让人沮丧也让人重新自定义对自己的认知。好在通过对比过往防火墙配置文件找到可疑配置,修改解决了。以下一方面是解决过程,一方面是推荐使用uci的配置工具,openwrt都是文本配置文件,手改容易出错导致直接起不来,又要花大量时间刷机,这个系统工具改会可靠些。
有人可能会问,为啥不用luci界面,原因是luci界面的防火墙配置尝试了所有页面显示的配置,都无效。配置文件里的选项并没有全部做到luci页面上,比如这里要修改的防火墙中的default字段firewall.@defaults[0].fullcone,luci页面是没看到。这个option似乎是后面新加或者是lean版本的加强配置。没找到完整说明,但是根据关键词猜测可能跟nat模式有关。不过暂时不关心了,因为试了下就解决关心的问题了,工作不允许再花时间了。
root@OpenWrt:~# uci show firewall
firewall.@defaults[0]=defaults
firewall.@defaults[0].syn_flood='1'
firewall.@defaults[0].input='ACCEPT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@defaults[0].fullcone='1'
firewall.@defaults[0].flow_offloading='1'
firewall.@defaults[0].flow_offloading_hw='0'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].masq='1'
firewall.@zone[1].mtu_fix='1'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].network='wan wan6'
copy要修改行,修改值。
root@OpenWrt:~# uci set firewall.@defaults[0].fullcone='0'
root@OpenWrt:~# uci commit firewall
可以再uci show firewall看下是否设置成功了。
执行
service firewall restart
可以发现ping通其它内网网段ip了。