openwrt防火墙操作小记
缘起
openwrt软路由一直拿来做局域网的旁路网关,整体的结构如下:
而由于是旁路网关,openwrt和外网路由、电脑在同一网关下,电脑可以越过openwrt网关,直接连接外网路由进行上网,这在广告过滤、上网防火墙管控上都是不可控的。
再加上旁路由模式有个问题,从电脑向外网的流量,是经过旁路由openwrt的,但是外部进来的流量,不经过旁路由,直接就从外网路由走到电脑了,旁路由是没法感知的,这也存在一定问题。
解决过程
中途查询过各种文章,主要是openwrt的防火墙处理,没发现转发规则里有相关配置的。
经过某次无意看到,在openwrt的网络
-->防火墙
中,有一个nat rules
,看起来是可以叠一层nat上去,这样一来,就可以把所有流量都收拢到openwrt了。
相当于所有电脑的访问流量,经过openwrt nat出去,从外部进来的流量,同样经过一层nat到电脑,这样一来双向都经过openwrt。
那么回到最初的问题,怎么限制局域网电脑上网必须经过旁路由openwrt呢?
主要2个步骤:
1、openwrt中开启nat
在网络
-->防火墙
-->nat rules
中,新增一个规则,把所有的流量,都通过MASQUERADE转发,所有的流量和端口。
2、在外网路由中,设置防火墙,只有openwrt旁路网关的ip地址,才允许联网。
这个不同路由器设置不一样,一般在路由器的防火墙中设置,同时这里设置不让内部连出去即可,因为外部链接进来一般都要走路由器,没有外网ip情况下是安全的,而且因为套了一层旁路网关的nat,流量不会直接到电脑。
遗留的问题
1、nat叠加sqm类qos软件的性能问题
经过上面的设置,可以很好的控制局域网的流量,上传下载都必须经过旁路由,但是这么做也存在问题。
那就是软路由,尤其是x86类的虚拟机,nat有性能损失,叠加sqm qos策略使用后,下载性能只能到300Mb带宽左右,有一定影响性能。
这是因为openwrt的nat操作只能通过软件实现,性能和路由器的硬实现,差很多。
但是基本上也是够用了,这里就没有折腾。
2、macos smb2协议莫名其妙容易断开连接
同时还发现一个奇怪的问题没有解决,那就是macos默认使用的smb2的协议连接局域网共享,做了上面nat操作后,会很容易断开连接,原因一直没查到,有讲macos系统问题的。
也有报错smb2fs_reconnect: Insufficient credits <2> after reconnect
,但是没查到解决方案。
通过网上分析,暂时设置smb使用1.0协议解决:
sudo vi /etc/nsmb.conf # 输入设置smb使用1.0协议 [default] protocol_vers_map=1 # 断开重连smb局域网共享,可以通过smbutil statshares -m /Volumes/xxx 查看smb版本
拓展知识
如果要通过openwrt的防火墙,限制自己联网,怎么操作呢,之前在网络
-->防火墙
-->traffic rules
中设置的可以限制其他设备,没法限制openwrt自己联网。
网上查了很多也没发现原因,最终通过各种尝试,发现可以这么设置:
在from中,选择本机设备
,this device
,不要选择lan之类的,然后把openwrt自己的ip加进去,就可以了,重点是选择本机设备。
总结
其实这一次折腾其实属于网络相关的东西,原理和目的明确,但是在openwrt实际操作时遇到了困难,最终通过查资料或者各种尝试摸索找到实际操作的方案。
另外也感觉到openwrt这类软路由还是很灵活的,配置和功能很多,但是有一些不常用的配置,教程各方面比较少,需要深度了解才会用。
参考文档
https://www.right.com.cn/forum/thread-5512947-1-1.html
https://community.synology.com/enu/forum/1/post/129160?page=10&sort=oldest
https://devinz.org/macos_ventura_smb_drive_fix.html
发表评论