ネットワーキング ユースケース用に VM を構成する
このページでは、ネットワーク プロキシとして VM を構成する方法について説明します。
VM をネットワーク プロキシとして構成する
VPC ネットワークを設計するとき、VPC ネットワーク内の 1 つのインスタンスだけが外部にアクセスし、他のインスタンスはすべてそのインスタンスをプロキシ サーバーとして外部にアクセスするように構成できます。これは、VPC ネットワークに出入りするアクセスを制御したり、複数の外部 IP アドレスにかかる費用を抑える場合に便利です。
この例では、Debian イメージを使用する VM インスタンスにネットワーク プロキシを設定する方法について説明します。ここでは、Squid プロキシ サーバーとしてゲートウェイ インスタンスを使用します。これはプロキシ サーバーを設定する唯一の方法です。
Squid プロキシ サーバーを設定するには:
- 外部(静的またはエフェメラル)IP アドレスを持つインスタンスを 1 つ設定します。この例では、インスタンスに
gateway-instance
という名前を付けます。gcloud compute instances create gateway-instance
--project=project_id
--zone=zone
--network-interface=network-tier=PREMIUM,subnet=default
--scopes=https://www.googleapis.com/auth/cloud-platform gcloud compute instances create ... --no-address
を指定して、外部 IP アドレスを持たないインスタンスを 1 つ以上設定します。この例では、このインスタンスhidden-instance
を呼び出します。gcloud compute instances create hidden-instance
--project=project_id
--zone=zone
--network-interface=network-tier=PREMIUM,subnet=default,no-address
--scopes=https://www.googleapis.com/auth/cloud-platform- 内部専用インスタンスには直接接続できないため、内部専用 VM の接続オプションを選択します。
次のように、ポート 3128 での tcp トラフィックを許可するファイアウォールを追加します。
gcloud compute firewall-rules create [FIREWALL_RULE] --network [NETWORK] --allow tcp:3128
gateway-instance
に Squid をインストールし、VPC ネットワーク上の任意(有効なサブネット IP アドレス)のマシンからのアクセスを許可するように構成します。これは、gateway-instance
とhidden-instance
の両方が同じ VPC ネットワークに接続されていて、相互に接続可能であることを前提としています。user@gateway-instance:~$ sudo apt-get install squid
ローカル ネットワーク上の任意のマシンが Squid サーバーを使用できるようにします。次の
sed
コマンドは、コメント化を解除し、ローカルのネットワークとマシン用の Squid 構成ファイル内にあるacl localnet src
エントリを有効にします。user@gateway-instance:~$ sudo sed -i 's:#\(http_access allow localnet\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(http_access deny to_localhost\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 10.0.0.0/8.*\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 172.16.0.0/12.*\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src 192.168.0.0/16.*\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fc00\:\:/7.*\):\1:' /etc/squid/squid.conf
user@gateway-instance:~$ sudo sed -i 's:#\(acl localnet src fe80\:\:/10.*\):\1:' /etc/squid/squid.conf
# Prevent proxy access to metadata server user@gateway-instance:~$ sudo tee -a /etc/squid/squid.conf <<'EOF' acl to_metadata dst 169.254.169.254 http_access deny to_metadata EOF
# Start Squid user@gateway:~$ sudo service squid start
gateway-instance
をプロキシとして使用するようにhidden-instance
を構成します。ssh を使用してhidden-instance
に接続し、次に示すように、プロキシ URL アドレスがポート 3128(Squid のデフォルトの構成)上のgateway-instance
を指すように定義します。user@gateway-instance:~$ ssh hidden-instance
user@hidden-instance:~$ sudo -s
root@hidden-instance:~# echo "export http_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
root@hidden-instance:~# echo "export https_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
root@hidden-instance:~# echo "export ftp_proxy=\"http://gateway-instance.$(dnsdomainname):3128\"" >> /etc/profile.d/proxy.sh
root@hidden-instance:~# echo "export no_proxy=169.254.169.254,metadata,metadata.google.internal" >> /etc/profile.d/proxy.sh
このような環境変数を通すように sudoers を更新します。
root@hidden-instance:~# cp /etc/sudoers /tmp/sudoers.new
root@hidden-instance:~# chmod 640 /tmp/sudoers.new
root@hidden-instance:~# echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy"\" >>/tmp/sudoers.new
root@hidden-instance:~# chmod 440 /tmp/sudoers.new
root@hidden-instance:~# visudo -c -f /tmp/sudoers.new && cp /tmp/sudoers.new /etc/sudoers
sudo
を終了し、変数をロードして、hidden-instance
でapt-get
を実行します。この操作はゲートウェイをプロキシとして使用することで正常に動作します。ゲートウェイがプロキシとして機能していない場合、hidden-instance
がインターネットに直接接続されないため、apt-get
は動作しません。root@hidden-instance:~# exit
user@hidden-instance:~$ source ~/.profile
user@hidden-instance:~$ sudo apt-get update
VM を VPN ゲートウェイとして構成する
このコンテンツは非推奨となり、削除されました。マネージド VPN ソリューションについては、Cloud VPN のドキュメントをご覧ください。
VM を NAT ゲートウェイとして構成する
このコンテンツは非推奨となり、削除されました。マネージド NAT ソリューションについては、Cloud NAT のドキュメントをご覧ください。
高可用性で高帯域幅の NAT ゲートウェイを構築する
このコンテンツは非推奨となり、削除されました。マネージド NAT ソリューションについては、Cloud NAT のドキュメントをご覧ください。
次のステップ
- VPC ネットワークについて確認する。VPC ネットワークをご覧ください。
- VPC ネットワークの作成、変更、削除について確認する。VPC ネットワークの作成と管理をご覧ください。