不知道我做错了什么。我有两台机器使用这个 ebtable 规则设置背靠背连接:
ebtables -A OUTPUT -p ARP --arp-op Request --nflog-group 100 -j DROP
我有一个监听 netlink 组 100 的进程。我在两台机器上都有以下设置,/etc/network/interface
让我们称之为peer1:
auto e101-001-0
iface e101-001-0 inet manual
auto bond100
iface bond100 inet manual
bond-slaves e101-001-0
bond-mode 4
bond-miimon 100
iface bond100.100 inet manual
vlan-raw-device bond100
auto br100
iface br100 inet static
bridge_ports bond100.100
address 10.1.1.1
netmask 255.255.255.0
peer2具有相同的设置,只是 ip 地址是10.1.1.2
. 当我尝试从peer1向peer2发送 ping 时,我无法到达目的地。使用arp -n
我看到它没有解决。我使用 tcpdump 并看到 ARP 请求是在peer1网桥上发出的,但 peer2 在它的网桥上没有收到它。我知道有三种方法可以通过 ping:
- 擦除 peer1 上的 ebtable规则。
- 不要使用桥梁。如果我只是在物理接口之间 ping,这很好用。
- 将此行添加到上面的 etable 规则中:
--nflog-range 32
. 我可以低至 22,它仍然可以工作。它在 17 点左右开始失败。
任何低于 32 的值似乎都会使其停止工作。我的问题是:
- 如果未明确设置,是否有默认的 nflog 范围大小?
- 是否有影响 nflog-range 大小的内核配置?
我知道这一切都是内核的一部分,所以如果有帮助,我将使用默认的 Debian Stretch 内核(Debian 4.9.110-3+deb9u4)(没有特殊的内核配置)。peer2在修改过的内核上运行并且已知可以正常工作。如果我有两个与peer2具有相同规格的系统,则一切正常,这使我相信这可能是内核配置问题。
谢谢阅读。