web-dev-qa-db-ja.com

Google Compute Engine:外部IPのないインスタンスからインターネットにアクセスする際の問題

VPCネットワークに外部IPアドレスを持たないいくつかのインスタンスからいくつかのライブラリをインストールしようとしています。そのネットワーク上に外部IPアドレスを持っているインスタンスが1つあるため、IP転送ゲートウェイとして使用しようとしているインターネットアクセスがあります。

私は現在これを正しく設定したことを確認しようとしています:

  • (ファイアウォールルール)UDP、TCP、ICMPは、すべてのインスタンスのVPCネットワークで許可されています。各インスタンスが相互にpingを実行できることを確認してこれを確認し、nc -l <port>およびnc -v <ip> <port>シェナニガンを実行して、tcpを介してトンネルを開くことができることを確認します。
  • (VM作成、OS)ゲートウェイインスタンスは、IP転送を許可するように作成時に設定されています。また、Sudo sysctl -w net.ipv4.ip_forward=1を使用してOSレベルで有効になっています。
  • (ルート)「allow-internet-access」タグの宛先IPをルーティングする新しいルートが作成され、ネクストホップがゲートウェイインスタンスであることを指定します。 VPCネットワーク上の非ゲートウェイインスタンスには、そのタグが適用されています。

ただし、インターネットIPにはまだアクセスできません。コマンドSudo apt-get install default-jdkは次のエラーで失敗します:

E: Failed to fetch http://europe-west1.gce.archive.ubuntu.com/ubuntu/pool/main/libx/libxt/libxt-dev_1.1.5-0ubuntu1_AMD64.deb  Unable to connect to europe-west1.gce.archive.ubuntu.com:http: [IP: 35.205.79.146 80]

たとえ

  1. ゲートウェイインスタンスはそれにアクセスできます
  2. 内部インスタンスはゲートウェイにアクセスできます

インターネットアドレスにip route getを実行すると、デフォルトゲートウェイ(10.0.0.1)が提供されますが、そうではないため、OSレベルでのルーティングと関係がある可能性があると思います。新しいルートを追加することでこれが変更されたはずかどうか確認してください。 (ゲートウェイインスタンスのIPは10.0.0.5、内部インスタンスは10.0.0.3です)。

ip route get 35.205.79.146
35.195.141.26 via 10.0.0.1 dev ens4  src 10.0.0.3
    cache

さらにデバッグする方法についてのポインタをいただければ幸いです。

1
xdl

この特定の問題について、私はインスタンスベースのNATを設定するために、ここの指示に従ってしまいました: https://cloud.google.com/vpc/docs/special-configurations -インスタンスをa NATゲートウェイ。欠落していたステップはIPTables構成でした;これを追加した後、問題が修正されました。

他の人が示唆しているように、Cloud NAT=を使用することは、典型的なユースケースのGCPでこれを行うための最良/慣用的な方法であるかもしれません。

0
xdl

他のコメントで述べたように、IPアドレスのないインスタンスがインターネットに接続できるように、 Cloud NAT を使用する必要があります。クラウドNATをセットアップするには、手順を追って説明します ここ

2
Jason