Raspberry Pi에 privoxy 및 Socks 프록시 소프트웨어를 설치했습니다.
모든 트래픽을 REDSOCKS_FILTER 체인으로 리디렉션하고 싶습니다. 포트 80의 모든 TCP 프로토콜 트래픽은 privoxy를 통과한 다음 REDSOCKS_FILTER 체인에 도달합니다. REDSOCKS_FILTER 체인에서 일부 로컬 IP 주소를 삭제하고 마지막으로 처리된 트래픽이 양말 프록시 소프트웨어로 이동합니다.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8118
iptables -t nat -A OUTPUT -p tcp --dport 8118 -j REDSOCKS_FILTER
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS_FILTER
이 ase를 작성해 보았으나 privoxy의 포트 80을 통과하는 트래픽이 REDSOCKS_FILTER 체인에 도달할 수 없습니다. 하지만 내가 입력하면
iptables -t nat -A OUTPUT -p tcp --dport 8118 -j REDSOCKS_FILTER
테스트해본 결과 작동하지 않는 것 같지만 결과는 여전히 동일합니다. 내가 무슨 실수를 했는지 혼란스럽습니다.
답변1
나는 REDSOCKS_FILTER
그것이 filter
테이블 이 iptables
아니라 nat
테이블에 있다고 가정하고 있습니까? TCP/IP 드라이버 스택의 서로 다른 위치에서 서로 다른 테이블이 처리되기 때문에 한 테이블에서 다른 테이블로 이동할 수 없습니다.
NAT 테이블의 PREROUTING 및 OUTPUT 체인에서 리디렉션 중이므로 filter
해당 INPUT 및 OUTPUT 테이블에서 패킷을 처리할 때 이러한 변경 사항이 이미 적용되었습니다. 따라서 다음과 같은 것이 필요합니다.
iptables -t filter -A INPUT -p tcp --dport 8118 -j REDSOCKS_FILTER
iptables -t filter -A OUTPUT -p tcp --dport 8118 -j REDSOCKS_FILTER
filter
이는 기본 테이블이므로 이 옵션은 생략할 수 있습니다 -t filter
.
다양한 Netfilter 테이블 간의 패킷 흐름 다이어그램이 도움이 될 수 있습니다.
https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
브리징이 아니기 때문에 수행하는 모든 작업은 iptables
이 이미지의 녹색 "네트워크 레이어" 내에서 발생합니다.