O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

「Photon OS + Docker」VLAN 環境の構築

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 15 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a 「Photon OS + Docker」VLAN 環境の構築 (20)

Anúncio

Mais recentes (20)

「Photon OS + Docker」VLAN 環境の構築

  1. 1. Photon OS + Docker VLAN 環境の構築 株式会社フーバーブレイン 事業開発室 1 2021年1月21日
  2. 2. ネットワーク概要 eth0 eth1 eth1.20 eth1.30 vm-photon01 192.168.9.105 10.10.10.105 10.10.20.105 10.10.30.105 3.0 cato-default cato-vlan20 cato-vlan30 Trunk Default VLAN 10.10.10.0/24 VLAN ID 20 VLAN ID 30 10.10.30.0/24 10.10.20.0/24 LAN1 WAN1 Cato Cloud SD-WAN 10.0.0.0/8 コンテナ コンテナ コンテナ .1 Cato Cloud について、詳しくはこちらをご覧 ください。 https://cato.fuva-brain.jp インターネット接続用 ルータ Cato Socket 192.168.9.0/24 SD-WAN を含む SASE(Secure Access Service Edge)の検証にはたくさんの端末が必要です。 そこで、ESXi7 で、Photon OS + Docker を使うことにしました。 実際は eth1 を利用 | 2
  3. 3. 仮想環境 | 3 ESXi7 を使用しています。 仮想スイッチ vSwitchCato に4つのポートグループ を設定しています。ポートグループを ID:4095 とす ると Trunk(tagged)として使用できます。 ESXi7 vSwitch0 (外部に接続) vSwitchCato (vSocket を通して、SD-WAN に接続) 仮想スイッチ VM Network ポート グループ Cato Trunk ID: 4095 Cato Default ID: 0 Cato VLAN20 ID: 20 Cato VLAN30 ID: 30 vSocket vm-phton01 仮想マシン OVA-hw13_uefi をインストールしました。 https://github.com/vmware/photon/wiki/Downloading-Photon-OS
  4. 4. 準備・1 仮想スイッチの設定 これをしておかないと、タグ VLANがうまく動作しません。 タグ VLAN を使用する仮想スイッチのセキュリティ設定を変更をしましょう。 これに気付かず「Photon OS 側で eth1.20, 30 を設定しても上手く行かない…」ということが ありました。 | 4
  5. 5. 準備・2 仮想マシンの設定 | 5 アダプタタイプは「VMXNET 3」です。 E1000e だと、タグ VLAN 接続に失敗する ことがある様です。 ネットワークアダプタを追加した後に、起動して $ ip a などを行い eth0, 1 の MAC アドレスを 確認しておきましょう。間違った状態で IP アドレスを設定して「え?」と、なりません様に。
  6. 6. 1. Photon OS の設定 VLAN を設定します。 | 6 # ファイル名 NIC IPアドレス / 備考 1 01-static-eth0.network eth0 192.168.9.105/24 2 10-cato-default.network eth1 10.10.10.105/24 3 20-eth1.20.network eth1.20 10.10.20.105/24 4 30-eth1.30.network eth1.30 10.10.30.105/24 5 eth1.20.netdev eth1.20 NICの設定ファイル 6 eth1.30.netdev eth1.30 /etc/systemd/network/
  7. 7. vSocket 10.10.10.1 Default Gateway 192.168.9.1 1-1. eth1の設定 | 7 [Match] Name=eth1 [Network] Address=10.10.10.105/24 VLAN=eth1.20 VLAN=eth1.30 [Route] Gateway=10.10.10.1 Table=110 [RoutingPolicyRule] From=10.10.10.0/24 Table=110 Priority=1100 [RoutingPolicyRule] To=10.0.0.0/8 Table=110 Priority=9999 ① ② ③ ④ タグ VLAN と PBR(ポリシーベースルーティン グ)の設定を行います。 Linux はデフォルトゲートウェイを1つしか設定で きないため、この様なケースでは PBR を使用する ときには PBR の設定をしておくと良いです。 ゲートウェイを追加 宛先が 10.0.0.0/8(SD-WAN)なら デフォルトゲートウェイではなく② を使用します。 /etc/systemd/network/10-cato-default.network この NIC から発信をするときには、 常に ② をゲートウェイとして使用し ます。 Priority は小さい方が優先されます。 10.41.8.128/24 10.10.10.105/24 ②が無いと、デフォルトゲー トウェイで返そうとする。 ping 10.10.10.105 非対称ルーティング ②:正しいゲートウェイ 応答 VLAN ID 20, 30 の NIC を設定
  8. 8. 1-2. ネットワークインターフェースの追加 | 8 eth1.20.netdev eth1.30.netdev [NetDev] Name=eth1.20 Kind=vlan [VLAN] Id=20 [NetDev] Name=eth1.30 Kind=vlan [VLAN] Id=30 20-eth1.20.network 30-eth1.20.network [Match] Name=eth1.20 [Network] Address=10.10.20.105/24 [Route] Gateway=10.10.20.1 Table=120 [RoutingPolicyRule] From=10.10.20.0/24 Table=120 Priority=1200 [Match] Name=eth1.30 [Network] Address=10.10.30.105/24 [Route] Gateway=10.10.30.1 Table=130 [RoutingPolicyRule] From=10.10.30.0/24 Table=130 Priority=1300 1-1 で「VLAN=eth1.20」の様に記述した NIC を追加します。 そして、追加した NIC に対応するネットワークを設定します。ここでも、PBR の設定をしておきましょう。 対象の NIC から発信するときに「各 VLAN 用のゲートウェイ」を使用します。 /etc/systemd/network/ NIC を追加 NIC のネットワーク設定
  9. 9. 1-3. 確認(1) | 9 ① まず最初に設定を反映します。 # systemctl restart systemd-networkd ② 設定した NIC を確認します。 # ip -4 a … 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 10.10.10.105/24 brd 10.10.10.255 scope global eth1 valid_lft forever preferred_lft forever 4: eth1.20@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 inet 10.10.20.105/24 brd 10.10.20.255 scope global eth1.20 valid_lft forever preferred_lft forever 5: eth1.30@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 inet 10.10.30.105/24 brd 10.10.30.255 scope global eth1.30 valid_lft forever preferred_lft forever … ③ PBR についても確認しておきましょう。 # ip rule show 0: from all lookup local 1100: from 10.10.10.0/24 lookup 110 1200: from 10.10.20.0/24 lookup 120 1300: from 10.10.30.0/24 lookup 130 9999: from all to 10.0.0.0 /8 lookup 110 32766: from all lookup main 32767: from all lookup default # ip route show default via 192.168.9.1 dev eth0 proto static 10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.105 10.10.20.0/24 dev eth1.20 proto kernel scope link src 10.10.20.105 10.10.30.0/24 dev eth1.30 proto kernel scope link src 10.10.30.105 192.168.9.0/24 dev eth0 proto kernel scope link src 192.168.9.105 … # ip route show table 110 default via 10.10.10.1 dev eth1 proto static # ip route show table 120 default via 10.10.20.1 dev eth1.20 proto static # ip route show table 130 default via 10.10.30.1 dev eth1.30 proto static
  10. 10. 1-4. 確認(2) 外部との疎通を確認します。私の場合は SD-WAN に接続したモバイルクライアントを利用しました。 各 VLAN の他のクライアントを利用しても良いですね。 10.41.217.218/32 Cato Client vm-phton01 ping # iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 疎通試験の前に iptables で vm-photons01 の ping を許可しておきます。 標準ではブロックされてしまいます(はまりました…)。 $ ping -c 1 10.10.10.105 PING 10.10.10.105 (10.10.10.105) 56(84) bytes of data.64 bytes from 10.10.10.105: icmp_seq=1 ttl=64 time=37.4 ms $ ping -c 1 10.10.20.105 PING 10.10.20.105 (10.10.20.105) 56(84) bytes of data.64 bytes from 10.10.20.105: icmp_seq=1 ttl=64 time=38.5 ms $ ping -c 1 10.10.30.105 PING 10.10.30.105 (10.10.30.105) 56(84) bytes of data.64 bytes from 10.10.30.105: icmp_seq=1 ttl=64 time=38.9 ms 10.41.217.218/32 Cato Client vm-phton01 ping $ ping -c 1 10.41.217.218 PING 10.41.217.218 (10.41.147.16) 56(84) bytes of data. 64 bytes from 10.41.147.16: icmp_seq=1 ttl=64 time=54.1 ms | 10
  11. 11. 2. Docker の設定 各 VLAN 用のブリッジを作ります。また、コンテナに固 定 IP アドレスを設定して、外部からアクセスします。 | 11
  12. 12. 2-1. ブリッジの作成 eth0 eth1 eth1.20 eth1.30 vm-photon01 192.168.9.105 10.10.10.105 10.10.20.105 10.10.30.105 3.0 cato-default cato-vlan20 cato-vlan30 コンテナ コンテナ コンテナ 左の図に示した構成を作りたいです。NIC の設定はできましたので、 次はブリッジです。 cato-default, cato-vlan20, cato-vlan30 の3つを追加する前に、 標準の構成がどの様にになっているか見てみましょう。 # docker -v Docker version 19.03.10, build 9424aea # docker network ls NETWORK ID NAME DRIVER SCOPE b156ad1c7bc3 bridge bridge local 0184dfd68604 host host local b741a5d8bdbf none null local | 12
  13. 13. 2-2. ブリッジの追加 cato-default docker network create -d macvlan ¥ --subnet=10.10.10.0/24 ¥ --gateway=10.10.10.1 ¥ -o parent=eth1 ¥ cato-default cato-vlan20 docker network create -d macvlan ¥ --subnet=10.10.20.0/24 ¥ --gateway=10.10.20.1 ¥ -o parent=eth1.20 ¥ cato-vlan20 cato-vlan30 docker network create -d macvlan ¥ --subnet=10.10.30.0/24 ¥ --gateway=10.10.30.1 ¥ -o parent=eth1.30 ¥ cato-vlan30 # docker network ls NETWORK ID NAME DRIVER SCOPE b156ad1c7bc3 bridge bridge local fee96a4229cd cato-default macvlan local cf1cff48ff11 cato-vlan20 macvlan local 4dfce17b5347 cato-vlan30 macvlan local 0184dfd68604 host host local b741a5d8bdbf none null local VLAN 用のブリッジ追加は下表の様にします。 ① ブリッジを追加したら、確認をしましょう。 # docker run --rm --net=cato-default alpine ping -c 1 10.10.10.1 PING 10.10.10.1 (10.10.10.1): 56 data bytes 64 bytes from 10.10.10.1: seq=0 ttl=90 time=0.344 ms # docker run --rm --net=cato-vlan20 alpine ping -c 1 10.10.20.1 PING 10.10.20.1 (10.10.20.1): 56 data bytes 64 bytes from 10.10.20.1: seq=0 ttl=90 time=0.340 m # docker run --rm --net=cato-vlan30 alpine ping -c 1 10.10.30.1 PING 10.10.30.1 (10.10.30.1): 56 data bytes 64 bytes from 10.10.30.1: seq=0 ttl=90 time=0.292 m ② コンテナからの ping で動作確認 | 13
  14. 14. 2-3. 固定 IP アドレスのコンテナを起動 # docker run -itd ¥ --net=cato-vlan20 ¥ --ip=10.10.20.202 ¥ --name c20-202 ¥ debian では、実際に固定 IP アドレスのコンテナを起動します。 ① Debian のコンテナを1つ起動してみます。 ② コンテナの bash を起動して、IP アドレスを見てみます。 # docker exec -it c20-202 /bin/bash /# ip a … 239: eth0@if4: … inet 10.10.20.202/24 brd 10.10.20.255 scope global eth0 … /# ip r default via 10.10.20.1 dev eth0 10.10.20.0/24 dev eth0 proto kernel scope link src 10.10.20.202 ③ 外部に向けて ping をうってみます。 ← 使用する VLAN 用のブリッジ ← 固定 IP アドレス /# ping -c 3 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=121 time=53.2 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=121 time=55.7 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=121 time=47.6 ms 完了です! ④ 後片付け /# exit # docker stop c20-202 # docker rm c20-202 | 14
  15. 15. は「 の 」( )を する「 」( )をめ し、 す てのお 様に で 使い すく 用で き すい と ー スを します。 株式会社フーバーブレイン https://www.fuva-brain.co.jp Cato Cloud https://cato.fuva-brain.jp 事業開発室 取扱サービス 生産性の向上支援 Ey “247” https://www.eye247.jp

×