もっと自由にネットワークを組みたい!! そうです。そうなんです。Azureのシステムルーターは自由に設定できないし、トランジット通信(マルチホップ)環境も構築できません。
今回は、Azure 上の各仮想ネットワーク上にVPNサーバーを構築し、拠点間通信が可能なハブ&スポーク構成に挑戦したいと思います。
この構成が組めるとルーティングを完全にコントロールできるので、トランジット通信どころかマルチホップ構成が組め、格段にネットワーク設計の自由度があがるでしょう!!
【今回の構成】
各仮想ネットワークにVPNサーバーを配置し、それぞれVPNを張ります。VNet01の仮想マシンからVNet03の仮想マシンに通信ができれば完成です。
※VNetピアリングだと、VNet02を飛び越えるような通信ができません。
それでは、VPNサーバー環境を構築して行きましょう!!
全体の流れ
Step1:Subnet-1をサーバー設置エリアとし、PIP無しの仮想マシンを作成します。
Step2:Subnet-2に、VPNサーバーとなる仮想マシンを作成します。
Step3:VPNサーバーのNICにて[IP転送]を有効にします。
Step4:Subnet-1に、デフォルトルートをVPNサーバーに向けたUDRを作成します。
※このStep1~4をVNet01,VNet02,VNet03で実施して下さい。
基本的な手順は「Azure上にルーターを構築する!!」と同様となりますので、今回は、Step2のVPNサーバー構築に絞りたいと思います。
Step2:Subnet-2に、VPNサーバーとなる仮想マシンを作成します。
※VNet02のVPNサーバーをハブ側(センター)ルーターとして構築していきます。
※ルーターサーバーの「PIP」を「静的」にします。
[Libreswanのインストール]
# yum install libreswan -y
# systemctl start ipsec
# systemctl enable ipsec
[鍵の生成]
# ipsec newhostkey –configdir /etc/ipsec.d \ –output /etc/ipsec.d/www.cloudou.net.secrets Generated RSA key pair using the NSS database
# ipsec showhostkey –left ←上記で作成した鍵を表示
~
leftrsasigkey=0sAQOsIwmzm4txMvi9…YPUE=
※全VPNサーバーで実行し、鍵をコピーしておいて下さい。
[VPN設定] ※各VPNサーバーにより内容が異なりますので、それぞれ設定して下さい。
※以下、VNet02のVPNサーバー設定
# vi /etc/ipsec.d/ipsec.conf
conn VPN01 ←VNet01~VNet02間のVPNを定義
left=10.11.0.5 ←VNet02_VPNサーバーのプライベートIP
leftid=@VPN02
leftsubnet=0.0.0.0/0 ←VNet02をデフォルトルートとする
leftrsasigkey=0sAQOsIwmzm4txMvi…YPUE= ←VNet02_VPNサーバーの鍵をペースト
#
right=52.175.146.179 ←VNet01_VPNサーバーのパブリックIP
rightid=@VPN01
rightsubnet=10.10.0.0/16 ←VNet01のアドレス空間
rightrsasigkey=0sAQOyo2h61lHbM4…OakOLz ←VNet01_VPNサーバーの鍵をペースト
#
auto=start
authby=rsasig
conn VPN03 ←VNet02~VNet03間のVPNを定義
left=10.11.0.5 ←VNet02_VPNサーバーのプライベートIP
leftid=@VPN02
leftsubnet=0.0.0.0/0 ←VNet02をデフォルトルートとする
lleftrsasigkey=0sAQOsIwmzm4txMvi…YPUE= ←VNet02_VPNサーバーの鍵をペースト
#
right=52.175.155.223 ←VNet03_VPNサーバーのパブリックIP
rightid=@VPN03
rightsubnet=10.12.0.0/16 ←VNet03のアドレス空間
rightrsasigkey=0sAQOrgp6NXC9…t+7zlLazc= ←VNet03_VPNサーバーの鍵をペースト
#
auto=start
authby=rsasig
※以下、VNet01のVPNサーバー設定
vi /etc/ipsec.d/ipsec.conf
conn VPN01 ←VNet01~VNet02間のVPNを定義
left=40.74.133.4 ←VNet02_VPNサーバーのパブリックIP
leftid=@VPN02
leftsubnet=0.0.0.0/0 ←VNet02をデフォルトルートとする
leftrsasigkey=0sAQOsIwmzm4txMvi…YPUE= ←VNet02_VPNサーバーの鍵をペースト
#
right=10.10.1.5 ←VNet01_VPNサーバーのプライベートIP
rightid=@VPN01
rightsubnet=10.10.0.0/16 ←VNet01のアドレス空間
rightrsasigkey=0sAQOyo2h61lHbM4…OakOLz ←VNet01_VPNサーバーの鍵をペースト
#
auto=start
authby=rsasig
conn passthrough
left=40.74.133.4 ←VNet02_VPNサーバーのパブリックIP
right=0.0.0.0
leftsubnet=10.10.0.0/16 ←VNet01のアドレス空間
rightsubnet=10.10.0.0/16 ←VNet01のアドレス空間
authby=never
type=passthrough
auto=route
※以下、VNet03のVPNサーバー設定
vi /etc/ipsec.d/ipsec.conf
conn VPN03 ←VNet02~VNet03間のVPNを定義
left=40.74.133.4 ←VNet02_VPNサーバーのパブリックIP
leftid=@VPN02
leftsubnet=0.0.0.0/0 ←VNet02をデフォルトルートとする
leftrsasigkey=0sAQOsIwmzm4txMvi…YPUE= ←VNet02_VPNサーバーの鍵をペースト
#
right=10.12.0.6 ←VNet03_VPNサーバーのプライベートIP
rightid=@VPN03
rightsubnet=10.12.0.0/16 ←VNet03のアドレス空間
rightrsasigkey=0sAQOyo2h61lHbM4…OakOLz ←VNet03_VPNサーバーの鍵をペースト
#
auto=start
authby=rsasig
conn passthrough
left=40.74.133.4 ←VNet02_VPNサーバーのパブリックIP
right=0.0.0.0
leftsubnet=10.12.0.0/16 ←VNet03のアドレス空間
rightsubnet=10.12.0.0/16 ←VNet03のアドレス空間
authby=never
type=passthrough
auto=route
[VPN設定の読み込み] ※全VPNサーバーにて実施
# systemctl restart ipsec
[VPN実行] ※VNet02_VPNサーバーにて実施
# ipsec auto –add VPN01
# ipsec auto –add VPN03
[IP Forwardを有効] ※全VPNサーバーにて実施
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 ←この一行を追記
# service network restart
以上で、VPNサーバーでの設定は終了です!!
続けてStep3,4を設定すると、拠点間通信が可能なハブ&スポーク構成の出来上がりです!
今回は、Azure と言うより、Libreswanの設定がメインになってしまいました。
自由度で言うと最強ですが、構築に手間がかかるのとVPNサーバーの運用が大変そうです。
VNetピアリング環境限定になりますが、拠点間通信が可能なハブ&スポーク構成が可能です。しかも、簡単に作成できます。