Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

親プロクシがあるときのSquidの設定方法 Windows編

スポンサードリンク

f:id:fa11enprince:20201227234532j:plain 何らかの理由で閉じたネットワーク内で、いわゆる踏み台の内側にネットワークを組んでいる場合、
その内側のマシンからインターネット接続をしたいことがあると思います。
その場合、例えば企業内のネットワークでインターネットに出る場合
Proxyを経由しないといけない場合があると思います。
踏み台には単にProxyの設定をすれば踏み台からインターネットアクセスができます。
では、内側のマシンからの場合はどうするかという内容です。
多段プロクシをすればいいのです。この場合、親になるプロクシは親プロクシとか上位プロクシと呼ばれたりします。

踏み台の設定

構成は次のような感じとします。IP体系がへんてこなのは実は私が実験している環境がHyper-Vだからです。
普通に社内と192.168.1.0/24のNICを2つ持っている踏み台があると思ってもらえばよいです。 今回は、192.168.185.224/28ですが…。 踏み台もdev01Default Switchを使っているのでプロクシを通さずとも、インターネットに出れるので
私の環境を再現した図としては、この図は正確ではないですが、
開発用のネットワークだとありそうな感じかなと思っていただければ…。 f:id:fa11enprince:20210101011345p:plain
本当に同じ環境をしたい場合は下記リンクのように 踏み台にNIC2枚(外部スイッチとプライベートスイッチ)をつけてください。
Hyper-Vのスイッチの違い - 海を飛んで君の許へ。
そのうえで、片方をプライベートスイッチにしてください。

企業プロクシに見立てたフリーで公開されているプロクシで下記を使います。
http://www.cybersyndrome.net/plr6.html

150.95.198.104:3128

これをWindowsのProxy設定で設定すると当然踏み台からは
Edgeとかでインターネットにつなげるはずです。

Squidの設定

では、内側のマシン(例:Dev01)からの場合はどうするかというといくつか方法がありますが、
Squidを使うパターンでやってみます。
Squid for Windowsのインストールをします。
バージョンは最新版で3.5.28です。
https://squid.diladele.com/

最近数日間だけこのサイトが停止していました…(ドメイン更新忘れかな?)。

ダウンロードしたsquid.exeをダブルクリックしてインストールをします。
特に設定項目みたいのはなく、デフォルトのままでOKです。
既定ではC:\Squidにインストールされます。

C:\Squid\etc\squidをエディタで開き設定を末尾の行に追加します。
もちろんタスクバーに常駐しているのでそこから開いてもかまいません。 この記事で重要なのはここだけです。

# parent proxy server
cache_peer [親のproxyのhost] parent [親のproxyのポート] 0 no-query
icp_port 0
never_direct allow all

を追記します。 キャッシュサーバーとして動作させるときにicp_port 0とするのですがたいていこれでOKです。 never_direct allow allは送信元(このSquidの利用元)からインターネットへの直接アクセスを禁止します。
今回の場合は、

# parent proxy server
cache_peer 150.95.198.104 parent 3128 0 no-query
icp_port 0
never_direct allow all

となります。あとは

以上でおわりですが、Firewallも忘れずに開けておきましょう。 Windowsのファイヤーウォールの設定で、 受信の規則で3128ポートを許可します。※キャプチャはお試しWindows 10 Enterpriseの英語版です。 f:id:fa11enprince:20210101015314p:plain

あとは閉じたネットワークのLinuxマシン等から(もちろんWindowsでもOK) /etc/environment等にhttp_proxy, https_proxy, no_proxy変数等を設定すればよいでしょう。 今回は面倒なのでUbuntuのFirefoxにProxy設定を入れます。 Windows(Squidサーバー)のIPは今回でいうと、192.168.185.227:3128なのでそれを入力します。 f:id:fa11enprince:20210101103259p:plain

参考

Squidによるプロキシサーバーの構築
水銀室 Squidで多段プロキシーを設定する -CentOS最短構築支援-
上記リンクはそれぞれの設定値の意味を細かく書いてくださっているのでわかりやすいです。

トラブルシューティング

Squid通らないぞと思ったらまずはマシン同士が通信できるかping等で確認してください。
もちろんpingもWindows Firewallの設定を解除してあげなければなりません。
【Windows 10対応】Windowsのファイアウォールで「ping」コマンドへの応答を許可する:Tech TIPS - @IT
また、ちゃんとProxyを介しているかどうかはC:\Squid\var\log\squid\access.logを見てください。 Windowsの仮想スイッチの概念わかりにくいなー。
デフォルトスイッチ・外部スイッチ・内部スイッチ・プライベートスイッチがある。。。 デフォルトスイッチと外部スイッチの違いがよくわからん。

あと、ちゃんとSquidつかうならログのローテーションの設定を忘れずに!