-
Notifications
You must be signed in to change notification settings - Fork 0
AWS でいう VPC を作り、その中に private subnet を作成する #132
Comments
情報収集。
こちら http://naked123.hatenablog.com/entry/2015/12/21/142411 などを参考。 |
ネットワークとサブネットワークを↓こんなかんじで作ってみる。 gcloud compute --project "a-know-home" networks create "a-know-dogyard" --description "dog-yard for dog-fooding" --mode "custom"
gcloud compute --project "a-know-home" networks subnets create "public" --network "a-know-dogyard" --region "asia-east1" --range "10.0.100.0/24"
gcloud compute --project "a-know-home" networks subnets create "private" --network "a-know-dogyard" --region "asia-east1" --range "10.0.101.0/24" |
2つサブネットを作って、それぞれに「public」「private」という名前を付けてはいるけど、実質的にはどちらもまだ同じ設定。 |
プライベートサブネットについて、引用。
|
いろいろ見てみたけど、AWS ではサブネットごとにルートテーブルを指定できるのに対し、GCP ではネットワーク毎、な気がしてきた。 一度、さっき作ったネットワークを破棄する。 |
次はルートテーブル。まずは public の方。 public / private 関係なくアクセスできる必要があるので、
にしたい。 で、
だとすると、public の方のルートテーブルには何もしなくてよさそう。 |
続いて、それぞれのネットワークにひとつずつ、インスタンスを立ててみる。
|
うーん、しょっぱなからダメっぽい。やっぱり考え方が間違ってるかも。 AWS と GCP の比較のやつ https://cloud.google.com/docs/google-cloud-platform-for-aws-professionals を読み解くか。。 |
|
構築したいなと思ってるネットワークの体系って、Google でいう Legacy Network なのかも? |
まずは https://cloud.google.com/compute/docs/networking#natgateway これに従って、下記のようなコマンドを順番に発行し、ネットワーク・インスタンスを構築した。 $ gcloud compute networks create gce-network --range 10.240.0.0/16
$ gcloud compute firewall-rules create gce-network-allow-ssh --allow tcp:22 --network gce-network
$ gcloud compute firewall-rules create gce-network-allow-internal --allow tcp:1-65535;udp:1-65535;icmp \
--source-ranges 10.240.0.0/16 --network gce-network
$ gcloud compute instances create nat-gateway --network gce-network --can-ip-forward \
--zone asia-east1-b \
--image centos-7 \
--tags nat
$ gcloud compute instances create example-instance --network gce-network --no-address \
--zone asia-east1-b --image centos-7 --tags no-ip
$ gcloud compute routes create no-ip-internet-route --network gce-network \
--destination-range 0.0.0.0/0 \
--next-hop-instance nat-gateway \
--next-hop-instance-zone asia-east1-b \
--tags no-ip --priority 800 腑に落ちないまま作成したので、これでなんで欲するものができるのか整理する。 |
priority は小さいほうがより優先される。 |
わかってきたかも。 |
$ gcloud compute --project "a-know-home" networks create "a-know-home-network" --mode "custom"
$ gcloud compute --project "a-know-home" networks subnets create "home-subnet" --network "a-know-home-network" --region "asia-east1" --range "10.240.0.0/16"
$ gcloud compute firewall-rules create allow-ssh --allow tcp:22 --network a-know-home-network
$ gcloud compute firewall-rules create allow-internal --allow tcp:1-65535;udp:1-65535;icmp --source-ranges 10.240.0.0/16 --network a-know-home-network
$ gcloud compute --project "a-know-home" instances create "nat-gateway" --zone "asia-east1-a" --machine-type "f1-micro" --subnet "home-subnet" --metadata "ssh-keys=xxx" --can-ip-forward --maintenance-policy "MIGRATE" --image "/centos-cloud/centos-7-v20160329" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "nat-gateway" --no-scopes
$ gcloud compute --project "a-know-home" instances create "web" --zone "asia-east1-a" --machine-type "f1-micro" --subnet "home-subnet" --no-address --metadata "ssh-keys=xxx" --maintenance-policy "MIGRATE" --tags "no-ip" --image "/centos-cloud/centos-7-v20160329" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "web" --no-scopes
$ gcloud compute routes create no-ip-internet-route --network a-know-home-network \
--destination-range 0.0.0.0/0 \
--next-hop-instance nat-gateway \
--next-hop-instance-zone asia-east1-a \
--tags no-ip --priority 800 a-know@nat-gateway:~$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
a-know@nat-gateway:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ↑のコマンドの一部は、Web コンソールから生成されたものであるのにも関わらずそのままでは実行できないものがあるので注意。 |
別リポジトリ https://github.com/a-know/a-know-home-network を作成し、この issue までは実施した。 |
#87 の子 issue。
参考になりそうなところ
The text was updated successfully, but these errors were encountered: