EdgeRouter X を使ったL2TPv3 over IPsec

2地点間でLayer2 のVirtutal Bridge を構成する必要があり EdgeRouter X を使って、IPv4 で L2TPv3 over IPsec の設定をしてみた。

実際は同じセグメント内で Virtual Bridge をVirtual Private Network(VPN)を利用して構成したいだけだが、特殊な状況で、セグメント内だが、IPアドレスが Dynamic で固定できない。Dynamic IP を扱うには IPsec の利用が必要のようだ。IPsec上で Layer 2 (L2) ブリッジを構成するには L2TPv3 が簡単そうなので、それを使うことにした。

同一セグメント内なので Multicast DNS (mDNS)でできないかと思ったが、EdgeRouter X ではうまく、IPsec のサイト名としてうまく使えなかった。しかたがないので、Dynamic DNS (DDNS)を使っている。

最近は IPv6 で設定する場合が多いと思うが、IPv4 を利用した設定の備忘録として記録しておく。

設定にあたっては、以下のサイトが参考になった。

EdgeRouter – Dynamic Site-to-Site IPsec VPN using FQDNs

EdgeRouter 6P – 12. 自宅と実家を L2 VPN で一体化する ( L2TPv3 Bridging )

EdgeRouter X – 14. L2 VPN アプライアンスとして使う

格安ルータ「EdgeRouter」でフレッツ NGN 網折り返し拠点間 L2VPN(L2TPv3/IPSec over IPv6)を構築する

環境・機材

Dynamic DNS には 無料の duckdns.org を利用した。

EdgeRouter X のバージョンは、v2.0.9-hotfix.4 を利用した。

EdgeMAX OS の GUI画面から VPN、ConfigTree、Wizardsのタブを利用して設定を行った。

構成の概要を次の図に示す。

XXXXXXX-ivy1 (以下では単に ivy1とする) の eth4 と XXXXXXX-ivy2 (以下では単に ivy2とする)の eth4 でL2 Bridge を構成する。

  • ivy1
    • eth0: インターネットへの接続 (DHCP)
    • eth1, eth2, eth3: 192.168.11.0/24, DHCP有効 PCを接続する
    • eth4: L2TPv3 VPN
  • ivy2
    • eth0: インターネットへの接続 (DHCP)
    • eth1, eth2, eth3: 192.168.22.0/24, DHCP有効 PCを接続する
    • eth4: L2TPv3 VPN

EdgeRouter X (ivy1)の設定

まず、1台のEdgeRouter X の設定を示す。2台目も基本的に同じことであるが、後で設定を示す。2台目の方が設定手順などで手戻りがなかったので、2台目の方が細部ではより正確と思う。

EdgeRouter X を hardware reset した状態から設定した。

eth0 に PCを接続し、PCのIPアドレスを192.168.1.2/24、192.168.1.1をゲートウェイアドレスに設定して基本設定をした。

Basic Setup で LANに 192.168.11.1/24 を設定した。

 

リブートをして設定を確認。

Dynamic DNS の設定

eth1 (eth2, eth3でも可) に PCを接続し、設定を進めていく。

Services タブ → DNS タブ →  Dynamic DNS を使って設定をした。

しかし、設定を確認すると interface が other null になってしまう。しかたがないので、ConfigTree から eth0 で設定した。

  • services
    • dns
      • dynamic
        • interface
          • eth0
            • service:   add custom-duckdns
              • custom-duckdns:   add XXXXXXX-ivy1
                • login: nouser
                • password: Duck DNS で指定されているもの
                • protocol: dyndns2
                • server: www.duckdns.org

IPsec Site-to-Site接続の設定

VPN タブ → IPsec Site-to-Site タブで IPsec の設定をした。

  • Peer: XXXXXXX-ivy2.duckdns.org
    • Description: peer2 (何でも)
    • Local IP: any
    • Pre-shared secret: ivy1 と ivy2 で共通になるよう決めたもの
    • Local subnet: 192.168.11.0/24
    • Remote subnet: 192.168.22.0/24

ファイアウォール設定

