VM インスタンスの特別な構成これ通りにNATゲートウェイを構築しようとして、ハマった箇所のメモ
実行したコマンドは以下の通り
開発環境なので、一部は手動でコマンドを置き換えています
# startup.sh取得
gsutil cp gs://nat-gw-template/startup.sh .
# インスタンステンプレート作成(nat-1)
gcloud compute instance-templates create nat-1 \
--image-family=centos-7 --tags natgw \
--image-project=centos-cloud \
--machine-type n1-standard-1 --can-ip-forward \
--metadata-from-file=startup-script=startup.sh --address グローバルIPアドレス1
# インスタンステンプレート作成(nat-2)
gcloud compute instance-templates create nat-2 \
--image-family=centos-7 --tags natgw \
--image-project=centos-cloud \
--machine-type n1-standard-1 --can-ip-forward \
--metadata-from-file=startup-script=startup.sh --address グローバルIPアドレス2
# ヘルスチェック作成
gcloud compute health-checks create http nat-health-check --check-interval 2 \
--timeout 1 \
--healthy-threshold 1 --unhealthy-threshold 2 --request-path /health-check
# インスタンスグループ作成(nat-1)
gcloud compute instance-groups managed create nat-1 \
--size=1 --template=nat-1 --zone=asia-northeast1-a
# インスタンスグループ作成(nat-2)
gcloud compute instance-groups managed create nat-2 \
--size=1 --template=nat-2 --zone=asia-northeast1-a
# ルート作成(nat-1)
gcloud compute routes create nat-1 --destination-range 0.0.0.0/0 \
--tags noip --priority 800 --next-hop-instance-zone asia-northeast1-a \
--next-hop-instance nat-1-5h46 \
--network=default
# ルート作成(nat-2)
gcloud compute routes create nat-2 --destination-range 0.0.0.0/0 \
--tags noip --priority 800 --next-hop-instance-zone asia-northeast1-a \
--next-hop-instance nat-2-r3kn \
--network=default
これで、ネットワークタグ「noip」を付けたインスタンスのルートがnat-1 / nat-2 を通って出て行くはず
while :; do sleep 1 ;date; curl httpbin.org/ip --connect-timeout 1 ; done
2018年 11月 12日 月曜日 18:50:03 JST
curl: (28) Connection timed out after 1005 milliseconds
2018年 11月 12日 月曜日 18:50:05 JST
curl: (28) Connection timed out after 1005 milliseconds
2018年 11月 12日 月曜日 18:50:07 JST
curl: (28) Connection timed out after 1005 milliseconds
ダメじゃん
内容を確認すると、startup.shに記載されている
echo 1 > /proc/sys/net/ipv4/ip_forward
が実行されていない。
何これ?何で?と思いつつ数時間調べたけど、結局原因わからない。
理由は分からないけど、startup.shに
#!/bin/bash
timedatectl set-timezone Asia/Tokyo (追加)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
したらecho 1 > /proc/sys/net/ipv4/ip_forwardも動くようになった。
改行コードか?
時間を無駄にした