VPN 클라이언트가 연결되는 순간 사라지는 서비스는 보통 차단된 것이 아니라 잘못된 인터페이스로 응답하고 있습니다. 요청은 물리 네트워크 카드에 도착하고, 데몬이 응답을 작성하며, 터널이 기본 경로를 장악했기 때문에 라우팅 테이블이 그 응답을 터널로 넘깁니다. 원격 클라이언트는 자신이 연 연결에 대한 응답을 결코 보지 못하므로 기다리다가 시간 초과를 보고합니다. 그 과정 어디에도 방화벽 규칙은 관여하지 않습니다.

증상: 요청은 들어오고 응답은 잘못된 문으로 나간다

단서는 호스트의 다른 모든 것이 동작하는데 인바운드 연결만 실패한다는 점입니다. 또 다른 단서는 LAN에서는 도달할 수 있지만 인터넷에서는 도달할 수 없는 호스트, 또는 터널이 다시 연결될 때까지 동작하다가 그 후 멈추는 호스트입니다. 어느 경우든 나가는 방향은 정상이었고 돌아오는 방향은 아니었으며, 이는 정책이 아니라 라우팅 비대칭을 가리킵니다.

요청이 어떻게 도착하는지가 아니라 응답이 어디로 가는지를 관찰하여 확인하십시오.

물리 인터페이스와 터널 장치에서 동시에 캡처하십시오. 요청이 물리 인터페이스에 나타나고 응답이 터널에 나타나면 진단은 끝난 것입니다. 응답이 어디에도 나타나지 않는다면 서비스가 연결을 전혀 수락하지 않았다는 뜻이며, 이는 별도의 원인을 가진 별도의 조사입니다.

두 개의 기본 경로와 하나의 라우팅 결정

기본 경로를 설치하는 클라이언트는 LAN 게이트웨이보다 나은 메트릭을 가진 두 번째 항목을 추가합니다. 일부 클라이언트는 대신 절반 범위의 경로 두 개를 설치하는데, 같은 공간을 더 구체적으로 덮어 같은 방식으로 조회에서 이깁니다. 두 기법 모두 일반적인 아웃바운드 패킷이 터널 인터페이스를 선택하게 둡니다.

그 선택은 목적지만으로 이루어집니다. 커널은 정책 규칙이 지시하지 않는 한 패킷이 어디서 왔는지 묻지 않습니다. 따라서 공인 클라이언트 주소로 가는 응답은 터널에 넘겨지고, 터널의 반대편은 자신이 소유하지 않은 출발지 주소를 가진 패킷을 받아 버리거나 쓸모없는 곳으로 전달합니다. 리눅스에서는 엄격한 역경로 필터링이 서비스가 보기도 전에 원래 요청을 버릴 수 있으며, 이는 밖에서 보면 동일합니다. 두 증상 모두 인바운드 흐름과 그 응답 사이의 같은 누락된 연관에서 비롯됩니다.

터널은 내내 올바르게 동작합니다. 기본 경로를 운반하라는 지시를 받았고 정확히 그렇게 합니다.

터널을 깨지 않고 반환 경로를 고치십시오

내구성 있는 수리의 형태는 세 가지이며, 선택은 호스트 자체 트래픽 중 얼마나 많은 부분이 터널 안에 남아야 하는지에 달려 있습니다. 서비스의 목적지나 포트를 제외하는 것이 가장 작은 변경입니다. 출발지나 표시에 따른 정책 라우팅이 가장 정밀합니다. 출발지 변환이 가장 거칠고 두 해 뒤에 설명하기 가장 쉽습니다.

어떤 스니펫을 먼저 찾았는지가 아니라 호스트가 무엇을 해야 하는지로 선택하십시오.

목적지를 제외하는 것은 안정적인 공인 주소를 가진 서비스에 적합하며, 데몬을 모든 주소가 아니라 물리 주소에 묶으면 그 제외가 더 안전해집니다. 출발지로 테이블을 선택하는 정책 규칙은 호스트 자체 연결을 터널 안에 두면서 서비스 응답을 WAN 게이트웨이로 돌려보냅니다. 응답을 WAN 인터페이스에서 마스커레이드하면 같은 경로에 도달하지만 서비스 로그에서 클라이언트 주소가 가려지는 대가가 있습니다. 기본 경로의 즉흥적 변경은 클라이언트가 재연결할 때마다 경로를 다시 쓰기 때문에 진단이지 구성이 아닙니다.

ip rule show
ip route get 203.0.113.9 from 192.0.2.44

호스트가 뒤쪽 LAN을 위해서도 라우팅할 때

한 홉 더 바깥에서는 같은 비대칭이 더 많은 움직이는 부품과 함께 돌아옵니다. 트래픽은 인터넷에서 라우터에 도달해 내부 장치로 전달되고, 그 장치의 유일한 반환 경로는 터널이므로 응답은 공급자 자신의 주소에서 원래 클라이언트에 도달합니다. 그러면 연결 추적은 시작을 보지 못한 흐름에 대한 응답을 만나 버립니다. 클라이언트는 그동안 아무것도 보지 못합니다.

그것을 고치는 것은 인바운드 연결이 내부 장치에 도달하도록 하는 목적지 변환과, 그 장치의 응답이 라우터 자체에서 온 것처럼 보이게 하는 출발지 변환의 두 가지입니다.

라우터 펌웨어에서 흔한 표현은 포트 포워딩을 WAN 쪽에 고정하고 라우터 자체 트래픽은 터널을 타게 하는 정책 규칙입니다. 출발지 변환이 없으면 그 응답은 외부 클라이언트로 향하고 내부 장치는 거기에 이를 경로가 전혀 없습니다. 실패하는 이유가 다르기 때문에 외부에서 오는 연결, 호스트가 스스로 시작하는 연결, 이름 조회의 세 가지를 따로 시험하십시오.

관련 글