내 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.1
WAN 포트를 통해 연결되고 eth0
DHCP를 통해 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
일반적으로 eth0
및 eth1
는 별도의 인터페이스이며 브리지 아래에 있지 않습니다.
브리지 아래에 있는 경우 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.)