패킷은 tc/netfilter 물리적, VLAN 및 브리지 인터페이스를 어떻게 통과합니까?

패킷은 tc/netfilter 물리적, VLAN 및 브리지 인터페이스를 어떻게 통과합니까?

두 네트워크 A와 B 사이에서 NAT를 수행하는 라우터에 다음 설정이 있다고 가정합니다.

  • eth0 - 물리적 인터페이스 -아니요IP 주소
    • eth0.1 - 네트워크 A의 VLAN 인터페이스 -아니요IP 주소
    • eth0.2 - 네트워크 B의 VLAN 인터페이스 - 네트워크 B의 IP 주소
  • br0 - 브리지 - 네트워크 A의 IP 주소
    • eth0.1을 다른 (관련되지 않은) 인터페이스와 결합

질문

패킷은 네트워크 A에서 도착하므로 VLAN ID 1로 태그가 지정됩니다. 물리적으로 eth0에 의해 수신됩니다. 논리적으로는 eth0.1이지만 br0일 수도 있습니다.

대상 IP가 네트워크 B에 있는 경우 논리적으로는 eth0.2로 추가로 전달되지만 물리적으로는 다시 eth0을 통해 나가야 합니다.

어떤 순서로이러한 패킷은 수신/송신 qdisc 및 PRE/POSTROUTING iptables에 의해 처리됩니까?

다른 방향(동일한 인터페이스를 통해 네트워크 B에서 A로)은 어떻습니까?

넷파일러 패킷 흐름 차트를 참조하십시오. Netfiler 패킷 흐름 다이어그램

답변1

tcpdump와 iptables로 몇 가지 실험을 한 후 다음을 관찰했습니다.

패킷이 네트워크 A에서 네트워크 B로 전송되면 tcpdump는 다음을 표시합니다.

  1. eth0: VLAN ID 1 태그가 지정된 프레임(4바이트 더 큼).
  2. eth0.1: 태그가 지정되지 않은 프레임
  3. br0: 같은 프레임
  4. eth0.2: NAT 프레임

IP테이블:

  1. br0 in
  2. 네트워크 주소 변환
  3. eth0.2 출력

생각하다qdisc는 다음 순서로 처리됩니다.

  1. eth0 입구
  2. eth0.1 입구
  3. br0 입구
  4. br0 내보내기
  5. eth0.1 내보내기
  6. eth0 종료

관련 정보