Firewall/NATタブのFirewall Policies でファイアウォール設定を詳細にした方が良い場合もあるであろうが、IPsec Site-to-Site設定で作成されるデフォルトのファイアウォールのままにしてある。

IPsec Site-to-Site接続の確認

Peer(ここではivy2)もIPsec Site-to-Site接続の設定済みなら、 Wizards タブの VPN status を確認することで、IPsec による Site-to-Site 接続ができていることを確認できる。うまく接続できていれば、しばらくするとVPN Status List の Statusが down から up になるはず。

また、ivy1 に接続したPCから ivy2 に接続したPC (192.168.22.39とする) に Ping を送って適切な応答があることを確認する。

スイッチの設定

EdgeRouter X の Ethernetポート eth4 を L2 Bridge に利用する設定を行う。このため、switch0 から取り除く。

ConfigTreeタブ の interfaces / switch / switch0 / switch-port / interface のパネルから インタフェース eth4 を削除する。

L2TPv3 の設定

L2TPv3 の設定をするために、L2TPv3の端点となる bridgeインタフェース、L2TPv3インタフェースの作成を行う。

Bridgeの作成・設定

ConfigTreeタブ の interfaces / bridge  のパネルで br1 を作成し、設定を行う。

  • interfaces
    • bridge: add br1
      •  br1
        • multicast: enable
        • promiscous: enable

インタフェース l2tpeth1 の作成・設定

ConfigTreeタブ の interfaces / l2tpv3 のパネルでインタフェース l2tpeth1  を作成する。

以下の例では、port, session-id, tunnel-id で桁数を変えてある。

  • interfaces
    • l2tpv3: add l2tpeth1
      • l2tpeth1
        • description: L2TPv3 ivy1 (なんでも良い)
        • destination-port: 22000
        • encapsulation: udp
        • local-ip: 192.168.11.1
        • peer-session-id: 2200
        • peer-tunnel-id: 220
        • remote-ip: 192.168.22.1
        • session-id: 1100
        • source-port 11000
        • tunnel-id: 110

ConfigTreeタブ の interfaces / l2tpv3 / l2tpeth1 / bridge-group に br1 を設定する。

  • interfaces
    • l2tpv3
      • l2tpeth1
        • bridge-group
          • bridge: br1

Ethernet ポート eth4 の設定

ConfigTreeタブ の interfaces / ethernet / eth4 / bridge-group を br1に設定する。

TCP MSS Clamping

VPNを使っているので、TCP Maximum Segment Size (MSS) を調整する TCP MSS Clamping を有効にする。

EdgeRouter X (ivy2)の設定

EdgeRouter X を hardware reset した状態から設定した。

eth0 に PCを接続し、PCのIPアドレスを192.168.1.2/24、192.168.1.1をゲートウェイアドレスに設定して基本設定をした。

Basic Setup で LANに 192.168.22.1/24 を設定した。設定を反映させるために Restart する。

EdgeRouter X のホスト名の設定

ホスト名を EdgeRouter-X-ivy2 にする。

ホスト名を変更した後にはダッシュボードの左上が変わる。

Dynamic DNS のivy2での設定

eth1 (eth2, eth3でも可) に PCを接続し、設定を進めていく。

Services タブ → DNS タブ →  Dynamic DNS を使って設定をしてみたが、ivy1と同じことなので、 interface が other null になってしまう。

そこで、ConfigTree から null を削除し、 eth0 を追加して設定した。

  • services
    • dns
      • dynamic
        • interface
          • eth0
            • service:   add custom-duckdns
              • custom-duckdns:   add XXXXXXX-ivy2
                • login: nouser
                • password: Duck DNS で指定されているもの
                • protocol: dyndns2
                • server: www.duckdns.org

IPsec Site-to-Site接続のivy2での設定

VPN タブ → IPsec Site-to-Site タブで IPsec の設定をした。

  • Peer: XXXXXXX-ivy1.duckdns.org
    • Description: peer1 (何でも)
    • Local IP: any
    • Pre-shared secret: ivy1 と ivy2 で共通になるよう決めたもの
    • Local subnet: 192.168.22.0/24
    • Remote subnet: 192.168.11.0/24

