今回は、Ubuntu 22.04 ServerにProxyサービスであるSquidをインストールして、フォワードプロキシを構築する手順を記載します。
期待する目標
本手順で期待する目標は以下の通りです。
- Ubuntu Server 22.04にSquidをインストールできる
- Squidでフォワードプロキシを構築できる
- クライアントからProxy経由でWebサイトにアクセスできる
前提条件
今回、Proxyサーバを構築するサーバは以下の通りです。
- CPU : 2vCPU
- MEM : 4GB
- DISK : 60GB
- OS : Ubuntu 22.04 Server
- IP : 192.168.100.177
- Hostname : dev-proxy
実際に動作確認するためにWindows10のクライアントを用意してProxyの設定を行います。
Squidのインストール
Ubuntu 22.04 ServerにSSH等で接続または、ターミナルを起動し、コマンドが入力可能な状態にしておきます。
以下のコマンドを実行し、Squidをインストールします。
$ sudo apt install squid
Squidがインストールできたら、以下のコマンドを実行しSquidが実行状態となっていることを確認します。
$ systemctl status squid
● squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-09 15:44:14 UTC; 2min 28s ago
Docs: man:squid(8)
Process: 1296 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
Main PID: 1299 (squid)
Tasks: 4 (limit: 4538)
Memory: 15.7M
CPU: 144ms
CGroup: /system.slice/squid.service
tq1299 /usr/sbin/squid --foreground -sYC
tq1301 "(squid-1)" --kid squid-1 --foreground -sYC
tq1302 "(logfile-daemon)" /var/log/squid/access.log
mq1303 "(pinger)"
squid.serviceのActiveが[active (running)]となっていることを確認します。
以上でSquidのインストールは完了です。
Squidの設定
Squidのインストールが完了したらSquidの設定を行っていきます。
Squidの設定ファイルは[/etc/squid/squid.conf]
となります。
以下のコマンドを使用して設定していきます。
$ sudo vi /etc/squid/squid.conf
ACLの定義をしていきます。
エディタの検索機能を使用して、[Example rule allowing access from your local networks.セクション付近
]を検索します。
acl Allow_Local_Network src 192.168.100.0/24 #acl [ACL名] src [送信元NW] で記載
ACLのセクションにACLを追記します。
今回は、[Allow_Local_Network]という名前で[192.168.100.0/24]のネットワークからのアクセスを許可します。
#コメントアウトを外す
#http_access deny to_localhost
#↓
http_access deny to_localhost
[http_access deny to_localhost]
のコメントを外しておきます。
#http_access deny allよりも前にallowルールを記載
http_access allow Allow_Local_Network #http_access allow [ACL名]
# And finally deny all other access to this proxy
http_access deny all
作成したACLを許可していきます。
[http_access deny all]よりも前に作成したACLの許可ルールを追記します。
#Squidのデフォルトポートを変更する。
# Squid normally listens to port 3128
#http_port 3128
#↓
http_port 8080 #3128ポート→一般的に使用されている8080へ変更
Squidはデフォルトで[3128]ポートを使用します。
しかし、Windowsなどでは一般的に8080ポートを使用することから、Squidのデフォルトポートを変更しておきます。
また、Ubuntu Server でFirewallを設定している場合は、8080ポートを開放しておきます。
Squidの設定が完了したら以下のコマンドを使用し、Squidを再起動します。
再起動後はSquidのステータスを確認します。
$ systemctl restart squid
$ sysudosystemctl status squid
● squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-06-09 16:03:02 UTC; 1min 25s ago
Docs: man:squid(8)
Process: 1517 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
Main PID: 1521 (squid)
Tasks: 4 (limit: 4538)
Memory: 17.5M
CPU: 139ms
CGroup: /system.slice/squid.service
tq1521 /usr/sbin/squid --foreground -sYC
tq1523 "(squid-1)" --kid squid-1 --foreground -sYC
tq1524 "(logfile-daemon)" /var/log/squid/access.log
mq1525 "(pinger)"
再起動後はSquidのサービスが起動していることを確認します。
以上でSquidの設定は完了です。
Squid稼働確認
Squidの設定が完了したら、クライアントよりProxyサーバの動作確認をします。
なお、稼働確認の端末はWindows10を使用しています。
[スタートメニュー]-[コントロールパネル]-[ネットワークとインターネット]-[インターネットオプション]を選択します。
[ローカルエリアネットワーク(LAN)の設定]より、[LANの設定]を選択します。
[ローカルエリアネットワーク(LAN)の設定]-[プロキシサーバ]より、以下の設定を行います。
- LANにプロキシサーバを使用する : ■
- アドレス : Proxyサーバのアドレス
- ポート : 8080 (Squidに設定したポート)
設定完了後、Webブラウザ等を使用し、任意のWebサイトへアクセスします。
正常にWebサイトへアクセスできれば問題なく設定できています。
Squidアクセスログの確認
最後にSquidのアクセスログを確認します。
Squidのアクセスログは[/var/log/squid/access.log]
となります。
Proxyを設定したクライアントからアクセスすると、以下のようなログが出力されます。
1654791026.052 57 192.168.100.xxx TCP_MISS/200 830 POST http://ocsp.pki.goog/gts1c3 - HIER_DIRECT/172.217.161.35 application/ocsp-response
1654791026.186 76 192.168.100.xxx TCP_TUNNEL/200 1299 CONNECT googleads.g.doubleclick.net:443 - HIER_DIRECT/172.217.31.162 -
1654791026.211 21 192.168.100.xxx TCP_MISS/200 421 GET http://detectportal.firefox.com/canonical.html - HIER_DIRECT/34.107.221.82 text/html
1654791026.230 12 192.168.100.xxx TCP_MISS/200 339 GET http://detectportal.firefox.com/success.txt? - HIER_DIRECT/34.107.221.82 text/plain
1654791041.959 36 192.168.100.xxx TCP_MISS/200 867 POST http://ocsp.digicert.com/ - HIER_DIRECT/117.18.237.29 application/ocsp-response
1654791078.085 84 192.168.100.xxx TCP_TUNNEL/200 4328 CONNECT www.google.com:443 - HIER_DIRECT/142.251.42.132 -
1654791078.138 61 192.168.100.xxx TCP_MISS/200 830 POST http://ocsp.pki.goog/gts1c3 - HIER_DIRECT/172.217.161.35 application/ocsp-response
1654791089.957 88 192.168.100.xxx TCP_TUNNEL/200 1300 CONNECT googleads.g.doubleclick.net:443 - HIER_DIRECT/172.217.31.162 -
1654791090.020 59 192.168.100.xxx TCP_MISS/200 421 GET http://detectportal.firefox.com/canonical.html - HIER_DIRECT/34.107.221.82 text/html
1654791090.039 13 192.168.100.xxx TCP_MISS/200 339 GET http://detectportal.firefox.com/success.txt? - HIER_DIRECT/34.107.221.82 text/plain
1654791102.333 174 192.168.100.xxx TCP_TUNNEL/200 1298 CONNECT googleads.g.doubleclick.net:443 - HIER_DIRECT/172.217.31.162 -
1654791102.358 20 192.168.100.xxx TCP_MISS/200 421 GET http://detectportal.firefox.com/canonical.html - HIER_DIRECT/34.107.221.82 text/html
1654791102.377 13 192.168.100.xxx TCP_MISS/200 339 GET http://detectportal.firefox.com/success.txt? - HIER_DIRECT/34.107.221.82 text/plain
1654791105.135 31 192.168.100.xxx TCP_MISS/200 867 POST http://ocsp.digicert.com/ - HIER_DIRECT/117.18.237.29 application/ocsp-response
正しくログが出力されていることを確認し、Proxyサーバの構築は完了です。
まとめ
今回は、Ubuntu 22.04 Serverを使用してProxyサーバを構築する手順を記事にしました。
本手順ではフォワードプロキシということで配下の端末の代理アクセスを行うサーバとして構築しています。
一昔まえまでは、フォワードプロキシというと、キャッシュサーバとしての側面が強かったですが、現在の利用方法の主目的は通信ログの取得とアクセス制御が主となっています。
アクセスログを取れることは良いですが、下手にProxyを通すとアプリケーションによっては動作しなくなったり、Webサイトの表示が遅くなったりするので、デメリットもありますが、NGFWなどを使用するよりは早いと思うので、ぜひ検証してみてください。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。
コメント
acl Allow_Local_Network scr 192.168.100.0/24 #acl [ACL名] src [送信元NW] で記載
srcがscrになっています。
ご指摘ありがとうございます。
該当箇所を修正いたしました。