왜 한 VPN 리소스는 작동하고 다른 하나는 시간 초과가 되는가
작동하는 사설 서비스는 약속이 아니라 대조군이다. 주소, 포트, 응답 단계, 주체를 비교해 실패하는 쪽에 무엇이 빠졌는지 찾아라.
한 사설 서비스는 터널을 통해 로드되고 다음 서비스는 시간 초과가 되며, 그러면 클라이언트 프로필 전체를 다시 만들고 싶어진다. 작동하는 서비스는 처음부터 다시 시작할 이유가 아니라 대조군으로 쓸 때 더 유용하다. 그것은 하나의 목적지, 하나의 포트, 하나의 인가 경로가 충족되었다는 것만 증명하고 그 이상은 아니다.
같은 게이트웨이의 두 서비스는 서로 다른 주소 체계, 서로 다른 서브넷, 서로 다른 정책으로 접근할 수 있다.
작동하는 흐름과 실패하는 흐름을 분리하라
각 서비스를 VPN의 증상이 아니라 그 자체의 흐름으로 다뤄라. 예시 클라이언트는 portal.corp.example 를 172.20.4.15:443 에서 열 수 있지만 두 목적지에 두 규칙 집합이 있으므로 172.20.9.40:5432 의 데이터베이스에는 여전히 도달하지 못할 수 있다. 한 호스트에서 TCP 443을 허용하는 규칙은 같은 호스트의 TCP 5432에 대해 아무것도 말하지 않으므로, 무엇이든 바꾸기 전에 포트와 프로토콜을 포함해 두 행을 적어 두라.
조사할 것은 실패하는 행이다. 작동하는 행은 기준선이 어디인지 알려 줄 뿐이며, 모든 변경 뒤에 비교 지점이 된다.
이름을 비교하기 전에 주소를 비교하라
각 전체 이름을 애플리케이션이 실제로 사용하는 정책으로 해석하고, 선택된 주소 체계를 기록하라. 한 이름은 IPv6 주소를 반환하고 다른 이름은 IPv4를 반환할 수 있으며, 오래된 캐시 응답은 사설 서비스와 무관한 공인 주소로 요청을 보낼 수 있다.
ip route get 172.20.4.15
ip route get 172.20.9.40
ip -6 route get 2001:db8:60::20
이 조회는 현재 테이블과 정책 규칙이 주어졌을 때 이 호스트가 그 목적지에 어떤 경로를 선택할 것인가라는 좁은 질문에 답한다. 172.20.4.0/24 에 대한 경로는 172.20.9.0/24 를 포함하지 않으며, 두 번째 네트워크 관리자나 더 구체적인 로컬 경로가 터널을 조용히 덮어쓸 수 있다. 셸과 다를 때는 이름 공간 안에서 또는 애플리케이션이 사용하는 표시와 함께 조회를 반복하라. 경로 테이블은 한 인터페이스를 가리키는데 정책 라우팅은 다른 인터페이스로 흐름을 내보낼 수 있으므로, 패킷이 나가는 인터페이스도 기록하라.
일치하는 경로는 필요 조건이지 허가가 아니다. 패킷이 갈 곳이 있다는 것만 말하며, 방화벽이나 인가 서비스 또는 호스트 자체가 그것을 받아들일지는 말하지 않는다.
프로토콜과 응답 단계가 어디서 멈추는지 알려 준다
ping 응답은 데이터베이스 포트가 열려 있다는 것을 증명하지 않으며, 성공한 HTTPS 페이지도 같은 머신의 파일 공유를 인가하지 않는다. 모든 실패를 하나의 범주로 평평하게 만들지 말고 실제로 무엇이 돌아왔는지 기록하라. 시간 초과, 리셋, TLS 주체 오류, 애플리케이션 수준 거부는 각각 다른 계층을 가리킨다.
구분이 중요한 이유는 수정 방향이 갈라지기 때문이다. 침묵은 보통 경로, 방화벽 또는 경로상의 변환 문제를 뜻한다. 즉각적인 리셋은 무언가가 호스트에 도달해 포트를 거부했다는 신호다. 인증서 오류는 연결이 도착했고 이름이 일치하지 않았다는 뜻이며, 이는 도달 가능성 문제가 아니라 구성 문제다. 애플리케이션 거부는 네트워크가 제 역할을 했고 주체가 그 뒤에 거부되었다는 뜻이다.
리소스가 게이트웨이를 통해 게시될 때, 목적지가 보는 출발지 주소를 클라이언트가 사용한다고 믿는 출발지와 비교하라. 게이트웨이 자체에서 시작된 요청은 성공하는데 클라이언트의 같은 요청은 둘이 서로 다른 주소에서 도착해 서로 다른 규칙을 만나기 때문에 실패할 수 있다.
변수를 하나만 바꾸고 두 요청을 다시 실행하라
주체는 사람들이 마지막에 보는 곳이고 올바른 거부가 가장 먼저 나타나는 곳이다. VPN 로그인, 디렉터리 그룹, 애플리케이션 계정은 서로 갈라질 수 있는 세 개의 별개 주체다. 포털 접근은 그 뒤의 데이터베이스 접근을 결코 의미하지 않으며, 한 디렉터리의 이름이 다른 디렉터리에 행을 만들지 않는다. 서비스가 사용자의 의도된 범위 밖에 있다면 그 거부는 시스템이 작동하는 것이다.
넓은 경로를 추가하거나 그룹을 시험 삼아 여는 대신 리소스 소유자에게 의도된 권리를 확인해 달라고 요청하라. 주장을 증명하려고 네트워크를 넓히는 것은 일시적 진단을 영구적 노출로 바꾸는 길이며, 처음 시작한 대조군을 파괴한다. 반복마다 입증된 불일치 하나면 충분하며, 그것은 빠진 경로, 잘못된 주소 체계, 차단된 포트, 빠진 그룹 구성원 자격 중 하나다.
각 변경 뒤에 두 요청을 반복하고 출력을 나란히 둬라. 실패하던 서비스가 자체 정책 아래에서 작동하고, 작동하는 서비스와 여전히 기대하는 거부가 이전과 똑같이 행동할 때 조사가 끝난다.