ファイアウォールのivy2での設定

Firewall/NATタブのFirewall Policies でファイアウォール設定を詳細にした方が良い場合もあるであろうが、IPsec Site-to-Site設定で作成されるデフォルトのファイアウォールのままにしてある。

IPsec Site-to-Site接続の確認

Peer(ここではivy1)も設定済みなら、 Wizards タブの Feature Wizards の中のVPN status を確認することで、IPsec による Site-to-Site 接続ができていることを確認できる。

また、ivy2 に接続したPCから ivy1 に接続したPC (192.168.11.40とする) に Ping を送って適切な応答があることを確認する。

スイッチのivy2での設定

EdgeRouter X の Ethernetポート eth4 を L2 Bridge に利用する設定を行う。このため、switch0 から取り除く。

ConfigTreeタブ の interfaces / switch / switch0 / switch-port / interface のパネルから インタフェース eth4 を削除する。

L2TPv3 のivy2での設定

L2TPv3 の設定をするために、L2TPv3の端点となる bridgeインタフェース、L2TPv3インタフェースの作成を行う。

Bridge br2の作成・設定

ConfigTreeタブ の interfaces / bridge  のパネルで br2 を作成し、設定を行う。

  • interfaces
    • bridge: add br2
        • br2
          • multicast: enable
          • promiscous: enable

インタフェース l2tpeth2 の作成・設定

ConfigTreeタブ の interfaces / l2tpv3 のパネルでインタフェース l2tpeth2  を作成する。

ConfigTreeタブ の interfaces / l2tpv3 / l2tpeth1 / bridge-group に br2 を設定する。

以下の例では、port, session-id, tunnel-id で桁数を変えてある。

  • interfaces
    • l2tpv3: add l2tpeth2
      • l2tpeth2
        • description: L2TPv3 ivy2 (なんでも良い)
        • destination-port: 11000
        • encapsulation: udp
        • local-ip: 192.168.22.1
        • peer-session-id: 1100
        • peer-tunnel-id: 110
        • remote-ip: 192.168.11.1
        • session-id: 2200
        • source-port 22000
        • tunnel-id: 220
        • bridge-group
          • bridge: br2

Ethernet ポート eth4 へ br2 の設定

ConfigTreeタブ の interfaces / ethernet / eth4 / bridge-group を br2に設定して、L2TPv3 と eth4 が br2 でブリッジされるようにする。

TCP MSS Clamping

VPNを使っているので、TCP Maximum Segment Size (MSS) を調整する TCP MSS Clamping を有効にする。

Restart をして設定を反映させる。

 

L2TPv3 接続の確認

設定後に再起動してしばらくしてから Dashboard を見ることで、L2TPv3 の l2tpeth1 が Connected になっていれば接続されていることを確認できる。

ivy2 の eth4 をたとえば 192.168.1.0/24 のDHCPが有効になっているLANに接続し、 ivy1 の eth4 に PC を接続する。ping によって ivy2のeth4が接続されているルータ 192.168.1.1 から応答を得ることができる。

ivy2側の eth4 のケーブルを外すと ping で 192.168.1.1 に到達できなくなることから L2TPv3 経由で通信していると考えられる。

また、arp -a で調べると 192.168.1.0/24 のセグメントの状態が見られることを確認した。

設定の保存

EdgeRouter Xでファイルに保存

ここでは、ivy2 の設定をファイルに保存する例を示す。

EdgeMAX OS の CLI を起動してログインし、show configuration の出力をファイルに保存する。

次のコマンドを実行した例を示す。

ファイルをPCなどにコピー

scp を利用するなどして、EdgeRouter X 内のファイルをコピーしてPCなどに保存する。

Windowsで次のコマンドを実行した例を示す。

この例では ユーザ名は、ubntであり、初回の接続なので、 yes と回答してキーを~/.ssh/known_hosts に保存する。

その後、ubnt のパスワードを入力することでコピーが行われる。

コピーして保存した ivy2の設定ファイルの内容を記録しておく。