找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 814|回复: 0

求nftables和网络大佬解答

[复制链接]
发表于 2025-8-31 18:05 | 显示全部楼层 |阅读模式
设备:小米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流量似乎是被硬件直接转发了,规则不生效(但是无线不受此影响)。
我也尝试着搜硬件转发相关的资料,调整流量卸载相关的设置,还是没法解决

有大佬解答吗?如果有表述不清楚的地方可以找我我来补充。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 21:09

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表