VPCルータとのサイト間VPNを設定する上でのポイント~RTX1210を例に~ – 「さくらのクラウド入門」(7)

こんにちは、さくらインターネット クラウドチームの大喜多です。

VPCルータのサイト間VPNに関するお問い合わせをよくいただくようになりました。特に多くお問い合わせをいただくのがYAMAHA製ルータ「RTXシリーズ」の設定についてです。そこで今回は実際にRTX1210のコンフィグをもとに、VPN接続できない場合のチェックポイントについて解説致します。

今回のネットワーク構成

今回例として取り上げるネットワーク構成は以下の通りです。

YAMAHAルータにてVPCルータとサイト間VPNが張れないというお問い合わせをいただいた際に、まずお客様に「YAMAHAルータのconfig全体(show configコマンドで出力されたものすべて)を送ってください」とお願いします。これは、VPN設定部分のconfigだけでは問題の切り分けができないことを意味しています。チェックポイントは大きく分けて3つありますので、順に説明してまいります。

VPCルータのサイト間VPN設定

RTX1210のコンフィグ

長くなりますが、チェックポイントを明確にするために全文掲載しています(コメント部分は省略しています)

# RTX1210 Rev.14.01.09 (Tue Jun 16 00:57:37 2015)
<中略>
ip route default gateway 59.106.69.97
ip route 192.168.3.0/24 gateway tunnel 1
ip filter source-route on
ip filter directed-broadcast on
ip lan1 address 192.168.1.102/24
ip lan2 address 203.0.113.102/27

ip lan2 secure filter in 300010 300020 200000 200001 200002 200003 200020 20002
1 200022 200023 200024 200025 200030 200032 200040 200042 60000 60001 60002 600
03 60004 60005
ip lan2 secure filter out 200010 200011 200012 200013 200020 200021 200022 2000
23 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 20008
4 200098 200099

ip lan2 nat descriptor 1

tunnel select 1
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac
  ipsec ike always-on 1 on
  ipsec ike duration ipsec-sa 1 1800
  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 log 1 off
  ipsec ike keepalive use 1 on dpd 15 2
  ipsec ike local address 1 192.168.1.102
  ipsec ike local id 1 192.168.1.0/24
  ipsec ike pfs 1 on
  ipsec ike pre-shared-key 1 text abcde123
  ipsec ike remote address 1 198.51.100.221
  ipsec ike remote id 1 192.168.3.0/24
  ipsec auto refresh 1 on
 ip tunnel mtu 1280
 ip tunnel tcp mss limit auto
 tunnel enable 1


ip filter 1010 reject * * udp,tcp 135 *
ip filter 1011 reject * * udp,tcp * 135
ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 1014 reject * * udp,tcp 445 *
ip filter 1015 reject * * udp,tcp * 445
ip filter 1020 reject 192.168.1.0/24 *
ip filter 1030 pass * 192.168.1.0/24 icmp
ip filter 1040 pass * * tcp telnet *
ip filter 1050 pass * * tcp www *
ip filter 2000 reject * *
ip filter 3000 pass * *
ip filter 60000 pass-log * 192.168.1.100 tcp * 60000
ip filter 60001 pass-log * 192.168.1.101 tcp * 60001
ip filter 60002 pass-log * 192.168.1.102 tcp * 60002
ip filter 60003 pass-log * 192.168.1.103 tcp * 60003
ip filter 60004 pass-log * 192.168.1.104 tcp * 60004
ip filter 60005 pass-log * 192.168.0.50 tcp * 60005
ip filter 100000 reject * * udp,tcp 135 *
ip filter 100001 reject * * udp,tcp * 135
ip filter 100002 reject * * udp,tcp netbios_ns-netbios_dgm *
ip filter 100003 reject * * udp,tcp * netbios_ns-netbios_dgm
ip filter 100004 reject * * udp,tcp netbios_ssn *
ip filter 100005 reject * * udp,tcp * netbios_ssn
ip filter 100006 reject * * udp,tcp 445 *
ip filter 100007 reject * * udp,tcp * 445
ip filter 100099 pass * * * * *
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.1.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.1.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.0.0/16 icmp * *
ip filter 200031 pass * 192.168.1.0/24 established * *
ip filter 200032 pass * 192.168.0.0/16 tcp * ident
ip filter 200033 pass * 192.168.1.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.1.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.1.0/24 udp domain *
ip filter 200036 pass * 192.168.1.0/24 udp * ntp
ip filter 200037 pass * 192.168.1.0/24 udp ntp *
ip filter 200040 pass * 192.168.1.102 tcp * telnet
ip filter 200042 pass * 192.168.1.102 tcp * 22
ip filter 200099 pass * * * * *
ip filter 300010 pass 198.51.100.221/32 192.168.1.0/24 udp 500
ip filter 300020 pass 198.51.100.221/32 192.168.1.0/24 esp
ip filter 500000 restrict * * * * *
ip filter dynamic 100 * * ftp
ip filter dynamic 101 * * www
ip filter dynamic 102 * * domain
ip filter dynamic 103 * * smtp
ip filter dynamic 104 * * pop3
ip filter dynamic 106 * * tcp
ip filter dynamic 107 * * udp
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp

