브리지 IP 할당 인터페이스의 Linux NAT에서 패킷 흐름 활성화

브리지 IP 할당 인터페이스의 Linux NAT에서 패킷 흐름 활성화

내 Linux 컴퓨터에는 다음과 같은 구성이 있습니다.

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether bc:e6:7c:51:20:6b  txqueuelen 1000  (Ethernet)
br0.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.103  netmask 255.255.255.0  broadcast 192.168.0.255
        ether bc:e6:7c:51:20:6b  txqueuelen 1000  (Ethernet)
br0.2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 20.20.20.1  netmask 255.255.255.0  broadcast 20.20.20.255
    ether bc:e6:7c:4d:8f:b0  txqueuelen 1000  (Ethernet)
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether bc:e6:7c:51:20:6b  txqueuelen 1000  (Ethernet)
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether bc:e6:7c:51:3a:b0  txqueuelen 0  (Ethernet)
/ # brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.bce67c51206b       no              eth0
                                                        eth1

2개의 레이어 3 인터페이스가 있으며 br0.1브리지 br0.2상단에 생성됩니다. 이는 br0.2.NET을 통해 LAN 측 클라이언트에 DHCP 서비스가 제공되는 비정형 NAT 구성입니다 eth1. 고정 IP 20.20.20.1을 가지며 br0.1WAN 포트를 통해 연결되고 eth0DHCP를 통해 DHCP에서 IP를 얻습니다 eth0.

후면 라우팅 체인에도 매스커레이드 규칙이 있습니다.

table ip haswell-nat {
        chain haswell-postrouting {
                type nat hook postrouting priority mangle; policy accept;
                ip saddr 20.20.20.0/24 masquerade
        }
}
  • 클라이언트(20.20.20.2)에서 기본 게이트웨이 192.168.0.10으로 ping을 하면 NAT가 발생합니다.
  • 패킷이 192.168.0.103에서 오는 것을 확인했습니다.

이 ping 패킷이 브리지된 인터페이스 eth0에 있기 때문에 어떻게 스푸핑되는지 궁금합니다 . eth1일반적으로 eth0eth1는 별도의 인터페이스이며 브리지 아래에 있지 않습니다.

브리지 아래에 있는 경우 IP 계층에 있으므로 iptable 규칙을 건드리지 않고 패킷을 다른 인터페이스로 전달해야 합니까?

편집: 브리지는 VLAN을 인식합니다.

/ # bridge vlan show
port              vlan-id
eth0              1 PVID Egress Untagged
                  2
                  15
br0               1
                  2
                  15
eth1              1 PVID Egress Untagged

답변1

OP는 모든 세부 정보를 제공하지는 않았지만 다음과 같습니다.

br0.1은 eth0을 통해 wan 포트로 연결하고 eth0을 통해 DHCP에서 IP를 얻습니다.

br0.2는 eth1을 통해 연결된 LAN 측 클라이언트에 DHCP를 제공합니다.

나는 단지 추측할 수 있다이더넷 0그리고이더넷 1VLAN 태그가 지정된 트래픽은 해당 포트에 VLAN이 구성된 스위치와 같은 외부 장치로부터 수신되며 태그가 지정된 트래픽은br0(VLAN 인식으로 구성되지 않았거나 OP에서 설명하는 대로 구성되지 않음)

이 VLAN으로 태그된 트래픽은 스위치에 의해 필터링되므로 "상대방"으로 누출되지 않습니다.

이 트래픽반품브리지의 자체 인터페이스에 도착: 참여하려는 인터페이스라우팅. 그 위에 VLAN 하위 인터페이스를 설정하여 여러 인터페이스가 들어오는 트래픽 라우팅에 참여하도록 할 수 있습니다. 이는 두 개의 인터페이스가 있는 라우터가 됩니다.br0.1그리고br0.2라우팅에 참여(br0또한 참여하지만 IP 주소가 구성되어 있지 않으므로 참여하지 않습니다. ARP와의 가능한 상호 작용은 무시할 수 있습니다.

내 가설이 조금 틀려도 상관없어라우팅대신에브리징일어날 것이다.


이더넷 0그리고이더넷 1라우팅에는 관여하지 않습니다. 단지 브리지 포트일 뿐입니다. 비슷하게,br0주소가 없기 때문에 라우팅에 참여하지 않으며 이를 사용할 경로가 추가되지 않았다고 가정할 수 있습니다.

라우팅과 관련된 나머지 인터페이스는 다음과 같습니다.

  • br0.1: 광역 네트워크
  • br0.2: LAN

나는 Route( ip route)가 다음과 유사하다고 가정할 수 있습니다:

# ip route
default via 192.168.0.10 dev br0.1 
20.20.20.0/24 dev br0.2 proto kernel scope link src 20.20.20.1 
192.168.0.0/24 dev br0.1 proto kernel scope link src 192.168.0.103 

이제부터 브리지나 브리지 포트의 개입을 무시할 수 있습니다. 트래픽이 도착하면br0.1또는br0.2그러면 이것이 된다라우팅됨대신 이더넷과 유사한 인터페이스를 통한 IP 패킷브리지된액자.

웹 필터연결하다(및 NAT) IP 주소와 함께 사용됨nftables인터페이스를 통해 동작을 선택할 수 있습니다. 여기에 설정된 규칙에는 인터페이스 이름이 포함되지 않고 주소만 포함됩니다. 즉, IP 소스가 20.20.20.0/24인 패킷이 nat/postrouting에서 가장될 때마다 적용됩니다.

두 가지 상황은 다음과 같습니다.

  • 기본이 아닌 소스 주소 20.20.20.1을 사용하여 시스템에서 로컬로 시작된 흐름은 NAT를 통과합니다.

  • 20.20.20.0/24에서 라우팅된 패킷은 NAT를 통과합니다.

요청이 클라이언트 20.20.20.2에서 다른 클라이언트 20.20.20.3으로 전송되면 이번 트래픽은 다음과 같습니다.브리지된대신에라우팅됨:(ARP 브로드캐스트 제외) 결코 도착하지 않습니다.br0,br0.1또는br0.2그리고 라우팅은 발생하지 않습니다. 이것nftablesIP 후크는 전혀 사용되지 않으며 NAT가 발생하지 않습니다(커널 모듈이br_netfilter 짐을 실은이것은 얻는다NAT는 브리지된 트래픽에 작동할 수 있습니다.또한. 이는 절대로 필요하거나 결합되어서는 안 됩니다.nftables.)

관련 정보