CentOS 7でプロキシサーバーを構築する方法(squid)

CentOS 7でプロキシサーバーを構築する方法(squid)

プロキシサーバーとは、企業などの組織で、内部ネットワークからインターネット接続する際に、高速なアクセスや安全な通信などを確保するために、内部ネットワーク上のPCなどの代わりにインターネット接続を行う中継(代理)サーバーを指しており、テスト環境や開発環境を構築する際にプロキシサーバーが必要となることがあります。

そこでここでは、CentOS 7のSquidでプロキシサーバーを構築する基本的な方法を紹介します。

CentOS 7のSquidでBasic認証付きプロキシサーバーを構築する方法
ここでは、CentOS 7でsquidを使って認証付きProxy(プロキシ)サーバーを構築する手順を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

プロキシサーバーの構築手順

インストール

標準のリポジトリからインストールできます。

# yum -y install squid

squid.conf設定

「squid.conf」に設定を記述します。なお、ここではプロキシサーバーでキャッシュはしない設定にしています。

# vi /etc/squid/squid.conf
~省略~

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
# ACL名を追加
acl lan src 192.168.10.0/24

~省略~

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# 上に記述したACL名に対してアクセス許可を設定
http_access allow lan

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
#http_port 3128
# 既定値から待受ポートをIPv4の8080番へ変更
http_port 0.0.0.0:8080

~省略~

# キャッシュしないよう設定
no_cache deny all

# ログのフォーマットを見やすく整形
logformat combined %tl %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
access_log /var/log/squid/access.log combined

# プロキシサーバー経由での接続を隠蔽
forwarded_for off
request_header_access Referer deny all
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

サービス起動設定

サービスを起動し、システム起動時に自動で起動するよう設定

# systemctl start squid
# systemctl enable squid

ファイアウォール設定

待受ポートを既定値の3128/tcpから8080/tcpに変更しているので、firewalldのservice設定フィアルを修正します。

# cd /etc/firewalld/services
# cp /usr/lib/firewalld/services/squid.xml ./
# vi ./squid.xml
~省略~

<!-- <port protocol="tcp" port="3128"/> -->
<port protocol="tcp" port="8080"/>

~省略~

最後にファイアーウォールにsquidの通信を許可します。

# firewall-cmd --permanent --add-service=squid
# firewall-cmd --reload

あとは、クライアントマシンのプロキシサーバー設定にこのサーバーを設定し、インターネットに接続できれば完了です。

あとがき

キャッシュを利用する際は追加の設定が必要ですが、代理サーバーとしてだけなら簡単に構築できます。