Openwrt作为旁路由的必要设置

前面的步骤不写了,网上教程很多,这里单独说说配置SNAT规则的问题,也是很多教程没有普及到的部分。

也就是这条命令配置是否可选的问题,个人建议还是加上:

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

以上命令格式仅适用于OpenWrt22.03之前的iptables,也就是基于firewall3防火墙;而OpenWrt 22.03(含)起,防火墙由firewall3切换到了firewall4,底层也从 iptables 变成了 nftables

具体可见:https://openwrt.org/releases/22.03/start 中的关于防火墙升级的说明,新的firewall4防火墙配置说明请参考:https://openwrt.org/docs/guide-user/firewall/firewall_configuration#includes_for_2203_and_later_with_fw4

先解释一下这条命令的功能:当内部网络设备通过 eth0 访问外部网络时,MASQUERADE 会将数据包的源IP替换为 eth0 的IP地址,使外部网络看到的是 eth0 的IP,而不是内部设备的IP,简单来说就是做SNAT。

这么做的原因: 当OpenWrt作为旁路由运行时,通常情况下只启用一个LAN口,当其作为内网其他设备的网关时,数据会直接转发给主路由网关,数据包内的源 IP 是不会被修改的。这会导致路由来回不一致的问题。

所以以下情况需要加上这条规则:

1. 主路由开DHCP(未指向旁路由网关),旁路由关DHCP,旁路由只有LAN口工作,其他设备需设置静态网关为旁路由
2. 主路由开DHCP(未指向旁路由网关),旁路由开DHCP(强制模式开),旁路由只有LAN口工作,其他设备通过强制DHCP获取旁路由网关
3. 主路由开DHCP(指向旁路由网关),旁路由关DHCP,旁路由只有LAN口工作
4. 主路由关DHCP,旁路由开DHCP,旁路由只有LAN口工作

什么情况下可以不加?

添加一个WAN口,关闭LAN口桥接,WAN口和LAN口共用eth0,WAN口发出数据的时候,会自动做SNAT,回来的包会先回到旁路由,再返给内网设备。

 

参考:

https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes

https://www.right.com.cn/forum/thread-2983767-1-1.html

posted @   airoot  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示