桥接和 iptables 后路由

桥接和 iptables 后路由

我有一台 Linux 3.14 PC,带有三个 NIC 和两个 NIC 之间的桥接器(eth1eth2)。

我的问题

为什么没有流量通过 POSTROUTING 规则?仅供参考,流量通过(转发)网桥一切正常。有人能给我一些建议,让它正常工作吗?

ifconfig eth1 down
ifconfig eth2 down

ifconfig eth1 up
ifconfig eth1 0.0.0.0

ifconfig eth2 up
ifconfig eth2 0.0.0.0

brctl addbr sm0
brctl addif sm0 eth1
brctl addif sm0 eth2

ifconfig sm0 up

iptables -t mangle -A POSTROUTING -o eth1 -p all  -j CLASSIFY --set-class 1:99

iptables -t mangle -A POSTROUTING -o eth2 -p all  -j CLASSIFY --set-class 2:99

规则

o iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 38914 packets, 2954K bytes)
 pkts bytes target     prot opt in    out     source         destination

Chain INPUT (policy ACCEPT 38210 packets, 2791K bytes)
 pkts bytes target     prot opt in    out     source         destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in    out     source         destination

Chain OUTPUT (policy ACCEPT 38072 packets, 2844K bytes)
 pkts bytes target     prot opt in    out     source         destination

Chain POSTROUTING (policy ACCEPT 38072 packets, 2844K bytes)
 pkts bytes target     prot opt in    out     source         destination
    0     0 CLASSIFY   all  --  *     eth1    0.0.0.0/0      0.0.0.0/0      CLASSIFY set 1:99
    0     0 CLASSIFY   all  --  *     eth2    0.0.0.0/0      0.0.0.0/0      CLASSIFY set 2:99

系统配置文件

net.ipv4.ip_forward=1

将以下值设置为 0 或 1 对 iptables 没有影响

net.bridge.bridge-nf-call-arptables=1
net.bridge.bridge-nf-call-ipv6tables=1
net.bridge.bridge-nf-call-ipv4tables=1

答案1

您的网桥不路由流量,因此无需遵守任何规则POSTROUTING

请参阅 netfilter 文档桥接网络过滤器有关详细信息和更改此配置的方法(内核 3.2.0):

modprobe bridge    # Enable bridge-netfilter
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

相关内容