|
|
设备:小米4a千兆v2
系统:OpenWrt 24.10.2 r28739-d9340319c6 / LuCI openwrt-24.10 branch 25.168.50434~d6b13f6
网络连接:
br-lan(lan1,lan2,wan ,phy1-ap0) IP 192.168.1.10 和 192.168.2.1
wan口连接光猫192.168.1.1
所有设备由光猫分配IP
需求:
lan1,lan2,phy1-ap0下的设备发送流量经过路由器时对ip地址192.168.2.1进行匹配。若匹配到ip daddr 192.168.2.1,则对mac地址进行修改,改成路由器本地mac
(因为其他设备默认网关是192.168.1.1,目的mac为光猫),从而实现单独网段的路由器管理地址。
规则如下:
chain ingress_phy1-ap0 {
type filter hook ingress device "phy1-ap0" priority filter; policy accept;
ip daddr 192.168.2.1 ether daddr != 2e:44:92:ca:6b:e0 counter ether daddr set 2e:44:92:ca:6b:e0 accept
}
我发现这个规则对无线网络是有效的(使用无线网络经过路由器的流量会被该规则匹配),但当我采用如下规则:
chain ingress_lan2 {
type filter hook ingress device "lan2" priority filter; policy accept;
ip daddr 192.168.2.1 ether daddr != 2e:44:92:ca:6b:e0 counter ether daddr set 2e:44:92:ca:6b:e0
meta nftrace set 1
accept
}
时,发现lan2的流量似乎不会进入ingress,除非目的ip是192.168.1.10(本机ip),这种才有匹配记录。
于是清空表
nft flush ruleset
再建如下表
table inet bri_manage {
chain test2 {
type filter hook ingress device "lan2" priority filter; policy accept;
ip daddr 192.168.1.10 counter packets 10940 bytes 653680 accept
ip daddr 192.168.2.1 counter packets 0 bytes 0 accept
ip daddr 192.168.1.1 counter packets 0 bytes 0 accept
}
}
table netdev dev_manage {
chain test_1 {
type filter hook ingress device "lan2" priority filter; policy accept;
ip daddr 192.168.2.1 counter packets 0 bytes 0 meta nftrace set 1 accept
ip daddr 192.168.1.10 counter packets 10940 bytes 653680 accept
ip daddr 192.168.1.1 counter packets 0 bytes 0 accept
}
chain test_2 {
type filter hook ingress device "br-lan" priority filter; policy accept;
ip daddr 192.168.2.1 counter packets 0 bytes 0 meta nftrace set 1 accept
ip daddr 192.168.1.10 counter packets 10951 bytes 592737 accept
ip daddr 192.168.1.1 counter packets 0 bytes 0 accept
}
}
table bridge brid {
chain test_3 {
type filter hook prerouting priority 0; policy accept;
ip daddr 192.168.2.1 counter packets 0 bytes 0 meta nftrace set 1 accept
ip daddr 192.168.1.10 counter packets 10951 bytes 654366 accept
ip daddr 192.168.1.1 counter packets 0 bytes 0 accept
}
chain test_4 {
type filter hook forward priority 0; policy accept;
ip daddr 192.168.2.1 counter packets 0 bytes 0 meta nftrace set 1 accept
ip daddr 192.168.1.10 counter packets 0 bytes 0 accept
ip daddr 192.168.1.1 counter packets 0 bytes 0 accept
}
}
果不其然,桥接时,lan1 lan2流量似乎是被硬件直接转发了,规则不生效(但是无线不受此影响)。
我也尝试着搜硬件转发相关的资料,调整流量卸载相关的设置,还是没法解决
有大佬解答吗?如果有表述不清楚的地方可以找我我来补充。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|