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, 開発インフラ

執筆者:

関連記事

Linuxのシェルログイン時、牛に格言を喋らせる

sshコマンドやteratermでLinuxにログインした時、在り来たりなプロンプトじゃなくて何か役に立つ情報が表示されたら、開発プロジェクトの雰囲気もちょっと潤うかも知れません。 Linuxコマンド …

pgadmin4をCentOS7にインストールしてサーバモードで起動する手順

目次1 はじめに1.1 pgadmin3時代1.2 pgadmin4時代2 前提3 環境4 手順4.1 1.yumリポジトリ追加。pgdg(ポスグレ本家)、epel(python関連用)4.2 2.p …

Linux、Macでハードディスクが一杯になった時の対処

「いつの間にかハードディスク一杯になってた・・・」 運用側が10:0で言い訳出来ない障害の一つなんじゃないでしょうか。 怖い先輩(上役)に体育館裏(会議室)に連れていかれる恐怖を思い出します。 運管ミ …

LinuxでDOOMをプレイ(ゲームソースコードをコンパイル)

「IT業界に”技術者”として身を置く人はおよそ100%コンピュータゲーム好き、あるいは若い頃にハマった経験がある」という仮説を唱えてやまない投稿主です。 そんなゲーム好きな皆様(決めつけ)は「arch …

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

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


shingo nakanishi。東京で消耗中の職歴20年越え中年ITエンジニアです。「生涯現役プログラマを楽しむ」ことができる働き方探しをライフワークにしています。

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