この記事は、ニフクラブログで2015-08-12に公開された記事を移転したものです。
こんにちは。まほろば工房の浅間です。
今回は応用編その 2 です。全 10 回におよぶ VPN ゲートウェイを使ったニフクラとオンプレ接続についての記事は、今回でいったん完了です。
前回は IPsec VPN(L3 VPN) を使って複数リージョン・複数オンプレでの VPN 構築をしてみました。
前回の構成でも東西リージョンを使った耐障害性の高いサーバ運用はできると思うのですが、東西でプライベート LAN のアドレス帯が異なる(たとえば前回の例では東日本リージョンのサーバは 172.16.1.0/24 で西日本リージョンのサーバは 172.16.2.0/24)ため、なにかあった際の切り替えは結構面倒かもしれません(たとえば社内 DNS サーバを運用されているのであれば DNS 情報を切り替えるとか?)。
今回紹介する構成は東西を L2TPv3/IPsec VPN(L2 VPN) で接続してしまってそれをオンプレと繋いじゃおうというものです。絵に描くとこんな感じです。
東西のサーバが同じ 192.168.1.0/24 に接続されているので IP エイリアスを使ったフローティング IP アドレスを使うことで東西においた 2 台のサーバで冗長構成を実現できるんじゃないか、フローティング IP アドレスが使えればクライアント側が(DNS とかを使わず)IP アドレスを直接指定しているような状況でもなにかあったときにバックアップ機に切り替えれるんじゃないか、という構成です。
YAMAHA RTX1210 は東日本リージョンの VPN ゲートウェイと西日本リージョンの VPN ゲートウェイのそれぞれに IPsec VPN 接続するわけですが、通常は東日本リージョンの VPN ゲートウェイにルーティングし、東日本リージョンの VPN ゲートウェイになんらかの問題が生じた際に自動的に西日本リージョンの VPN ゲートウェイにルーティングが切り替わるような設定も考えてみました。
- 東日本リージョンの VPN ゲートウェイの設定
- 西日本リージョンの VPN ゲートウェイの設定
- 東日本リージョンの VPN ゲートウェイの設定(再)
- 西日本リージョンの VPN ゲートウェイの設定(再)
- 東日本リージョンの VPN ゲートウェイの設定(再々)
- 西日本リージョンの VPN ゲートウェイの設定(再々)
- YAMAHA RTX1210 の設定
- まとめ
東日本リージョンの VPN ゲートウェイの設定
まずは L2TPv3/IPsec VPN(L2 VPN) で東西リージョンを接続します。この作業は “東西リージョン間 L2TPv3/IPsec VPN(L2 VPN)” とほぼ一緒なので詳しくはこちらを参照してください。
西日本リージョンの VPN ゲートウェイの設定
東日本リージョンの VPN ゲートウェイの設定(再)
西日本リージョンの VPN ゲートウェイの設定(再)
東日本リージョンの VPN ゲートウェイの設定(再々)
東日本リージョンの VPN ゲートウェイに YAMAHA RTX1210 との VPN コネクション(IPsec VPN) の設定をします。この作業は “YAMAHA RTX1210 で単一拠点 IPsec VPN(L3 VPN)” とほぼ一緒なので詳しくはこちらを参照してください。
西日本リージョンの VPN ゲートウェイの設定(再々)
西日本リージョンの VPN ゲートウェイにも YAMAHA RTX1210 との VPN コネクション(IPsec VPN) の設定をします。こちらも “YAMAHA RTX1210 で単一拠点 IPsec VPN(L3 VPN)” とほぼ一緒です。
YAMAHA RTX1210 の設定
YAMAHA RTX1210 側の設定はちょっと工夫が必要です。東日本リージョンの VPN ゲートウェイと西日本リージョンの VPN ゲートウェイの 2 つの VPN ゲートウェイと IPsec VPN(L3 VPN) の接続をするわけですが、宛先ネットワークはどちらも同じ 172.16.1.0/24 なので単純には設定できません。
今回は以下のようなルーティング設定をしてみました。
ip route 172.16.1.0/24 gateway tunnel 1 metric 1 hide gateway tunnel 2 metric 2
ちなみに tunnel 1 が東日本リージョンの VPN ゲートウェイとの接続で、tunnel 2 が西日本リージョンの VPN ゲートウェイとの接続になります。上記のようにルーティングを設定すると tunnel 1(東日本リージョンとの VPN 接続) が生きているときは tunnel 1 を使い、死んでいるときは tunnel 2 を使うようになります。
オンプレ(192.168.1.0/24)からニフティクラウド(172.16.1.0/24)へのパケットは上記の通り東日本リージョンの VPN ゲートウェイとの VPN 接続が生きている限り東日本リージョンの VPN ゲートウェイ経由になるのですが、逆にニフティクラウド(172.16.1.0/24)からオンプレ(192.168.1.0/24)へのパケットはどうなるのでしょうか。じつはサーバからみてどちらか近い方の VPN ゲートウェイからの VPN トンネルを通って YAMAHA RTX1210 へ届く感じになります。
VPN ゲートウェイにはプライベート LAN のネットワークアドレス + 1 のアドレス(たとえばプライベート LAN の IP アドレス帯が 172.16.1.0/24 の場合 172.16.1.1)が自動的に設定されます。今回の構成では東日本リージョンの VPN ゲートウェイと西日本リージョンの VPN ゲートウェイの両方にまったく同じプライベート LAN の IP アドレス帯を設定しています。ということは東日本の VPN ゲートウェイと西日本の VPN ゲートウェイの両方が 172.16.1.1 という同じ IP アドレスを持っている感じになっています。つまり IP アドレスの重複が起きているような状態です。ではどちらの 172.16.1.1 が使われるかというと ARP で先に応答を受信した方になるので、通常は近い方(東日本リージョンのサーバなら東日本リージョンの VPN ゲートウェイ)が勝つようです。なので東日本リージョンのサーバからのパケットは東日本リージョンの VPN ゲートウェイ経由で YAMAHA RTX1210 にパケットが転送され、西日本リージョンのサーバからのパケットは西日本リージョンの VPN ゲートウェイ経由で YAMAHA RTX1210 にパケットが転送されるような感じになります。ただし ARP で必ず近い方が勝つという保証があるわけではないので、もしかしたら東日本リージョンのサーバから西日本リージョンの VPN ゲートウェイを経由して YAMAHA RTX1210 へ転送されるようなケースもないわけではありません。
参考までに YAMAHA RTX1210 の全設定を貼り付けておきます。
ip route default gateway pp 1
ip route 172.16.1.0/24 gateway tunnel 1 metric 1 hide gateway tunnel 2 metric 2
ip lan1 address 192.168.1.1/24
ip lan2 nat descriptor 1
pp select 1
pppoe use lan2
pp auth accept pap chap
pp auth myname xxx@yyy zzz
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp mtu 1454
ip pp nat descriptor 1
pp enable 1
tunnel select 1
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 1 3600
ipsec ike duration ike-sa 1 28800
ipsec ike encryption 1 aes-cbc
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike keepalive use 1 on dpd
ipsec ike local address 1 192.168.1.1
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ipsec ike remote address 1 198.51.100.123
tunnel enable 1
tunnel select 2
ipsec tunnel 102
ipsec sa policy 102 2 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 2 3600
ipsec ike duration ike-sa 2 28800
ipsec ike encryption 2 aes-cbc
ipsec ike group 2 modp1024
ipsec ike hash 2 sha
ipsec ike keepalive use 2 on dpd
ipsec ike local address 2 192.168.1.1
ipsec ike pfs 2 on
ipsec ike pre-shared-key 2 text xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ipsec ike remote address 2 198.51.100.234
tunnel enable 2
nat descriptor type 1 masquerade
nat descriptor address outer 1 ipcp
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.1.1 udp 500
nat descriptor masquerade static 1 2 192.168.1.1 udp 4500
nat descriptor masquerade static 1 3 192.168.1.1 esp
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.1.101-192.168.1.200/24
dns server pp 1
dns private address spoof on
まとめ
L2TPv3/IPsec VPN(L2 VPN) で東西リージョンのプライベート LAN を接続し、それを IPsec VPN(L3 VPN) でオンプレと接続するという構成を紹介しました。東西リージョンのサーバを同じ L2 ネットワークに置くことができるのでフローティング IP アドレスを使ったサーバの冗長構成もできるようになります。
ただ、フローティング IP アドレスを使ったサーバの冗長構成の運用は相当難易度が高い気もします。たとえば東日本に本番系を運用していて東日本に障害が発生し西日本に切り替わったとすると、注意しないと、東日本が復旧した際にクライアントが東日本側に接続しちゃってどちらが新しいデータなのか分からないような状態になってしまうかもしれません。フローティング IP アドレスを使った冗長構成をとるときは、その辺りも考慮する必要があると思います。