One IT Thing

IT業界で飯を食う為の学習系雑記

linux 開発インフラ

認証付きHTTPプロキシを認証無しで利用する下位プロキシをsquidで構築

投稿日:

はじめに

プロキシに認証が必要になることで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がインストール出来ます。

-linux, 開発インフラ

執筆者:

関連記事

開発中のWebシステム上でApple Pay決済を有効化する為のApple Developer Program設定 

WebシステムでApple Pay決済を有効にするにはApple側にその旨を認証して貰う必要が有ります。 前回、Web上でApple Payテスト課金をする為のサンドボックステスターを作成しました。 …

Android版ChromiumをVirtualBoxにインストールしたUbuntuでビルドしてみる

「Chromium」はChromeの開発ソースが公開されたプロジェクトです。  www.chromium.org  1 userGet the Code: Checkou …

Termuxで動作が確認できたターミナルゲーム4つ

Android端末をroot化せずにLinux環境を独自構築する神アプリ「Termux」。  play.google.comhttps://play.google.com/store/app …

各種OSでのインデックスを使用した高速ファイル名検索と全文検索【Linux編】

目次1 目的2 環境3 使用コマンド4 ファイル名検索5 全文検索6 補足とインデックス更新7 まとめ 目的 CentOS上に存在する全ての「~.java」ファイルをリストアップします。上記の内「Sy …

VirtualBoxにUbuntu18.04をインストール(SSH接続するまで)

2019年も変わらずLinuxディストリシェアトップをキープしたUbuntuをVirtualBoxでインストールします。  マイナビニュース  7 usersDebian …

 

shingo.7k24
 

東京在勤、職歴20年越え中年ITエンジニアです。まだ開発現場で頑張っています。

19歳(1996年)から書き始めた個人日記が5,000日を超え、残りの人生は発信をして行きたいと思い、令和元日からこのサイトを開始しました。勉強と試行錯誤をしながら、自分が経験したIT関連情報を投稿しています。

私と同じく、今後IT業界で生計を立てて行きたいと考えている方や、技術共有したいけどフリーランスで孤独、といった方と一緒に成長、知識共有して行けたら楽しいな、と思っています。