🦑
Amazon Linux 2023でプロキシサーバーを構築する Squid
はじめに
業務内でEC2プロキシサーバーを構築する機会があったので備忘録として。
目標としてパブリックサブネットにプロキシサーバー、プライベートサブネットにユーザーサーバーを構築しユーザーサーバーからインターネットに接続できるのを確認します。
構築
前準備
EC2インスタンスを立ち上げる前にVPCやセキュリティグループを準備します。
VPC
パブリックサブネットとプライベートサブネットを持つVPCを構築します。
セキュリティグループ
プロキシサーバーがユーザーサーバーからプロキシ通信を受けれるように
インバウンドエンドポイントで3128を許可するセキュリティグループを準備します。
ユーザーサーバーにはSSHで接続するのでVPC内からSSH接続を許可するSGを作成します。
IAMロール
今回はプロキシサーバーに対してSSMで接続するので
IAMポリシー『AmazonSSMManagedInstanceCore』をアタッチしたIAMロールを作成します。
プロキシサーバー構築
EC2インスタンス
プロキシサーバーとなるEC2インスタンスを以下の要件で作成します。
- AMI:Amazon Linux 2023
- インスタンスタイプ:t3.micro
- サブネット:パブリックサブネットを選択
- パブリックIPの自動割り当て:有効化
- セキュリティグループ:前準備で作成したProxy-SGを選択
- インスタンスプロフィール:前準備で作成したIAMロールを選択
プロキシ設定
プロキシ設定手順①
# 最新化
sudo dnf update -y
# Squidインストール
sudo dnf install squid -y
# Squid設定ファイルを編集
sudo vi /etc/squid/squid.conf
/etc/squid/squid.conf
# ファイル先頭に追加
acl localnet src 10.0.0.0/16
http_access allow localnet
#
# Recommended minimum configuration:
#
# 以下省略 ###################
プロキシ設定手順②
# Squid起動
sudo systemctl enable squid
sudo systemctl start squid
sudo systemctl status squid
ユーザーサーバー構築
今回のユーザーサーバーにはプロキシサーバーからパスワードでログインできるようにします。
プライベートサブネットにSSMで接続する場合は下記を参考にしてください。
- AMI:Amazon Linux 2023
- インスタンスタイプ:t3.micro
- サブネット:プライベートサブネットを選択
- セキュリティグループ:前準備で作成したSSH-SGを選択
- ユーザーデータ:下記参照
ユーザーデータ
#!/bin/bash
# ==== 新ユーザー作成 ====
useradd User01
echo "User01:Admin" | chpasswd
# ==== sudo 権限付与 ====
usermod -aG wheel User01
# ==== SSHパスワード認証を有効化 ====
sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#\?ChallengeResponseAuthentication .*/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config
# ==== SSH再起動 ====
systemctl restart sshd
起動後、プロキシサーバーにSSMしている状態からSSHで接続します。
ssh User01@<ユーザーサーバーのプライベートIP>
# パスワード入力を求められます。上記ユーザーデータの場合はAdminになっています。
ユーザーサーバー設定
# プロキシ設定
sudo vi /etc/profile.d/proxy.sh
# 以下内容を記載
export http_proxy="http://<プロキシサーバーのプライベートIP>:3128"
export https_proxy="http://<プロキシサーバーのプライベートIP>:3128"
export no_proxy="127.0.0.1,localhost"
# dnfコマンドのプロキシ設定
sudo vi /etc/dnf/dnf.conf
# ファイルの末尾に追記
proxy=http://<プロキシサーバーのプライベートIP>:3128
# 設定の反映
source /etc/profile.d/proxy.sh
動作確認
ユーザーサーバーから
- 外部のウェブサイトを表示できること
- dnfコマンドでパッケージをダウンロードできること
を確認します。
# 適当なウェブサイトを表示させる(ステータス200が返れば成功)
curl -I https://zenn.dev/
# dnfコマンドを使ったインストール確認
sudo dnf update -y
sudo dnf install httpd -y
おわり
今回はAmazon Linux 2023でプロキシサーバーを構築しました。
今後はVPC等の作成も含めてCDK等で簡素化させていきたいところです。
最後までお読みいただきありがとうございました。
Discussion