Linux는 ebtables를 사용하여 SNAT를 연결합니다.

Linux는 ebtables를 사용하여 SNAT를 연결합니다.

다음 코드를 읽고 있습니다(dot1x 브리지 우회). https://github.com/mubix/8021xbridge/blob/master/scripts/trans_bridge.prepop

간단히 설명하자면 인터페이스 2개가 있는데 첫 번째는 스위치($SWINT)에 연결되고 다른 하나는 대상 호스트에 연결됩니다. 목표는 트래픽이 대상 호스트에 의해 생성된 것처럼 보이게 하면서 나머지 네트워크와 상호 작용하는 것입니다.

인용된 코드를 통해 다음 두 명령이 필요한 이유를 알아내려고 합니다.

# use ebtables to source NAT the $COMPMAC for traffic leaving the device from the bridge mac address
(A)ebtables -t nat -A POSTROUTING -s $SWMAC -o $SWINT -j snat --to-src $COMPMAC
(B)ebtables -t nat -A POSTROUTING -s $SWMAC -o $BRINT -j snat --to-src $COMPMAC

$BRINT의 POSTROUTING 트래픽을 SNAT화해야 하는 이유를 이해할 수 없습니다. 우리의 목표는 대상 호스트와 다른 소스 MAC을 사용하여 스위치 측 인터페이스로 프레임을 전송하지 않는 것이므로 첫 번째 ebtables 규칙으로 충분합니까?

아니면 $SWINT(스위치 측 인터페이스)가 모든 프레임이 스위치에 도달하는 유일한 방법이 아닌가요? 아래 다이어그램에 따르면 규칙 (B)는 eth0(SWINT)으로 가는 프레임에만 관심이 있고 이미 eth0에 SNAT를 적용하기 때문에 중복되어 보입니다.

교량에서 찾은 몇 가지 좋은 자료는 다음과 같습니다(그러나 여전히 내 질문에 대답하지 않음).

Linux 네트워크의 내부 구조 이해

Linux 브리지 분석

ebtables 및 Linux 브리지

https://doc.lagout.org/operating%20system%20/linux/Understanding%20Linux%20Network%20Internals.pdf 페이지: 359 https://doc.lagout.org/operating%20system%20/linux/Understanding%20Linux%20Network%20Internals.pdf페이지 359

관련 정보