VPN, Tor, 애플리케이션 프록시를 겹쳐 놓으면 프라이버시가 배로 늘어나는 것처럼 느껴지지만, 실제로는 연결이 죽을 수 있는 지점의 수가 배로 늘어납니다. 흔한 결과는 세 도구가 모두 자신이 정상이라고 보고하는 동안 브라우저만 계속 도는 것입니다. 세 설정을 한꺼번에 바꾸면 어느 것이 거짓말을 하는지 알려 줄 유일한 단서마저 사라집니다.

먼저 의도한 경로를 순서대로 그리면서 어떤 프로그램이 각 연결을 열고 각 단계에서 어떤 이름이 확인되는지 적으세요.

계층은 더해지지 않고 서로 작용합니다

Tor 앞에 VPN을 두면 Tor 클라이언트의 진입 연결이 터널 안으로 지나간다는 뜻입니다. Tor를 거쳐 VPN을 보낸다는 것은 VPN 클라이언트 자체의 종점이 Tor를 통해 도달 가능해야 한다는 뜻이며, 이는 전혀 다른 요구 사항입니다. 브라우저 프록시는 운영 체제가 전혀 모르는 또 한 번의 도약을 더합니다. 세 가지 배치, 세 개의 별도 의존성 목록입니다.

각 배치는 무엇을 확인할 수 있고 무엇을 전달할 수 있으며 누가 첫 패킷을 보는지를 바꿉니다. 그중 하나만이 여러분이 의도한 구성일 수 있습니다.

직접 경로도 다이어그램에 넣으세요. 대체 경로, 분할 터널 예외, 프록시 우회는 테스트하려던 체인을 조용히 건너뛰면서 페이지를 불러오게 할 수 있고, 그런 성공은 실패보다 더 큰 착각을 줍니다.

순서가 무엇을 전달할 수 있는지를 정합니다

Tor는 TCP 스트림을 SOCKS 인터페이스로 전달하며, 프록시에 호스트 이름 확인을 요청하는 클라이언트는 조회를 회로 안에 유지합니다. 일반적인 구성에서 UDP는 그렇게 지나가지 않으므로, 중간에 추가 TCP 중계 없이는 WireGuard 터널을 Tor 안에 중첩할 수 없습니다.

OpenVPN 은 TCP로 강제할 수 있으므로 그 배치는 적어도 설명이 가능합니다. 또한 더 느리고 더 약하며, 끊어질 때의 실패 모습은 차단된 포트와 똑같습니다. 둘을 구별하는 데 어느 하나를 고치는 것보다 더 오래 걸릴 것으로 예상하세요.

확인은 나머지 절반입니다. --socks5-hostname 를 쓰면 프록시가 목적지를 확인하고, 평범한 --socks5 는 먼저 로컬 리졸버에 물어 이름을 회로 밖으로 흘립니다. 바로 이 하나의 플래그가 이름 조회가 체인에 속하는지 여러분의 ISP에 속하는지를 결정합니다.

OrderWhat must resolve the endpointWhat usually breaks
VPN, then TorThe tunnel's resolverEntry guards blocked by the VPN provider's filters
Tor, then VPNThe SOCKS proxy, remotelyUDP transports, which Tor does not carry
App proxy on topThe application itselfProxy bypass rules and cached connections

첫 번째로 끊긴 경계 찾기

패킷이 지나가는 순서대로, 무해한 요청으로 각 단계를 시험하고 처음 실패하는 지점에서 멈추세요. 어느 명령이 먼저 실행되었는지, 순서 자체가 증거의 일부이므로 반드시 적어 두세요. 두 명령으로 죽은 회로와 죽은 출구를 구분할 수 있습니다:

curl -s --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/api/ip
curl -4 -s https://api.ipify.org; echo

첫 번째는 요청이 SOCKS 프록시를 통해 아예 완료되는지를 알려 주고, 두 번째는 네트워크가 지금 제시하는 주소를 보여 줍니다. 첫 번째가 실패하고 두 번째가 성공하면 문제는 Tor 클라이언트나 그 앞에 있습니다. 둘 다 성공하는데 브라우저가 계속 실패하면 애플리케이션이 셸과 다른 경로를 쓰고 있는 것입니다.

공인 IP 페이지도 마지막으로 보이는 출구만 설명합니다. 그 앞에 몇 번의 도약이 있었는지는 알 수 없으므로, 하나의 숫자를 다이어그램으로 여기지 말고 각 도구가 지원하는 상태 출력과 함께 보세요.

계층 추가를 언제 멈출지

어떤 계층이 무엇을 더하는지 한 문장으로 말할 수 없다면 빼세요. 목적이 불분명한 체인은 새벽 세 시에 아무도 디버그할 수 없는 체인이며, 설명되지 않은 한 번의 도약이 주는 프라이버시 이득은 보통 잃는 가용성보다 작습니다.

계층이 정말로 제자리를 얻는다면 먼저 단독으로 시험하고, 다음 계층을 더한 뒤 같은 두 명령으로 경로를 다시 확인하세요. 일상적으로 쓰기 전에 전체 체인을 복원하고 TLS 검증과 인증은 켜 둔 채로 두되, 페이지를 불러오려고 받아들인 인증서 경고는 라우팅 우회일 뿐 수리가 아닙니다. 정한 순서는 기억이 신선할 때 적어 두세요.

그 순서를, 각 단계에서 응답하는 리졸버까지 포함해 적으세요. 설명할 수 있는 작동하는 체인은 다음 업데이트를 견디지만, 시행착오로 조립한 작동하는 체인은 그 업데이트와 함께 사라집니다. 날짜와 버전을 적어 두면 나중의 고장을 기억으로 논쟁하는 대신 알려진 정상 상태와 비교할 수 있습니다. 텍스트 파일의 열 줄이 저녁 하나의 추측을 아껴 줍니다.

관련 글