OCI_プロキシサーバ構築
目的
OCIのプライベートサブネット内にあるWindowsServerのWindowsUpdateのみ許可したいという要件があったので、OCIでプロキシサーバを構築して、プライベートサブネットからプロキシサーバ経由でインターネットに接続する。構築する構成は以下の通り。
構成
結論
- OCIのNetworkFierwallであればプロキシサーバと同等のURL制御などでき、「NetworkFierwall」+「NATGateWay」の構成の方がシンプルで良いが、利用料が高いため小規模な利用を想定する場合は、今回構築する「Proxyサーバ」+「NATGateWay」の構成が良いと思われる。
- Proxyサーバをパブリックサブネットに配置し、InternetGateWayでインターネットに接続する構成も検討したが、Proxyサーバが常に外部からのアクセスに晒されるため、プライベートサブネットに配置することにした。Internet GateWayの代わりにNAT GateWayでグローバルネットに接続することで、インターネットから開始されたインバウンド接続を受信しない。Windows Updateは基本的にクライアント側(Windows)からMicrosoftのサーバーへアウトバウンド通信を行うことで動作するので、NAT Gateway経由でもWindows Updateの通知や更新プログラムのダウンロードは可能。
構築手順
準備
- VCNは作成しておく。当ドキュメントにおいては下記のIP CIDRで作成した。
- 10.0.0.0/16
- Proxyサーバ経由でインターネットに接続するPrivate Subnet(構成図中の「10.0.2.0/24」)とクライアント端末となるWindowsServer2022(構成図中の「10.0.2.4」)を作成しておく。WindowsServer2022の代わりにOracleLinuxでも動作確認は可能。
1. NATGateWay作成
ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] の左のリソース欄の[NATゲートウェイ]リンクを選択し、[NATゲートウェイの作成]をクリックし、NATゲートウェイの作成画面で作成する。
2. ルート表を作成
ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[ルート表]リンクを選択し、[ルート表の作成]をクリックし、ルート表の作成画面で作成する。作成するルート表は以下の2つ。
- NATGateWay用のルート表
- 名前:rtb-NAT
- ルート・ルール(オプション):設定なし(後で設定する)
- プロキシサーバ配置用サブネットのルート表
- 名前:rtb-sub1
- ルート・ルール(オプション):設定なし(後で設定する)
3. セキュリティリストを作成
ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[セキュリティ・リスト]リンクを選択し、[セキュリティ・リストの作成]をクリックし、セキュリティ・リストの作成画面で作成する。
- プロキシサーバ配置用サブネットのセキュリティリスト
- 名前:sl-sub1
- イングレスのルール許可:設定なし(後で設定する)
- エグレスレスのルール許可:設定なし(後で設定する)
4. プロキシサーバ配置用サブネットの作成
ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[サブネット]リンクを選択し、[サブネットの作成]をクリックし、サブネットの作成画面で作成する。
ルート表、セキュリティリストは、先に作成したものをアタッチする
5. プロキシサーバ用インスタンス作成
ナビゲートメニューから[コンピュート] > [インスタンス] の[インスタンス作成]をクリックし作成する。
イメージやシェイプなどは、プロキシサーバの利用頻度、クライアント数などによるため適宜妥当なものを選択頂きたい。当ドキュメントにおいては以下の選択にした。
- 名前:proxy-1
- イメージ:Oracle Linux 8
- シェイプ:VM.Standard.E5.Flex
- 仮想マシン, 2 core OCPU, 12.5% burstable baseline, 3 GB memory, 1 Gbps network bandwidth
- サブネット:10.0.1.0/24(プロキシサーバ配置用サブネット)
- プライマリVNIC IPアドレス:
- [プライベートIPv4アドレスの手動割当て]を選択
- IPv4アドレス:10.0.1.4
6. プロキシサーバインスタンスのVNICを編集
※重要:この設定を行わないとルート表のルートルールでプロキシサーバのIPを指定できない。
7. 下記のルート表を変更
下記のとおり、各ルート表にルートルールを追加する。
- NAT用ルート表
- プロキシサーバ配置用サブネットのルート表
- 名前:rtb-sub1
- ルート・ルール]
- ターゲット・タイプ:NATゲートウェイ
- 宛先CIDRブロック:0.0.0.0/0
- ターゲットNATゲートウェイ:作成済みのNATGateWayを指定
8. 下記のセキュリティリストを変更
9. プロキシサーバのセットアップ
- squidをインストール
sudo yum install squid -y
- squid設定ファイルのバックアップ
sudo mv /etc/squid/squid.conf /etc/squid/squid.conf_bk
- squid設定ファイルを新たに作成
sudo vi /etc/squid/squid.conf
- 以下の内容を追記
# Define the network allowed to access the proxy acl allowed_network src 10.0.0.0/16 # Define the list of domains used for Windows Update acl windows_update dstdomain .windowsupdate.com acl windows_update dstdomain .microsoft.com acl windows_update dstdomain .windows.com acl windows_update dstdomain .msft.net # Define the allowed ports for HTTP and HTTPS acl Safe_ports port 80 # HTTP port acl Safe_ports port 443 # HTTPS port acl CONNECT method CONNECT # Allow CONNECT method for HTTPS # Deny requests to any ports that are not considered "Safe_ports" http_access deny !Safe_ports # Deny HTTPS (CONNECT method) to any port except Safe_ports (80 and 443) http_access deny CONNECT !Safe_ports # Allow access to Windows Update domains from the allowed network http_access allow allowed_network windows_update # Allow local system (localhost) to access the proxy http_access allow localhost # Deny all other requests that do not match the above rules http_access deny all # The port Squid will listen on for incoming connections http_port 3128 # Suppress version information in HTTP headers to avoid exposing Squid version httpd_suppress_version_string on # Define the hostname that will appear in proxy-related error messages visible_hostname proxy-server
- 以下の内容を追記
- 設定ファイルのテスト
sudo squid -k parse
- squidの起動
sudo systemctl restart squid sudo systemctl status squid
- firewallルールの編集
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=3128:toaddr=10.0.1.4 sudo firewall-cmd --permanent --zone=public --add-port=3128/tcp sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --complete-reload
10. プロキシサーバの動作確認準備
- プロキシサーバでアクセスログを表示しておく
sudo tail -f /var/log/squid/access.log
11. クライアントの設定と動作確認(Windows2022の場合)
-
Server Managerで[Local Server]を選択し、[Internet Explorer Enhanced Security Configuration]のリンクをクリックし、AdministratorsとUsersともに[Off]が設定されている事を確認する。設定されていない場合は変更する。
12. クライアントの設定と動作確認(Linuxの場合)
- クライアントの設定と動作確認
sudo vi /etc/profile
- 以下の内容を追記
MY_PROXY_SRV="http://10.0.1.4:3128/" HTTPS_PROXY=$MY_PROXY_SRV https_proxy=$MY_PROXY_SRV export HTTPS_PROXY https_proxy
- 設定を反映
source /etc/profile
- 以下の内容を追記
- 許可されたサイトに接続できるか確認
curl -I https://www.microsoft.com/
- 許可されていないサイトに接続できない事を確認
curl -I https://www.yahoo.co.jp/