在桥接设置中从 iptables 过渡到 nftables

在桥接设置中从 iptables 过渡到 nftables

鉴于许多 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 系列的前向链。

相关内容