
나는 (DNS 필터링)을 위해 Squid 프록시를 사용하고 있으며 HTTP 및 HTTPS 웹 트래픽을 가로채기 위해 투명 모드에서 GCP Cloud NAT 뒤에 Squid 프록시를 구성했으며 HTTP 및 HTTPS 트래픽을 Squid로 리디렉션하기 위해 아래 규칙만 추가했습니다.
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j REDIRECT --to-port 3130
그러나 지금까지 내가 배운 것처럼 Squid는 웹 프록시이고 HTTP, HTTPS 및 FTP 요청만 처리하며 Squid는 SMTP, UDP 및 기타 프로토콜 요청을 이해하지 못하지만 iptables 규칙 위의 규칙은 HTTP 및 HTTPS에서만 작동합니다. SMTP 및 UDP 요청이 차단됩니다. 제가 알기로는 Squid에게 SMTP 및 UDP 요청을 처리하라고 지시할 수 없으므로 Squid에서 HTTP 및 HTTPS 트래픽만 처리하고 나머지 포트도 GCP Cloud NAT로 직접 리디렉션하고 싶습니다.
포트 80, 443 요청을 Squid로 리디렉션하고 나머지 포트 요청을 우회하거나 GCP Cloud NAT로 직접 리디렉션하려는 경우에만 어떤 iptables 규칙을 작성해야 하는지 누구든지 도와줄 수 있나요?
교통 흐름
비공개 VM -> Squid 프록시 -> GCP Cloud NAT
답변1
포트 80 및 443 요청만 Squid로 리디렉션하고 다른 모든 요청을 우회하려면 다음과 같이 기존 iptables 규칙을 수정하면 됩니다.
HTTP 및 HTTPS 요청만 허용하도록 Squid에서 ACL을 생성합니다. Squid 구성 파일에 다음 줄을 추가하면 됩니다.
acl Safe_ports 포트 80 443 http_access 허용 Safe_ports
HTTP 및 HTTPS 요청만 Squid로 리디렉션하도록 iptables 규칙을 수정합니다.
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 80 -j REDIRECT --to-port 3129 iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j REDIRECT --포트 3130
다른 모든 요청을 우회하고 GCP Cloud NAT로 직접 리디렉션하려면 새로운 iptables 규칙을 추가하세요. 규칙은 다음과 같아야 합니다.
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp -m 멀티포트 ! --dports 80,443 -j DNAT --대상 [GCP Cloud NAT IP 주소]
이 규칙은 포트 80 또는 443에 없는 모든 TCP 트래픽을 일치시키고 이를 GCP Cloud NAT로 직접 리디렉션합니다.
[GCP Cloud NAT IP 주소]를 Cloud NAT 인스턴스의 올바른 IP 주소로 조정하세요.
이러한 규칙을 사용하면 HTTP 및 HTTPS 트래픽만 필터링을 위해 Squid로 리디렉션되고, 다른 모든 트래픽은 우회되어 GCP Cloud NAT로 직접 리디렉션됩니다.