1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI_プロキシサーバ構築

Posted at

OCI_プロキシサーバ構築

目的

OCIのプライベートサブネット内にあるWindowsServerのWindowsUpdateのみ許可したいという要件があったので、OCIでプロキシサーバを構築して、プライベートサブネットからプロキシサーバ経由でインターネットに接続する。構築する構成は以下の通り。

構成

スクリーンショット 2024-12-07 16.20.48.png

結論

  • 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ゲートウェイの作成画面で作成する。
image.png

2. ルート表を作成

ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[ルート表]リンクを選択し、[ルート表の作成]をクリックし、ルート表の作成画面で作成する。作成するルート表は以下の2つ。

  • NATGateWay用のルート表
    • 名前:rtb-NAT
    • ルート・ルール(オプション):設定なし(後で設定する)
  • プロキシサーバ配置用サブネットのルート表
    • 名前:rtb-sub1
    • ルート・ルール(オプション):設定なし(後で設定する)

3. セキュリティリストを作成

ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[セキュリティ・リスト]リンクを選択し、[セキュリティ・リストの作成]をクリックし、セキュリティ・リストの作成画面で作成する。

  • プロキシサーバ配置用サブネットのセキュリティリスト
    • 名前:sl-sub1
    • イングレスのルール許可:設定なし(後で設定する)
    • エグレスレスのルール許可:設定なし(後で設定する)

4. プロキシサーバ配置用サブネットの作成

ナビゲートメニューから[ネットワーキング] > [仮想クラウド・ネットワーク] > [仮想クラウド・ネットワークの詳細] のリソース欄の[サブネット]リンクを選択し、[サブネットの作成]をクリックし、サブネットの作成画面で作成する。
ルート表、セキュリティリストは、先に作成したものをアタッチする
image(1).png
image(2).png

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を指定できない。

  1. 作成したプロキシサーバのインスタンス詳細画面で[VINICの編集]をクリック
    image(3).png
  2. VINICの編集画面で[ソース/宛先チェックのスキップ]を選択し[変更の保存]をクリック
    image(4).png

7. 下記のルート表を変更

下記のとおり、各ルート表にルートルールを追加する。

  • NAT用ルート表
    • 名前:rtb-NAT
    • ルート・ルール
    • image(5).png
      • ターゲット・タイプ:プライベートIP
      • 宛先タイプ:CIDRブロック
      • 宛先CIDRブロック:10.0.1.0/24
      • ターゲット選択:作成したプロキシサーバのIP(10.0.1.4)
  • プロキシサーバ配置用サブネットのルート表
    • 名前:rtb-sub1
    • ルート・ルール]
      • ターゲット・タイプ:NATゲートウェイ
      • 宛先CIDRブロック:0.0.0.0/0
      • ターゲットNATゲートウェイ:作成済みのNATGateWayを指定

8. 下記のセキュリティリストを変更

  • プロキシサーバ配置用サブネットのセキュリティリスト
    • 名前:sl-sub1
    • イングレスのルール許可
      image(6).png
    • エグレスレスのルール許可:
      image(7).png

9. プロキシサーバのセットアップ

  1. squidをインストール
    sudo yum install squid -y
    
  2. squid設定ファイルのバックアップ
    sudo mv /etc/squid/squid.conf /etc/squid/squid.conf_bk
    
  3. 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
      
  4. 設定ファイルのテスト
    sudo squid -k parse
    
  5. squidの起動
    sudo systemctl restart squid
    sudo systemctl status squid
    
  6. 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. プロキシサーバの動作確認準備

  1. プロキシサーバでアクセスログを表示しておく
    sudo tail -f /var/log/squid/access.log
    

11. クライアントの設定と動作確認(Windows2022の場合)

  1. [Server Manager]を開く
    image(8).png

  2. Server Managerで[Local Server]を選択し、[Internet Explorer Enhanced Security Configuration]のリンクをクリックし、AdministratorsとUsersともに[Off]が設定されている事を確認する。設定されていない場合は変更する。
    image(9).png
    image(10).png

  3. Proxy設定画面で、プロキシサーバを手動設定する。
    image(11).png

  4. Windows Updateが可能か確認する。
    image(12).png

12. クライアントの設定と動作確認(Linuxの場合)

  1. クライアントの設定と動作確認
    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
      
  2. 許可されたサイトに接続できるか確認
    curl -I https://www.microsoft.com/
    
  3. 許可されていないサイトに接続できない事を確認
    curl -I https://www.yahoo.co.jp/
    
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?