[AWS] 積年の夢の終焉...?:リージョン間VPN接続 (powered by VyOS 1.1.7)
プロローグ
[AWS] 積年の夢の実現:リージョン間VPN接続 (powered by SoftEther)
[AWS] 積年の夢の続き:リージョン間VPN接続 (powered by Windows Server 2012 R2)
と歩を進めてきた、三部作(勝手に後付け♪)のファイナルw VyOS編。
VyOSがSoftEther/Windowsより優れているのは、VPN Connection接続(下記【a】)もPeer-to-Peer接続(下記【b】)もMobileアプリからのL2TP/IPSec接続(下記【c】)も可能なこと(と思っている)。
⇒SoftEtherは【a】不可、Windowsはそりゃ頑張ればナンでもできるでしょうが。。
。。。と思っていたところ、VPN ConnectionでVyOS(Vyatta)用のconfigをDLできなくなった???一昔前はできたはず...(・・;)
⇒なんと、RegionによってVPNCがサポートしているルータが異なることを発見!!(VyOS(Vyatta)は、N.Virginiaにはあるが、N.Californiaにはない、といった具合)-
半面、VyOSのDisadvantageは、学習コストが(少なくともCCNAしか持っていないヲレには)高い、という点か。
※SoftEtherもWindowsも、自動化とか欲張らなければ、GUIでも設定可能- といいつつ、VyOSもLinuxベース(vbash?)なので、そこまではぢめまして感はなく。
- 「configure~commit/save」は、Cisco IOSの「configure terminal」と似ていると感じたよ。
- その後、VyOSも、接続するまでなら、
そんなに敷居が高くない(低くはない)ことを識る(いわゆる「知らないから怖い」&「食わず嫌い」)
⇒いや、やはりVyOSの敷居は高かった。。。CentOS等と似て非なり。Cisco IOSと非なりて似る。
構成オプション、どん!
VyOSは、様々なインストール方法・様々なVPN接続方法がある(♬そしてワタシはツブされる...(@_@))
VyOSインストール方法:
【1】 AWSのAMIを利用してEC2インスタンスとして作成
【2】 オンプレミスにVirtualBox上に仮想マシンとして作成
【3】 VirtualBox上のDockerホストにてDockerコンテナとして作成【Dockerでルータをコンテナ化してみた】)
【4】 あらゆるDockerホストにてDockerコンテナとして動作
⇒ そしてマルチクラウドへ。。。(【VyOSを使ってSoftLayerとAWSをIPSecVPN接続】)VPN接続方法:
【a】 AWSのCustomer Gateway(CGW)/VPC Connection(VPNC)/Virtual Private Gateway(VGW)を利用 [①/②/③]
【b】 VyOS同士の直接接続(Site-to-Site接続)[①]
【c】 Windows10やAndroidから接続(Point-to-Site接続) [①/②]
【1】AMIを利用してEC2インスタンスとして作成
- VyOS AMIのビルトインユーザは、「ec2-user」でなく「vyos」
- rootユーザにパスワードを設定。。。passwdコマンドではできない。。。!?【保留中】
-
ログインユーザ作成【保留中】
$ configure
# set system login user 《管理者ユーザ》 authentication plaintext-password 《管理者ユーザのパスワード》
# commit
# save
# exit
-
「vyos」の公開鍵を、《管理者ユーザ》にコピー【保留中】
$ sudo cp /home/vyos/.ssh/authorized_keys /home/《管理者ユーザ名》/.ssh/
-
ビルトインユーザ「vyos」削除※「vyos」以外のユーザでログインし直した上で ⇒【保留中】VyOSサーバを再起動したら、作成した管理者ユーザでSSHログインできなくなった (・・;)
$ configure
# delete system login user vyos
# commit
# save
# exit
- 2枚目のENI(Private側)にプライベートIPアドレスをアサイン
※EC2を作成するCloudFormationにおいて、Public側ENIをIndex0、Private側ENIをIndex1と指定済み
OR
※ENI 1枚挿しのEC2インスタンスを起動した後で、2枚目ENIを手動でAttach済み
$ configure
# set interfaces ethernet eth1 address '10.100.12.100/24'
# commit
# save
# exit
$ sudo ifconfig
《eth1にプライベートIPアドレス「10.100.12.100」が割り当たっていることを確認》
※ifconfigやroute等のNW系コマンドはrootでのみ実行可能
【1】を使ってAWS上で【a】でツナぐずら
(韓国(KR)のVyOSサーバと、USのVGWをVPN Connectionで接続)
-
【US】VyOSサーバ持つEIPを使って、CSGを作成
- BGPのAS番号を「65000」と指定
-
【US】VPCとVPNCを作成
- VPCのRouteTableにおいて「Propagated=yes」 ⇒KRへのルーティング情報が、VGW経由で、US側のRouteTableに動的に追加されるようになる!
【US】VPNCから「VyOS用config」をDL・・・少なくとも「N.Virginia」なら可能
-
【KR】「VyOS用config」の一部を手動で書き換え:
- local-address
- VyOSサーバのパブリック側のプライベートIPアドレス(10.100.11.100)に書き換え (NAT-Tを利用するため、EIPではなくてプライベートIPアドレスと理解)
- BGPのアドバタイズ情報
- 10.100.11.0/24, 10.100.12.0/24
- このBGPアドバタイズが中々できずにハマる。。。「10.100.12.0/24」をVyOSが認識していないためと推理(後述)
- local-address
-
【KR】「VyOS用config」を投入!!
- AWSからDLしたスクリプトを一部書き換え後に愚直に実行すると、BGPアドバタイズの行で「Already exists」のエラーが発生★ そりゃそうなので無視~
【KR】BGPアドバタイズ情報の追加
$ configure
# set protocols static route 10.100.12.0/24 next-hop 10.100.12.1
# set protocols bgp 65000 network 10.100.12.0/24
# commit
# save
# exit
【とっても素敵な参考情報】BGPアドバタイズするネットワーク設定の追加
-
【US】ルーティング情報の確認
- VGWのTunnel(2本)がUpしていることを確認
- KR側のVPCサブネットに関するルーティング情報が、BGPによって動的にUS側RouteTableに反映されていることを確認する。
【KR】疎通確認
①KR側のVyOSサーバからUS側にPingを送って確認
vyos@VyOS-AMI:~$ ping 172.16.12.200 interface 10.100.11.100
PING 172.16.12.200 (172.16.12.200) from 10.100.11.100 : 56(84) bytes of data.
64 bytes from 172.16.12.200: icmp_req=1 ttl=254 time=196 ms
64 bytes from 172.16.12.200: icmp_req=2 ttl=254 time=196 ms
64 bytes from 172.16.12.200: icmp_req=3 ttl=254 time=196 ms
・・・
⇒VyOS上の送信IF(Public側)を明示的に指定する必要がある模様
②KR側のプライベートEC2からUS側にPingを送って確認
ping 172.16.12.200
- 【US】疎通確認
- US側からKR側にPingを送って確認
【閑話休題】BGPアドバタイズでハマった考察
疎通できた後で振り返ってみれば単純なことだが、めっちゃハマったのは、BGPによる動的ルーティング情報交換。
VyOS EC2の2枚目のENIの(プライベート)IPアドレスが、いつの間にか外れていた...
⇒最初ifconfigで設定していたから、再起動中に消失?VyOS設定「set interfaces ethernet eth1 address~」なら永続的?VyOSサーバに対して、KR側プライベートサブネットへのStatic Routeが必要だった。
⇒これは...自力では思いつかない...
【再掲】BGPアドバタイズするネットワーク設定の追加BGPのルーティング情報伝達(コンバージェンス?)に、設定投入~環境反映の間のタイムラグがある?
⇒KR側のVyOSへのBGP設定投入後、US側のVGWからRouteTableへの伝達に少し時間がかかることを知らず、設定ミスだと思いこんでいた...
【2】オンプレミスのVirtualBox上に仮想マシンとして作成
VyOSは、一般的にはISOファイルで提供されているのか(AWSならAMIで提供)。
ISOファイルをDLし、VirtualBoxの起動時の「Optical Device」として指定してあげると、VyOSのインストールプロセス開始☆
(格闘中...)
【1】と【2】を【b】でツナぐもな
(オンプレミスのVirtualBox仮想マシンと、VyOS-EC2を、VyOS機能で直接通信)
【1】と【3】を【c】でツナぐだなも
(Windows10/Android端末と、VyOS-EC2を、IPSec/L2TPで通信)
エピローグ
AWSリージョン間接続について、SoftEther/Windows/VyOSをひととおりやってみた。
まだまだ試したいこと・課題はあるけど、ひとまずおなかいっぱい。
Author And Source
この問題について([AWS] 積年の夢の終焉...?:リージョン間VPN接続 (powered by VyOS 1.1.7)), 我々は、より多くの情報をここで見つけました https://qiita.com/coga2000/items/4555ef13cae70c69f677著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .