로컬 인터셉션 프록시는 새로운 아웃바운드 연결을 엽니다. 전면적인 OUTPUT 리디렉션이 그 소켓까지 잡으면 프록시를 자신의 리스너로 되돌려 보냅니다.

기존 IPv4 iptables NAT 구성에서는 전용 서비스 ID로 그 소켓을 구분할 수 있습니다:

-A OUTPUT -p tcp -m owner ! --uid-owner proxyuser \
  -m multiport --dports 80,443 -j REDIRECT --to-ports 8080

이 규칙 조각은 인터셉션이 가능한 리스너가 이미 포트 8080에 있고 프록시의 아웃바운드 소켓이 proxyuser 소유라고 가정합니다. 해당 사용자의 연결은 이 규칙에서 제외되고, 다른 사용자의 적격 연결은 리디렉션됩니다.

브라우저는 보통 임시 소스 포트를 선택합니다. 소스 포트 80 또는 443을 일치시키는 것은 브라우저의 웹사이트 연결을 식별하거나 프록시를 예외 처리하는 신뢰할 만한 방법이 아닙니다.

소유자 일치는 소켓 소유권이 있는 로컬 생성 트래픽에 관한 것입니다. 다른 머신에서 도착하는 패킷에 대한 소스 주소 정책을 대신하지 않습니다.

기존 규칙 순서와 네트워크 정책을 염두에 두십시오. 리디렉션은 원시 SOCKS 리스너를 인터셉션 어댑터로 바꾸지 않으며 IPv6도 해당 구성이 필요합니다.

관련 글