11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【AWS メモ⑥】プロキシサーバの構築(Squid3.5)

Last updated at Posted at 2019-09-12

Squid3.5を仕事で使う機会があったので備忘録的なものを残しておく。

前提

以下の環境で実行。

サブネット

サブネット名 ルートテーブル設定
public-subnet ・local
private-subnet ・local
・インターネットゲートウェイ

セキュリティグループ

セキュリティグループ名 設定
public-sg ・社内グローバルIPアドレスからのアクセスを許可(ポート22)
・public-sgからのアクセスを許可(ポート3128) ※ Squidのポート
private-sg ・public-sgからのアクセスのみ許可(ポート22)

EC2

ホスト名 OS セキュリティグループ
proxy-server Amazon Linux 2 public-sg
private-server Amazon Linux 2 private-sg

Squidの動作モードは、フォワードプロキシで行い、プライベートサブネット内のEC2のパッケージ更新は、Squidをインストールしたプロキシサーバーを中継して行う。

スクリーンショット 2019-09-12 12.34.18.png

プロキシサーバーの設定

proxy-server にSquid3.5をインストールする。

$ sudo yum install squid -y

自動起動を有効にする。

$ sudo systemctl enable squid

設定方法①

管理するサーバーの台数やサブネットの数が少ない場合は、Squidの設定ファイルに直接対象のIPアドレスまたはサブネットのCIDRを記述することがある。

Squidの設定ファイルを開く。

$ sudo vi /etc/squid/squid.conf

設定ファイルに、以下の設定を追加する。

ここでは、プライベートサブネットからのすべてのアクセスを許可する。

# 追加: プライベートサブネット用の変数を作成
acl private-subnet src <プライベートサブネットのCIDR>
# 追加: プライベートサブネットからのアクセス許可
http_access allow private-subnet

ポート番号の指定(デフォルトでは3128)

# Squid normally listens to port 3128
http_port 3128

設定完了後、サービスを再起動する。

$ sudo service squid restart

設定方法②

設定方法①とは異なり、サーバーの台数やサブネットの数が多い場合に管理をし易くするために、ホワイトリストという外部ファイルを用意する方法がある。

以下のファイルを作成する。

$ sudo vi /etc/squid/acl/whitelist.txt

プロキシを経由したいサーバーのプライベートIPアドレスまたは、サブネットのCIDRを記述する。

プライベートサブネットのCIDR
サーバーのプライベートIPアドレス
サーバーのプライベートIPアドレスその2
		・
		・

作成した外部ファイルを設定ファイルで読み込むように設定する。

$ sudo vi /etc/squid/squid.conf

以下の設定を追加する。

# 外部ファイルを読み込み、変数を生成
acl Whitelist dstdomain "/etc/squid/acl/Whitelist.txt"
# 外部ファイルに設定されたサーバー、サブネットからのアクセスを許可
http_access allow Whitelist
http_access deny all

設定完了後、サービスを再起動する。

$ sudo service squid restart

プライベートサーバーの設定

プロキシサーバーを経由して、アクセスするためにyumとwgetの設定ファイルにプロキシ設定を行う。

yumの設定

設定ファイルを開く。

$ sudo vi /etc/yum.conf

プロキシ設定を追加する。(ポート番号はSquidのデフォルト)

proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128

wgetの設定

設定ファイルを開く。

$ sudo vi /etc/wgetrc

プロキシ設定を追加する。(ポート番号はSquidのデフォルト)

http_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/
https_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/
ftp_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/

動作確認

プライベートサーバーでパッケージのインストールを行う。

$ sudo yum install vim

wgetの動作も確認する。

$ wget -pkK https://www.gnu.org/software/wget/

おまけ①:ログフォーマットの設定

プライベートサーバーからのアクセスがあると、プロキシサーバーにログが保存される。

$ sudo vi /var/log/squid/access.log

デフォルトの設定だと、アクセス時刻がわかりづらい。

1568267525.352   1183 xxx.xx.xx.xx TCP_TUNNEL/200 19161 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267525.946    591 xxx.xx.xx.xx TCP_TUNNEL/200 4197 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267526.558    610 xxx.xx.xx.xx TCP_TUNNEL/200 6509 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267527.168    609 xxx.xx.xx.xx TCP_TUNNEL/200 7403 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267527.919    748 xxx.xx.xx.xx TCP_TUNNEL/200 19351 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267528.520    600 xxx.xx.xx.xx TCP_TUNNEL/200 5569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267529.211    689 xxx.xx.xx.xx TCP_TUNNEL/200 11569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267529.817    603 xxx.xx.xx.xx TCP_TUNNEL/200 6385 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -

ログフォーマットの設定は、Squidの設定ファイルに追加する。

$ sudo vi /etc/squid/squid.conf

こちら を参考にログの設定を追加する。

logformat squid [%{%Y/%m/%d.%H:%M:%S}tl] %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt

追加したらサービスを再起動して、再度ログの出力確認をする。

$ sudo service squid restart
$ sudo cat /var/log/squid/access.log

ログフォーマットが変わっていることを確認する。

[2019/09/12.06:16:28] xxx.xx.xx.xx TCP_TUNNEL/200 19161 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:29] xxx.xx.xx.xx TCP_TUNNEL/200 4197 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:29] xxx.xx.xx.xx TCP_TUNNEL/200 6509 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:30] xxx.xx.xx.xx TCP_TUNNEL/200 7403 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:31] xxx.xx.xx.xx TCP_TUNNEL/200 19351 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:31] xxx.xx.xx.xx TCP_TUNNEL/200 5569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:32] xxx.xx.xx.xx TCP_TUNNEL/200 11569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:32] xxx.xx.xx.xx TCP_TUNNEL/200 6385 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -

おまけ②:リクエストヘッダーの設定

リクエストヘッダーに情報を載せたくない場合、設定で無効にできる。

設定ファイルを開く。

$ sudo vi /etc/squid/squid.conf

以下の設定を追加することで無効にできる。

request_header_access Referer deny all

おまけ③:Gitのプロキシ設定

以下のコマンドを実行する。

$ git config --global http.proxy http://<プロキシサーバーのプライベートIPアドレス>:3128
$ git config --global https.proxy http://<プロキシサーバーのプライベートIPアドレス>:3128

おまけ④:Curlのプロキシ設定

以下のコマンドを実行する。

$ echo 'proxy = "http://<プロキシサーバーのプライベートIPアドレス>:3128"' >> ~/.curlrc
11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?