
私は Squid Proxy を (DNS フィルタリング) に使用しており、HTTP および HTTPS Web トラフィックを傍受するために、GCP Cloud NAT の背後に透過モードで Squid Proxy を構成し、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 は Web プロキシであり、HTTP、HTTPS、および FTP リクエストのみを処理します。Squid は SMTP、UDP、およびその他のプロトコル リクエストを理解しませんが、上記の iptables ルールは HTTP と HTTPS にのみ機能し、残りの SMTP および UDP リクエストはブロックされます。私が理解しているように、SMTP および UDP リクエストを処理するように squid に指示することはできないため、squid では HTTP および HTTPS トラフィックのみを処理し、残りのポートを GCP Cloud NAT に直接リダイレクトする必要があります。
ポート 80、443 のリクエストのみを Squid にリダイレクトし、残りのポート リクエストをバイパスするか、GCP Cloud NAT に直接リダイレクトするために記述する iptables ルールについて、どなたか教えてください。
交通流
プライベート VM -> Squid プロキシ -> GCP クラウド NAT
答え1
ポート 80 と 443 の要求のみを Squid にリダイレクトし、他のすべての要求をバイパスするには、既存の iptables ルールを次のように変更します。
Squid で ACL を作成し、HTTP および HTTPS リクエストのみを許可します。これを行うには、Squid 構成ファイルに次の行を追加します。
acl セーフポート ポート 80 443 http_access セーフポートを許可する
iptables ルールを変更して、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
他のすべてのリクエストをバイパスし、GCP Cloud NAT に直接リダイレクトするための新しい iptables ルールを追加します。ルールは次のようになります。
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -p tcp -m multiport ! --dports 80,443 -j DNAT --to-destination [GCP Cloud NAT IP アドレス]
このルールは、ポート 80 または 443 以外のすべての TCP トラフィックに一致し、GCP Cloud NAT に直接リダイレクトします。
[GCP Cloud NAT IP アドレス] を Cloud NAT インスタンスの正しい IP アドレスに調整してください。
これらのルールにより、HTTP および HTTPS トラフィックのみがフィルタリングのために Squid にリダイレクトされ、他のすべてのトラフィックはバイパスされて GCP Cloud NAT に直接リダイレクトされます。