openwrt防火墙操作小记

缘起

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


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。