【Linux】Ubuntu 22.04 Proxyサーバ構築手順

Linux
スポンサーリンク

今回は、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設定

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を追記します。

ACL定義

今回は、[Allow_Local_Network]という名前で[192.168.100.0/24]のネットワークからのアクセスを許可します。

to_localhost deny
#コメントアウトを外す
#http_access deny to_localhost
#↓
http_access deny to_localhost

[http_access deny to_localhost]のコメントを外しておきます。

ACL有効化
#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)の設定]-[プロキシサーバ]より、以下の設定を行います。

  • 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も開設したのでフォローお願いします。

コメント

  1. より:

    acl Allow_Local_Network scr 192.168.100.0/24 #acl [ACL名] src [送信元NW] で記載

    srcがscrになっています。

タイトルとURLをコピーしました