브리지 설정에서 iptables에서 nftables로 전환

브리지 설정에서 iptables에서 nftables로 전환

많은 Linux 배포판이 기본적으로 iptables에서 nftables로 마이그레이션된다는 점을 고려하여 iptables 규칙을 마이그레이션하고 싶습니다.

두 개의 브리지가 있는 Ubuntu 서버가 있습니다(주로 서버에서 실행하는 VM 및 LXD 컨테이너를 수용하기 위해). 둘 다 netplan에서 생성됩니다.

물리적 NIC eth0(태그가 지정되지 않은 VLAN10)은 br0에 브리지됩니다. br0은 VLAN10에서 IP를 얻습니다. eth0이 IP를 얻지 못했습니다.

VLAN66(태그됨)은 eth0에서 별도로 구성되고 br66에서 브리지됩니다. br66(또는 VLAN66)에는 IP가 구성되어 있지 않습니다.

현재 (게으른 중) 모든 필터링이 iptables, stdin, 필터 테이블의 전달 및 출력 체인에서 수행되도록 br_netfilter 모듈을 로드합니다. 이렇게 하면 ebtable을 별도로 구성하는 것을 피할 수 있습니다.

nftables를 보면 브리지 필터링이 별도의 시리즈를 통해 수행되기 때문에 이러한 게으른 접근 방식이 작동하지 않는다는 것을 알고 있습니다.

내 질문은: 서버의 인터페이스가 모두 브리지되어 있는 경우 내 nftables 규칙의 주요 초점이 브리지 제품군에 있어야 합니까?입니다. 그러면 현재 iptables의 필터 테이블에 구성되어 있는 모든 규칙을 ip/ip6/inet 시리즈 대신 Bridge 시리즈에 복제해야 합니까? 아니면 섞어서 써야 하는지, 그렇다면 어떻게 나누어야 하나요?

어리석은 질문이라면 죄송합니다.

편집: 구성 정보를 추가했습니다. 이러한 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 계열의 순방향 체인으로 이동합니다.

관련 정보