PuTTY でSquid proxy を利用する

PuTTY でsocks proxy の機能を利用する」 でリモートホスト経由で外部に接続した場合、データ自体はSSH で暗号化されているで問題ないのですが、DNS のクエリをSSH の接続先に飛ばすのではなく、もともとのローカル環境のDNS に問い合わせに行くようなのです。socks5 になればこのへんも改善するらしいのですが良く分からず。
なので、外部から自宅サーバ環境へsocks proxy で繋いだとき、自宅サーバのアドレス(ウチだとalectrope.jp) の名前解決にローカル環境のDNS から外部向けIP アドレスを引っ張ってきてしまい、内側から繋いでいる(=内向きのIP アドレスが必要) socks proxy では接続できない、という現象が起きます。いちいちIP アドレス直打ちもめんどうなので、なんとかしたいなーと。
これを解決するひとつの方法として、socks proxy ではなく、Squid によるproxy を利用します。インストール方法については「Fedora のSquid SRPM からRHL9 用RPM を作る」 で簡単にまとめました。
では、PuTTY での実際の設定です。ウチの環境ではSquid はポート3128 でListen してます。適宜読み替えてください。
[PuTTY 設定]-[接続]-[SSH]-[トンネル] で

  • [源ポート] を"8080"
  • [送り先] を"内側のDNSサーバ名:3128"
  • ラジオボタンは [ローカル]、[自動]

で追加します。
putty.ini 的には、"L8080=内側のDNSサーバ名:3128," という感じになると思います。
ブラウザ側のプロキシの設定は、"127.0.0.1:8080" です。
完全に原因究明まではしていませんが、ポートの番号を合わせるとなぜかうまく行かなかったりしたっぽいので、こういう設定にしています。
参考: 「YA-Faq - Clarkconnect Faq - HOWTO Squid proxy using through SSH tunnel
これで内部のPC にもドメイン名でアクセスできます。