RaspberryPi+Ubuntu Serverにプロキシサーバーを構築

RaspberryPi+Ubuntu Serverにプロキシサーバーを構築 Linux
スポンサーリンク

Ubuntu ServerでVPNサーバーを構築すると予定でしたが、ネットワークの関係で構築が滞っているため、

ちょっとVPNはおやすみして、プロキシサーバーをUbuntuServer18.03.4LTSに構築していきます。

プロキシサーバーの役割

インターネットの出口などに設置されているサーバーに「プロキシ」があります。

よく会社や学校でPCを使用して作業していると、プロキシという言葉はよく聞くと思います。

なんとなく、セキュリティ上何か危ないものを防いでいるのかな〜っという認識の人もいるでしょう。

ではプロキシとは何をするものでしょうか。

まず、プロキシサーバーには2種類あります。

1. 「フォワードプロキシー」サーバー

2. 「リバースプロキシー」サーバー

それぞれについて説明します。

フォワードプロキシー

フォワードプロキシーは、企業のLANからインターネットへの出口へ配置されるサーバーです。

主にアクセスを高速化するために用いられます。

クライアントのアクセスにより、インターネットから取得したWebコンテンツなどのデータを一時的にサーバー内に保存し、

再びアクセスがあれば、そのデータを渡すキャッシュのような役割を果たすことで、アクセスの高速化を実現しています。

クライアントからのインターネットアクセスがプロキシーを経由するため、

データのフィルタリングや、不適切なコンテンツ遮断、文書を翻訳できる機能を提供できます。

フォワードプロキシーの概要図

リバースプロキシー

リバースプロキシーと呼ばれるサーバーは、インターネットに公開しているWebサーバーの直前に配置するサーバーです。

このサーバーの場合、インターネットからのアクセスは、リバースプロキシーを経由するので、

サーバーデータのキャッシュや加工が可能になります。

Webサーバーの負荷を分散させ動作を高速化することや、セキュリティ対策にも使用されます。

リバースプロキシーの概要図

プロキシー構築:Squid

UbuntuServerだけでなく、Linux上でプロキシーを構築するソフトは、Squidが使用されます。

Squidの特徴は、前述の2つの用途のサーバーを構築できることです。

Ubuntuでそれぞれのサーバーを構築します。

Squidのインストール

まず、Squidをインストールします。

$ sudo apt install squid

アプリケーションのインストールが完了したら、設定ファイルを変更します。

設定ファイルの編集:/etc/squid/squid.conf

ここで、フォワードプロキシーとリバースプロキシーで設定ファイルの編集方法が異なります。

フォワードプロキシーの構築

まず設定ファイルを編集します。

$ sudo vim /etc/squid/squid.conf

今回設定を行うパラメータは、以下の4つです。

・プロキシサーバーのポート番号

・アクセスリストの定義

・アクセス制限

・キャッシュメモリ容量

プロキシサーバーのポート番号

クライアントからのプロキシサーバーに接続するためのポート番号を設定します。

初期値は、ポート番号3128が設定されています。

そのため、よくプロキシサーバーで使用される「8000」もしくは、「8080」を設定しましょう。

# 1612行目
http_port 8080

アクセスリスト

次に、アクセスリストの設定です。

アクセスリストは、LANに接続されたPCやネットワーク機器のアクセスには、localhostという名前で制御できるように設定します。

このとき、ネットワースアドレスも指定します。

# 980行目
acl localhost  src 192.168.1.0/24

アクセス制限

http_accessはSquidへのアクセスを制限するためのパラメータです。

指定した、ユーザーをアクセス許可/アクセス禁止のどちらかに指定します。

# 1192行目
http_access allow localhost

キャッシュメモリ容量

上記の他にも、cacheの最大容量を指定しましょう。

デフォルトでは有効になっていないので、以下のように変更して1000MBに変更しましょう。

今回はRaspberryPiに実装するので、1000MBは大きいサイズですが、

今どきのPCは大容量のメモリを保有しているので、1000MBでも問題ないでしょう。

cache_mem 1000 MB

最後にまとめです。変更前後のパラメータの値は、以下の通りです。

項目変更前変更後
プロキシサーバーの接続ポート
(1612行目)
http_port 3128http_port 8080
アクセスリスト
(980行目)
(新規追加)acl localnet src <ネットワークアドレス>
例:acl localnet src 192.168.11.1
アクセス制限
(1192行目)
(新規追加)http_access allow localnet
キャッシュメモリ容量#cache_mem 256MBcache_mem 1000MB
/etc/squid/squid.confのパラメータ

Squidの再起動

設定の変更が完了したら、Squidを再起動します。

$ sudo systemctl restart squid.conf

クライアント側のプロキシ設定

次に、RaspberryPiから離れて、クライアントPCの設定をします。

今回は、クライアントPCはWIndows10を使用しました。

Windows10を立ち上げて、以下のように設定します。

「スタート」→「設定」→「プロキシ設定を開く」

以下の画面のように変更してください。

これで、Webにアクセスしてみてください。

リバースプロキシーとして設定する

Webサーバーと、その前段階で動作するプロキシーを別々のマシンで動作する環境を構築します。

Squidの設定ファイルを編集します。

$ sudo vim.tiny /etc/squid/squid.conf

リバースプロキシーとして設定する場合、以下のように変更します。

# プロキシのポート番号
http_port 80
# 公開しているWebサーバーの名前
visible_hostname サーバー名

# 80番ポートへのアクセスのみ許可
acl webserver port 80
http_access deny all
http_access allow webserver

# Webサーバーのリバースプロキシとして配置するために設定
http_port WebサーバーのIPアドレス:80 accel ignore-cc defaultsite=webサーバーのIPアドレス

#キャッシュメモリの設定
cache_mem 512 MB
cache_dir ufs /var/cache/squid 1000 32 128

# 動的なコンテンツをキャッシュさせないための設定
acl nocache urlpath_regex .*¥/cgi-bin¥/.* # CGIのキャッシュを不可にする
acl nocache urlpath_regex .*¥.php$ # PHPのキャッシュを不可にする
acl nocache urlpath_regex .*¥.php¥?.* #PHPのキャッシュを不可にする
cache deny nocache

以上が、設定ファイルの編集内容です。

また、Webサーバー側ではプロキシーからのアクセス以外を受け付けない設定を必要です。

Squidを再起動する

sudo systemctl restart squid.service

以上のコマンドで、Squidを再起動して設定を反映すると、リバースプロキシーサーバーの完成です。

今回参考にした本

まとめ

今回は、RaspberryPiとUbuntuServerを使って、Squidを実装し、プロキシサーバーの構築をしました。

Squidw使うと、フォワードプロキシーとリバースプロキシーのどちらも設定でき、かつ設定も簡単でした。

プロキシサーバーの勉強のために、構築してみてください。

コメント

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