eth0의 트래픽이 VPN 터널의 누출을 뜻하지는 않습니다
물리 어댑터의 공인 주소는 대개 터널 자체의 외투입니다. 인터페이스를 비교한 뒤 커널에 어떤 장치를 고르는지 물어보세요.
터널이 올라와 있는데 eth0에서 공인 주소가 보이면 무언가 새어 나간 증거처럼 느껴집니다. 보통은 반대입니다. 터널 자체의 패킷이 서버에 닿으려면 그 어댑터를 지나야 하며, 평범한 UDP나 TCP 흐름처럼 보입니다. 안쪽 패킷은 터널 장치에서만 나타납니다. 둘을 구별하는 일은 외투를 읽는 문제이지 바이트 수를 믿는 문제가 아닙니다.
터널의 모든 패킷은 여전히 회선을 지납니다
터널은 인터페이스이지 회선이 아닙니다. 클라이언트는 안쪽 패킷을 가져와 감싼 뒤 그 결과를 프로필의 서버 주소와 포트로 보냅니다. 물리 어댑터에서는 포장이 보이고, 터널 장치에서는 감싸인 것이 보입니다.
UDP 모드에서 바깥 흐름은 각 방향으로 주소와 포트 한 쌍뿐이므로 건강한 터널은 eth0에서 거의 지루해 보입니다. 먼저 찾아야 할 것은 바로 그 한 쌍입니다.
한 번에 인터페이스 하나씩 캡처하세요
계수를 비교하려면 한 번에 인터페이스 하나만 캡처하세요. any 의사 인터페이스는 모든 장치를 한꺼번에 모으므로 전달된 패킷은 들어오고 나갈 때 모두 나타나고, 로컬에서 만들어진 패킷은 서로 다른 두 형태로 두 번 나타납니다. 패킷 수는 같고 바이트 수는 다른 것은 정상입니다. 포장이 실어 나르는 것보다 크기 때문입니다. ARP, DHCP, IPv6 라우터 광고는 로컬 링크에 속하며 여러분의 애플리케이션에 대해 아무 말도 하지 않습니다.
sudo tcpdump -i eth0 -n host 203.0.113.10 and udp port 1194주소와 포트를 프로필 자체의 값으로 바꾸세요. 그 흐름이 일정하다면 터널은 무언가를 나르고 있습니다.
커널에 어떤 장치를 고르는지 물어보세요
커널에 어떤 장치를 고를지 물어본 뒤 회선에서 확인하세요. 경로 조회가 결정이고, 캡처는 그 결정이 지켜졌다는 증거입니다. 둘은 서로 다른 질문에 답하며 여러분은 둘 다 필요합니다.
ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111흔한 발견은 갈라진 결과입니다. 프로필이 IPv4 경로만 밀어 넣었기 때문에 IPv4는 터널로, IPv6는 물리 어댑터로 갑니다. 이것은 실제 누출이며 IPv4만 담은 캡처에서는 보이지 않습니다. IPv6로 걸러 서버도 아니고 link-local도 아닌 주소를 지켜보세요.
연결 전과 후에 두 조회를 모두 실행해 클라이언트가 실제로 무엇을 바꿨는지 보세요. 두 실행의 차이가 클라이언트의 실제 효과입니다.
캡처가 정말 누출일 때
때로는 캡처가 진실을 말합니다. 한 프리픽스를 터널 옆으로 보내는 더 좁은 경로, 클라이언트가 제외하라는 지시를 받은 서브넷, 또는 터널 정책보다 먼저 실행되는 방화벽 허용은 모두 트래픽을 평문으로 회선에 올릴 수 있습니다. 프로세스 그룹과 일치하는 규칙도 의도된 예외일 수 있습니다. 결함이라고 부르기 전에 그 인터페이스와 목적지 범위를 읽으세요.
경로나 제외를 고치세요. 방화벽이 아닙니다. 그다음 새 연결에서 다시 캡처하고 IPv4와 IPv6를 따로 확인하세요. 하나를 고쳐도 다른 하나에 대해서는 아무 말도 하지 않기 때문입니다. 자세한 내용은 tcpdump 설명서에서 확인할 수 있습니다.