鉴于许多 Linux 发行版默认从 iptables 迁移到 nftables,我希望迁移我的 iptables 规则。
我有一个 Ubuntu 服务器,有两个桥(主要用于容纳我在服务器上运行的 VM 和 LXD 容器)。两者都是在 netplan 中创建的。
物理网卡 eth0(未标记的 VLAN10)在 br0 中桥接。 br0 获得 VLAN10 中的 IP。 eth0 没有获取 IP。
VLAN66(已标记)已在 eth0 上单独配置,并在 br66 中桥接。 br66(或VLAN66)上未配置IP。
目前(很懒)我加载了 br_netfilter 模块,以便所有过滤都在 iptables 中、过滤器表中的标准输入、转发和输出链中完成。这样我就可以避免单独配置 ebtables。
看看 nftables,我知道这种懒惰的方法行不通,因为桥过滤是通过一个单独的系列进行的。
我的问题是:鉴于服务器上的接口都是桥接的,我的 nftables 规则的主要焦点应该在桥接系列中吗?那么当前在 iptables 的过滤器表中配置的所有规则都应该在 Bridge 系列中复制,而不是在 ip/ip6/inet 系列中复制?或者是否需要混合,如果需要,如何划分?
抱歉,如果这是一个愚蠢的问题。
编辑:添加配置信息。这些veth
接口适用于 LXD 容器。
网络规划:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [ eth0 ]
macaddress: xx:xx:xx:xx:xx:94
dhcp4: true
dhcp6: true
parameters:
forward-delay: 0
stp: false
br66:
interfaces: [ vlan66 ]
macaddress: xx:xx:xx:xx:xx:8d
dhcp4: false
dhcp6: false
link-local: [ ]
accept-ra: false
parameters:
forward-delay: 0
stp: false
vlans:
vlan66:
id: 66
link: eth0
dhcp4: false
dhcp6: false
ip地址:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:ee brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:94 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.10/24 brd 10.10.10.255 scope global dynamic br0
valid_lft 5022sec preferred_lft 5022sec
inet6 fdfd:2553:8868:10:xxxx:xxxx:xxxx:xx94/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86361sec preferred_lft 14361sec
inet6 2403:xxxx:xxxx:xx10:xxxx:xxxx:xxxx:xx94/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86361sec preferred_lft 14361sec
inet6 fe80::xxxx:xxxx:xxxx:xx94/64 scope link
valid_lft forever preferred_lft forever
4: br66: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:8d brd ff:ff:ff:ff:ff:ff
5: vlan66@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether 2c:4d:54:d2:84:ee brd ff:ff:ff:ff:ff:ff
7: veth940fee62@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether e6:40:d8:1f:7b:93 brd ff:ff:ff:ff:ff:ff link-netnsid 0
9: vethff4da3d7@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether 3a:ba:7e:c8:49:20 brd ff:ff:ff:ff:ff:ff link-netnsid 1
11: veth0d67113a@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether 86:65:7f:bc:a0:c6 brd ff:ff:ff:ff:ff:ff link-netnsid 2
13: veth22f981e6@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether 92:93:15:f6:ed:09 brd ff:ff:ff:ff:ff:ff link-netnsid 3
15: veth1d23d0ca@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br66 state UP group default qlen 1000
link/ether 6e:8a:7d:48:0a:08 brd ff:ff:ff:ff:ff:ff link-netnsid 4
brctl显示:
bridge name bridge id STP enabled interfaces
br0 8000.xxxxxxxxxx94 no eth0
br66 8000.xxxxxxxxxx8d no veth0d67113a
veth1d23d0ca
veth22f981e6
veth940fee62
vethff4da3d7
vlan66
答案1
另一个论坛中的某人向我指出了这个非常有用的 nftables 数据包流程图:
这对我整理思路有很大的帮助。我还没有最终确定规则,但我的想法是,穿过成员接口之间的网桥的数据包的规则将进入网桥系列的转发链,然后从网桥接口到本地主机的数据包的规则将进入在 inet 系列的输入链中,网桥之间的数据包规则将进入 inet 系列的前向链。