iptables
예제 규칙 세트를 기반으로 규칙 세트를 사용했습니다.https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy,Linux 부분, Tor
Tor를 투명 프록시로 설정하여 로컬 리디렉션.
나는 규칙 세트를 이해했다고 생각했지만, 내가 이해하지 못하는 한 가지가 있습니다: TCP 세그먼트는 SYN 플래그가 설정될 때 Tor가 수신 대기하는 포트로만 리디렉션됩니다.
예를 들어, 나는 을 방문하고 싶습니다 http://www.example.com
. 내 브라우저는 DNS 요청을 수행하고 해당 IP 주소를 얻은 다음 해당 주소로 TCP 세그먼트를 보내 SYN 플래그를 설정합니다.
규칙 세트에 따르면 세그먼트가 Tor 포트로 리디렉션되므로 Tor는 프록시 역할을 하여 IP 패킷을 http://www.example.com
웹 사이트 서버로 라우팅하고 웹 사이트 서버의 응답을 내 브라우저로 다시 전달합니다. 내 브라우저는 소스 IP가 서버의 IP이고 TCP 페이로드에 ACK 플래그가 설정된 패킷을 수신합니다.
따라서 내 브라우저는 www.example.com IP 주소로 전송되는 다음 TCP 세그먼트에 더 이상 SYN 플래그를 설정하지 않습니다.
그러나 SYN 플래그가 설정되지 않았기 때문에 NAT 테이블에는 해당 규칙이 없습니다. 따라서 리디렉션되거나 이후에 출력 테이블에서 허용되어서는 안 됩니다.
그래도 모든 것이 잘 작동합니다. 내가 놓친 게 무엇입니까?
답변1
첫 번째 패킷 이후의 패킷 처리 규칙은 다음 ACK
과 같습니다.
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
이는 기본적으로 설정된 세션에 속하거나 관련된 모든 패킷을 통과한다는 의미입니다. 초기 패킷 SYN
(유효한 응답이 있다고 가정) 이후 컴퓨터에서 들어오는 모든 패킷은 설정된 세션의 일부이므로 통과됩니다.
( RELATED
이 모듈을 활성화하면 "일반" 세션에 여러 TCP 세션이 포함될 수 있는 FTP와 같은 프로토콜에 사용됩니다.)
Tor에 대한 DNS 리디렉션도 설정하고 사용했기 때문에 이것은 올바르지 않습니다. 일부 접미사만 이 로컬 범위(기본적으로 AutomapHostsOnResolve
브라우저(및 기타 소프트웨어)가 보게 되는 IP 주소는 www.example.com의 IP 주소가 아니라 지정한 가상 주소 범위 내의 IP 주소입니다. ( 10.192.0.0/10
)..exit
) 에 매핑됩니다 .onion
.
답변2
다음은 처음부터 발췌한 내용입니다.5장. NAT의 내용 제어존재하다이 NAT 가이드2002년부터.
_____ _____
/ \ / \
PREROUTING -->[Routing ]----------------->POSTROUTING----->
\D-NAT/ [Decision] \S-NAT/
| ^
| |
--------> Local Process ------
"위의 각 지점에서 패킷이 들어올 때 우리는 그것이 어떤 연결과 연관되어 있는지 찾습니다. 새로운 연결인 경우 NAT 테이블에서 해당 체인을 조회하여 처리 방법을 확인합니다. 그것이 제공하는 대답은 해당 연결의 모든 향후 패킷에 적용됩니다."