はじめに
本日は EC2 をプロキシサーバとして構築し、プライベートサブネット内のサーバからパブリックサブネットのプロキシサーバを経由してインターネットに接続してみようと思います。
使用するサービス
- Amazon EC2・・・AWS が提供するコンピューティングプラットフォーム
アーキテクチャ
パブリックサブネットにプロキシサーバ(Squid をインストール)、プライベートサブネットに DBサーバを置く構成にします。
Squid とは
プロキシサーバ、ウェブキャッシュサーバなどに利用されているオープンソースソフトウェア。本日はプロキシサーバとして使用します。
手順
1. ネットワーク・サーバ構築
以下のようにサブネット、ルートテーブルなどを作成しネットワーク・サーバを構築します。詳細は割愛しますが、ネットワーク・サーバ構築に関してはこちらの書籍がおすすめなのでぜひ読んでみてください。
<ルートテーブル>
ルートテーブル名 | 設定 |
---|---|
public-route-table | 10.0.0.0/16, 0.0.0.0/0 |
private-route-table | 10.0.0.0/16 |
<サブネット>
サブネット名 | ルートテーブル |
---|---|
public-subnet | public-route-table |
private-subnet | private-route-table |
<セキュリティグループ>
セキュリティグループ名 | インバウンドルール |
---|---|
public-security-group | ポート22,3128,80,443を許可(SSH,Squid,HTTP,HTTPSのポート) |
private-security-group | ポート22を許可(SSHのポート) |
<EC2>
ホスト名 | OS | セキュリティグループ |
---|---|---|
proxy-server | Amazon Linux 2 | public-security-group |
db-server | Amazon Linux 2 | private-security-group |
2. Squid のインストール
以下コマンドで Squid をインストールします。
sudo yum install squid -y
sudo systemctl enable squid
3. Squid の設定
squid.conf(Squid の設定ファイル)を開きます。
sudo vi /etc/squid/squid.conf
設定ファイルに以下を追加します。
acl private-subnet src 10.0.2.0/24 # ADD for private-subnet http_access allow private-subnet # ADD access from private-subnet
Squid を再起動をします。
sudo service squid restart
4. DBサーバからプロキシサーバを経由するための設定
yum と wget の設定ファイルにプロキシの設定をします(プロキシサーバを経由して、DBサーバから yum と wget でインターネットにアクセスするために)。
まずはDBサーバの秘密鍵ファイルをプロキシサーバにアップロードし、以下のようにDBサーバに SSH 接続します。
ssh -i <秘密鍵ファイル名> ec2-user@DBサーバのプライベートIPアドレス
yum の設定
yum.conf を開きます。
sudo vi /etc/yum.conf
プロキシ設定を追加します。(Squid が使うポートを設定します)
proxy=http://<プロキシサーバのプライベートIPアドレス>:3128
wget の設定
wget の設定ファイルを開きます。
sudo vi /etc/wgetrc
プロキシ設定を追加します。(Squid が使うポートを設定します)
http_proxy=http://<プロキシサーバのプライベートIPアドレス>:3128/ https_proxy=http://<プロキシサーバのプライベートIPアドレス>:3128/ ftp_proxy=http://<プロキシサーバのプライベートIPアドレス>:3128/
5. 動作確認
yum
MariaDB をインストールしてみます。
sudo yum -y install mariadb-server
インストールすることができました。
wget
以下のWebサイトをダウンロードしてみます。
wget https://www.hatena.ne.jp/
Webサイトのダウンロードできました。
さいごに
パブリックサブネットに NATゲートウェイを構築すれば同じことをもっと簡単にできたとは思いますが、今回は勉強のためにあえて EC2 をプロキシサーバとして構築してみました(やはり手を動かして何かを作るのは楽しいですね)。AWS認定ソリューションアーキテクト-プロフェッショナル合格に向けて今後も色々なサービスを楽しみながら使っていこうと思います。