많은 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 계열의 순방향 체인으로 이동합니다.