nat descriptor type 1 masquerade
nat descriptor timer 1 600
nat descriptor timer 1 tcpfin 5
nat descriptor address outer 1 203.0.113.102
nat descriptor address inner 1 auto
nat descriptor masquerade incoming 1 reject 

nat descriptor masquerade static 1 9 192.168.1.102 udp 500
nat descriptor masquerade static 1 10 192.168.1.102 esp

nat descriptor masquerade session limit 1 1 500
dns server 8.8.8.8
dns private address spoof on
dashboard accumulate traffic on

nat descriptor masquerade static

まず最初に確認するポイントですが、configの下の方、緑色の文字の部分「nat descriptor masquerade static」の確認を行います。IPsecを張るためにはUDP500番ポートとESPの通信を許可しておく必要があります。また、重要なのはIPアドレスの部分です。理由は後述します。


nat descriptor masquerade static 1 9 192.168.1.102 udp 500
nat descriptor masquerade static 1 10 192.168.1.102 esp

ipsec ike local address/ipsec ike local id

config中央部分、青色の文字の部分がIPsecの設定です。ここで確認するのは「ipsec ike local address/ipsec ike local id」の部分です。


  ipsec ike local address 1 192.168.1.102
  ipsec ike local id 1 192.168.1.102

IPsecで接続する相手に対して自分のアドレスとidを広告しています。

「nat descriptor masquerade static」と「ipsec ike local address/ipsec ike local id」で設定されているIPアドレスは、必ず同一である必要があります。今回のケースでは、いずれもプライベートIPアドレスである「192.168.1.102」が設定されており、VPCルータの対向IDも「192.168.1.102」となっているので、問題ありません。お問い合わせいただくケースで最も多いのは、この部分のIPアドレスが不一致になっているケースがほとんどです。この例では全てプライベートIPアドレスになっていますが、VPN設定のIPアドレスがグローバルIPアドレスになっており、正しくIPsecが張れないということが多いのです。この部分は

・いずれもRTX1210のプライベートIPアドレス
・いずれもPTX1210のグローバルIPアドレス

のいずれかで揃っている必要がありますので、うまく接続ができない場合はまずこの部分をご確認ください。

secure filterの確認

これは稀な例ですが、フィルタによってUDP500番ポートとESPの通信が遮断されているケースがあります。

今回の例では、WAN側インタフェース(LAN2)に入ってくる(in)の部分でプライベートIP宛ての通信がrejectされるようになっていたため、UDP500番ポートとESPの通信のみを明示的に許可するfilterを追加しています。


ip filter 300010 pass 198.51.100.221/32 192.168.1.0/24 udp 500
ip filter 300020 pass 198.51.100.221/32 192.168.1.0/24 esp

また、ip filterの行が大量にありますが、全てのfilterが有効になっているわけではありません。ip lan2 secure filter in および ip lan2 secure filter outの部分でフィルタ番号が記載されているものが、実際にインタフェースに適用されているフィルタになります。今回のケースでもip filterの行はあるものの適用されていないフィルタがいくつかあります。

まとめ

今回はRTX1210の実際のconfigをもとに、サイト間VPNが失敗する場合にチェックするべきポイントについて取り上げました。また、こちらのサイト間VPNのマニュアルにはVPCルータのIPsecパラメータや他機種の設定例なども記載しておりますので、併せてご確認ください。

また、2017年1月17日に「さくらのクラウド体験ハンズオン VPN編」を開催致します。当日は実際にVPCルータとRXT1210を用いてサイト間VPNを構築するデモンストレーションと、VPCルータとL2TP/IPsecによるリモートアクセスVPNを張るハンズオンを予定しています。ぜひご参加ください。