目次
はじめに
プロキシに認証が必要になることでWebブラウザを開いた時に一々認証ダイアログが出て来たります。それは個人レベルで対処すれば良いのですが、
- 開発サーバで使っているミドル全てに認証設定が必要になる
- 夜間にSeleniumなどでブラウザ起動すると認証ダイアログが出てしまい、自動でE2Eテストが出来ない
など付帯作業やCI的なプチ詰みが発生してしまいます。プロキシのホスト名が変わった日には設定し直しのオンパレードになってコストが掛かりますし、トラブルの元にもなりかねないので、サーバや開発端末機器がHTTPで外部に出る際の認証はsquidに代行して貰うようにします。
環境
- CentOS7.6
手順
squidをインストール
3.5.20が入りました。
[root@spock ~]# yum install squid
[root@spock ~]# squid -v
Squid Cache: Version 3.5.20
Service Name: squid
configure options: '--build=x86_64-redhat-linux-gnu'・・・・・・・・・・
/etc/squid/squid.confを設定
上位プロキシを指定する書式は以下になります。
cache_peer hostname type http-port icp-port [options]
詳しくはsquid公式サイトを参照。
squidが使用するプロキシアカウントは事前に管理者から調達しておきましょう。
今回はキャッシュしないのでicp-portは無効である0を指定します。どの道上位プロキシがキャッシュしてくれますし、以前にiOSのWKWebViewがsquidのキャッシュ更新を検知出来ずハマった経験がある為です。インターネットに出ているプロキシでなければ(すぐに変更反映を確認したい開発環境プロキシであれば特に)キャッシュは不要です。
[root@spock ~]# vi /etc/squid/squid.conf
#
# Recommended minimum configuration:
(snip)
# 追加
# このsquidの親になるプロキシを認証付きで指定
cache_peer main.proxy.com parent 8080 0 no-query no-netdb-exchange no-digest login=プロキシユーザ:パスワード default
# サブProxyがあれば設定
cache_peer sub.proxy.com parent 8080 0 no-query no-netdb-exchange no-digest login=プロキシユーザ:パスワード
# ローカルネットワークセグメントには親プロキシを通さずダイレクトアクセス
acl developersegments1 dst 10.85.30.0/24
acl developersegments2 dst 10.85.122.0/24
always_direct allow developersegments1
always_direct allow developersegments2
never_direct allow all
# キャッシュしない
cache deny all
設定後、squid -k parseして設定にミスが無いか確認しておきます。
[root@spock ~]# squid -k parse
squid起動
OS再起動しても自動起動するようにenableもしておきます。
[root@spock ~]# systemctl start squid
[root@spock ~]# systemctl enable squid
3128ポート開放
firewalldでsquidが使用する3128ポートを開けておきます。
[root@spock ~]# firewall-cmd --add-port=3128/tcp --zone=public --permanent
[root@spock ~]# firewall-cmd --reload
各種端末で上記プロキシを設定
Windows、Mac、Linux、Android、iPhoneそれぞれで構築したsquidをプロキシとして参照する設定を行います。今まで指定していた認証付き上位プロキシを指定していた箇所で、
- IPアドレス:squid起動PCのIPアドレス
- ポート:3128
を指定します。ブラウザを開いて認証ダイアログが表示されずにインターネットサイトを表示出来ればOKです。
まとめ
昔のAndroidはプロキシに認証情報が付けられなかったので、認証を代行する下位プロキシは必須でした。
自前のPCもこのsquidをプロキシとして設定すればブラウザを開く度に認証ダイアログが出なくなって煩わしさが無くなりますが、本来与えられているプロキシアカウントとは違うアカウントで仕事をすることになるので目ざとい管理者には目を付けられるかも知れません。
そういう場合は自分のPCに「Proxyomitron」でも入れて、自分のプロキシアカウントを指定したプロキシをローカルPC上で立ち上げればいいと思います。
macならbrew install squidでsquidがインストール出来ます。