据我所知,桥接发生在 IP 层以下,但我如何能够为桥接接口分配 IP 呢?
brctl addbr br0
ifconfig br0 IP promisc up
操作系统做什么?听起来它为我提供了 br0 之上的 ip 网络堆栈。
那么 iptable 规则可以在这个接口上运行吗?
谢谢。PS:对 ebtables 不感兴趣。我更感兴趣的是当我将 IP 分配给桥接接口时,底层发生了什么。
答案1
桥接本质上在计算机上显示为另一个接口,您通常会像配置任何其他网络接口一样配置该接口。
一般来说,这个过程如下:
- brctl addbr br0
- brctl addif br0 eth0
- brctl addif br0 eth1
现在,您可以像往常一样使用其他命令来添加接口。每个发行版的自动配置工作方式略有不同,例如,在 RHEL6.x 中
cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
IPADDR="0.0.0.0"
BRIDGE="br0"
...
cat /etc/sysconfig/network-scripts/ifcfg-br0
...
DEVICE="br0"
TYPE="Bridge"
IPADDR="10.0.0.1"
这是一个好文章,更详细,对于 CentOS
这是官方内核文档对于 brctl。
iptables
现在,基本知识已经讲完了——桥接在 Linux 中确实非常重要。桥接发生在网络堆栈的较低级别,因此在这些帧穿过 iptables 之前,就已经对其进行了处理。这是一个很广泛的主题,所以这里有一个包含大量图表的好页面。
答案2
是的,您可以在桥上使用 iptables,但是 ebtables 是更正确的方法。