需求
需求是这样的:
有一台刷了OpenWRT的Newifi D1无线路由器作为二级路由,插入了4G网卡,此时有了WAN。为了同时能访问家里的内网,需要新建一个WAN2。
同时需要配置一下相应的路由规则。
拓扑图如下
建立WAN2
以前没搞过双WAN,只依稀知道可以用MWAN3实现双线规则之类的操作。但我这个需求很简单,没必要出动MWAN3,于是咨询了ChatGPT。
首先要做的当然是创建好WAN2,注意网关跃点不能是默认的0,得大一些,防止路由冲突。我这里默认WAN是0,WAN2于是设置成是10。
防火墙我设置了一个新的WAN2防火墙
增加防火墙规则
保存和应用后,WAN2就初步可用了,此时SSH到OP里,是可以正常ping通10.0.0.1网段的。但是LAN(192.168.1.0/24)下的设备并不能访问到10.0.0.1网段。于是需要增加防火墙规则:
iptables -t mangle -I PREROUTING -s 192.168.1.0/24 -d 10.0.0.0/24 -j MARK --set-mark 2
ip rule add fwmark 2 table 2
ip route add default via 10.0.0.1 dev WAN2 table 2
把这些规则加到网络-防火墙-自定义规则中,重启防火墙即可生效
具体解释如下(取自ChatGPT)
这些命令是用于在 OpenWrt 上设置流量路由规则的 iptables、ip rule 和 ip route 命令的示例。
iptables -t mangle -I PREROUTING -s 192.168.1.0/24 -d 10.0.0.0/24 -j MARK --set-mark 2
:iptables
是一个用于配置 Linux 内核防火墙规则的工具。-t mangle
表示使用 mangle 表,mangle 表用于修改数据包的特定字段。-I PREROUTING
表示将规则插入到 PREROUTING 链中,该链在数据包进入路由之前被处理。-s 192.168.1.0/24
指定源地址为 192.168.1.0/24 的流量匹配该规则。-d 10.0.0.0/24
指定目标地址为 10.0.0.0/24 的流量匹配该规则。-j MARK --set-mark 2
表示将匹配的流量设置标记为 2。
这条规则的作用是在数据包经过 PREROUTING 链时,对源地址为 192.168.1.0/24、目标地址为 10.0.0.0/24 的流量进行标记,将其标记设置为 2。这样标记后的流量可以在后续的路由过程中被识别和处理。
ip rule add fwmark 2 table 2
:ip rule
是一个用于配置 Linux 内核路由规则的命令。add
表示添加一条新的路由规则。fwmark 2
表示匹配标记为 2 的数据包。table 2
表示将匹配的数据包路由到表 2。
这条规则的作用是添加一条新的路由规则,使得被标记为 2 的流量被路由到表 2。
ip route add default via 10.0.0.1 dev WAN2 table 2
:ip route
是一个用于配置 Linux 内核路由表的命令。add
表示添加一条新的路由规则。default
表示默认路由,即指向所有未匹配的流量的下一跳。via 10.0.0.1
表示下一跳网关的 IP 地址为 10.0.0.1。dev WAN2
表示出接口为 WAN2 的网络设备。table 2
表示将该路由规则添加到表 2。
这条规则的作用是将标记为 2 的流量的默认路由设置为通过 WAN2 接口,网关为 10.0.0.1。这样,被标记为 2 的
流量将会通过 WAN2 接口发送出去。
请注意,这些命令中的参数和值可能需要根据您的实际网络配置进行调整。确保适当地替换 IP 地址、接口名称和标记值以匹配您的环境。
进一步的防火墙设置
为了使10.0.0.0/24网段内的设备,也能访问到192.168.1.1网段的设备,WAN2就完全放开了,反正也是纯内网。
另外需要在10.0.0.0/24网段的主路由下,配置上静态路由
测试
此时在LAN(192.168.1.0/24)下的设备访问10.0.0.0/24网段内的设备,就能正常访问了。
同时10.0.0.0/24网段内设备,也能访问192.168.1.0/24网段了。
最新回复