目标
我正在尝试将内部(eth0->eth0[via br0])流量记录到 DD-WRT 上的 syslog。
问题
iptables 无法看到桥接流量。通过 ebtables 也无法看到相同的流量。
我尝试过的事情
我会发布我已经尝试过的方法,但我基本上已经尝试了所有方法,快速回顾一下:
insmod ebt* #load all ebtables and extensions
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
ebtables -t nat -A PREROUTING --logical-in br0 -p ipv4 -j redirect --redirect-target ACCEPT
将日志记录[作为第一条规则]添加到 ebtables 和 iptables 的所有表和链中
通过将“桥接”流量重定向到网络层来“欺骗” iptables
设置(基本上是库存的 DD-WRT v3):
br0 = eth0[lan] + ath0[wlan]
没有静态路由
无 STP
我想要的是
编辑:
我想记录从 192.168.2.3(lan/eth0/br0)到 192.168.2.4(lan/eth0/br0)的所有流量,基本上是 eth0(lan 端口)上设备之间的任何流量
[我可以记录通过网桥的所有其他流量,从局域网到广域网,反之亦然。查看日志后,我确实通过 ebtables 和 iptables 的某种组合非常短暂地实现了这一点(示例输出:
2016-XX-XXTXX:XX:41-XX:00 XXXXX kernel: [ XXX.850000] ACCEPT_ebt IN=br0 OUT=br0 MAC=XXXXXXXXXXXXXXXXXX SRC=192.168.2.12 DST=192.168.2.16 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=35259 DF PROTO=TCP SPT=45879 DPT=22 etc....
`]
为我指明正确的方向
告诉我我做错了什么
告诉我如何实现这一点
修改
Module Size Used by
ebt_802_3 708 0
ebt_among 2116 0
ebt_arp 1572 0
ebt_arpreply 1060 0
ebt_dnat 804 0
ebt_ip 1252 0
ebt_limit 948 0
ebt_log 2100 0
ebt_mark 692 0
ebt_mark_m 628 0
ebt_nflog 660 0
ebt_pkttype 580 0
ebt_redirect 868 0
ebt_snat 852 0
ebt_stp 1780 0
ebt_ulog 2724 0
ebt_vlan 916 0
ebtable_broute 756 0
ebtable_filter 916 0
ebtable_nat 916 0
ebtables 14253 3 ebtable_broute,ebtable_filter,ebtable_nat
路线
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.11.AA.BB 0.0.0.0 UG 0 0 0 ppp0
10.11.AA.BB * 255.255.255.255 UH 0 0 0 ppp0
10.137.0.0 SerVer 255.255.0.0 UG 0 0 0 br0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
169.254.0.0 * 255.255.0.0 U 0 0 0 br0
192.168.2.0 * 255.255.255.0 U 0 0 0 br0
答案1
如果您所说的“eth0 上的设备”是指集成硬件交换机,该交换机为您提供路由器上通常的四个 LAN 端口和eth0
在 SoC 上显示的第五个端口,那么您不能那样做,因为流量停留在硬件交换机中,永远不会进入 SoC,也永远不会出现在eth0
或上br0
。
根据您拥有的硬件,您可能能够使用swconfig
将实际交换机端口作为网络接口公开给内核(例如 VLAN 接口eth0.1
)eth0.4
。然后您可以将所有这些添加到br0
,并记录流量(与硬件交换机相比,此配置的带宽也将显着减少)。
但并非所有硬件都支持此功能。