ヤマハルータ RTX1200 を入手した記事を書いたあと、IPsec セッションが対向で安定して張れているので、設定メモ。ASAHI ネットの場合は教科書通りには行かないようです。


やりたいこと

遠隔地にある 2拠点のプライベート IP ネットワークを、
同一 Windows ドメイン、同一 LAN 上にあるかのようにシームレスに使いたい。

2拠点間で次のような通信がしたい。

  • 2拠点それぞれに設置した Active Directory ドメインコントローラの同期
  • 2拠点にある Samba ベースのファイルサーバを、相手の拠点からアクセス
  • 2拠点にある VMware ESXi マシンを、相手の拠点からメンテナンス
  • 2拠点にある squid サーバの ICP による相互アクセス
  • 2拠点にある DNS, SMTP, POP3, IMAP などが、同一プライベート IP ネットワーク内にあるように見せたい

ネットワーク構成図

  • ルータ1 … RTX1200
  • ルータ2 … RTX1100
  • ISP … どちらも ASAHI-NET + 固定 IP オプション
  • 各拠点ごとの環境
    • それぞれ 192.168.0.0/24, 192.168.1.0/24 のプライベート IP ネットワークを構成
    • NAT masquerade で固定 IP アドレス 1つを共有
        インターネットへ                              インターネットへ
              |                                             |
              | PPPoE                                       | PPPoE
              |                                             |
              | アドレス: 固定                              | アドレス: 固定
              | 172.16.0.1                                  | 172.17.0.1
              |                                             |
     +--------+--------+                           +--------+--------+
     |                 | <########  VPN  ########> |                 |
     |     ルータ1     |                           |     ルータ2     |
     |  名前:router1   |    暗号方式: 3DES-CBC     |  名前:router2   |
     |                 |    認証方式: HMAC-SHA1    |                 |
     +--------+--------+                           +--------+--------+
              | 192.168.0.1/24                              | 192.168.1.1/24
              |                                             |
              |                                             |
     ---------+---- 192.168.0.0/24                 ---------+---- 192.168.1.0/24

ASAHI-NET で IPsec の落とし穴

最初のうち、Yamaha RT シリーズ公式ページの設定例を参考に一連の IPsec 関連の設定をしてみましたが、なかなか tunnel セッションが張れず。syslog 取っていろいろ試してみた結果、ASAHI ネットは ESP が通らないらしいことが判明。したがって、NAT 設定を

nat descriptor masquerade static 1 2 192.168.0.1 esp *

などとやってもダメで、esp-encapsulation もしくは nat-traversal で ESP を UDP パケットとして通過させる必要があります。さらに今回の場合は、NAT の背後で動作させるために nat-traversal の方が良さそうです。

ということで、ルータ1, 2 の最終的な設定を以下のようにすることで、安定して IPsec セッションが張れるようになりました。

ルータ1 側

#
# LAN1 interface
#
ip lan1 address 192.168.0.1/24

# Routing table
ip route default gateway pp 2
ip route 192.168.1.0/24 gateway tunnel 1

#
# PP interface
#
pp select 1
pppoe use lan2
pp always-on on
ppp lcp mru on 1454
ip pp mtu 1454
ip route default gateway pp 1
ppp ccp type none
pp auth accept pap chap
pp auth myname NAME PASSWORD
ip pp address 172.16.0.1
ip pp nat descriptor 1
pp enable 1
#
# TUNNEL interface
#
tunnel select 1
ipsec tunnel 101
  ipsec sa policy 101 1 esp 3des-cbc sha-hmac
  ipsec ike always-on 1 on
  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.0.1
  ipsec ike local name 1 router1
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text
  ipsec ike remote address 1 172.17.0.1
tunnel enable 1

#
# NAT descriptor
#
nat descriptor type 1 masquerade
nat descriptor address outer 1 172.16.0.1
nat descriptor address inner 1 172.16.0.1 192.168.0.1-192.168.0.254

# nat descriptor masquerade static 1 1 192.168.0.1 udp 500
# nat descriptor masquerade static 1 2 192.168.0.1 esp *
# (udp 500, esp * の設定は無くてもよい)

#
# IPSEC configuration
#
ipsec auto refresh on

ルータ2側

#
# LAN1 interface
#
ip lan1 address 192.168.1.1/24

# Routing table
ip route default gateway pp 2
ip route 192.168.0.0/24 gateway tunnel 1

#
# PP interface
#
pp select 1
pppoe use lan2
pp always-on on
ppp lcp mru on 1454
ip pp mtu 1454
ip route default gateway pp 1
ppp ccp type none
pp auth accept pap chap
pp auth myname NAME PASSWORD
ip pp address 172.16.0.1
ip pp nat descriptor 1
pp enable 1
#
# TUNNEL interface
#
tunnel select 1
ipsec tunnel 101
  ipsec sa policy 101 1 esp 3des-cbc sha-hmac
## ルータ 2側に always-on, keepalive use があるとかえって不安定だった
#  ipsec ike always-on 1 on
#  ipsec ike keepalive use 1 on
  ipsec ike local address 1 192.168.1.1
  ipsec ike nat-traversal 1 on
  ipsec ike pre-shared-key 1 text
  ipsec ike remote address 1 172.16.0.1
  ipsec ike remote name 1 router1
tunnel enable 1

#
# NAT descriptor
#
nat descriptor type 1 masquerade
nat descriptor address outer 1 172.17.0.1
nat descriptor address inner 1 172.17.0.1 192.168.1.1-192.168.0.254

# IPSec
#nat descriptor masquerade static 1 1 192.168.1.1 udp 500
#nat descriptor masquerade static 2 2 192.168.1.1 esp *
#(esp の設定は要らない)

#
# IPSEC configuration
#
ipsec auto refresh on