Dar*_*ski 16 linux ubuntu iptables bridge
我已经安装的以太网桥br0,它包含两个接口eth0和tap0
brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
Run Code Online (Sandbox Code Playgroud)
我的默认FORWARD连锁政策是DROP
iptables -P FORWARD DROP
Run Code Online (Sandbox Code Playgroud)
当我不添加以下规则时,流量不会通过桥。
iptables -A FORWARD -p all -i br0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
据我了解iptables只负责IP层。
ebtables 应该负责过滤以太网桥上的流量。
那么为什么我必须在 iptable 的 FORWARD 链中添加 ACCEPT 规则呢?
cor*_*ump 14
由于 br-nf 代码可用作 linux 2.4 的补丁并在 linux 2.6 中使用:
br-nf 代码使桥接的 IP 帧/数据包通过 iptables 链。ebtables 过滤以太网层,而 iptables 只过滤 IP 数据包。
由于您正在工作的流量是 ip,iptables规则仍然适用,因为br-nf将桥接数据包传递到iptables.
这是一个很好的阅读交互的资源,它详细介绍了br-nf代码的功能,包括如何禁用所有或部分功能(即不将桥流量传递给 iptables)。
Arn*_*out 12
您可以通过键入以下内容禁用此行为(让 iptables 处理桥接数据包):
echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables
Run Code Online (Sandbox Code Playgroud)
(见http://ebtables.sourceforge.net/documentation/bridge-nf.html)
如果您不需要将 iptables 与系统上的网桥一起使用,您可以使用以下任一方法永久禁用它:
iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
| 归档时间: |
|
| 查看次数: |
51469 次 |
| 最近记录: |