3.16 L2TPv3設定 #
対象機種: AX30 / AX11 / AX21 / AG10 / AG20 / AR10 / AR20
本節ではエッジゲートウェイでL2TPv3 over UDPを使用するための設定について説明します。
L2TPv3を使用する事で、2つの拠点間で同一セグメントのL2ネットワークを構築することが可能になります。LinuxカーネルにL2TPv3の機能が搭載されているため、ソフトウェアの追加無く構築が可能です。
注意: TODO(移行) ここに図が入ります(DOCX の図形を組み合わせた図のため自動変換できません。Word で PNG に書き出して差し替えてください。図中の文字: eth0 (203.0.113.1)、インターネット、br0 (192.168.0.1)、l2tpeth0、ecm0 (203.0.113.2)、br0 (192.168.0.2)、ゲートウェイB、ゲートウェイA)
エッジゲートウェイのローカルネットワークインターフェイスとL2TPv3仮想インターフェイスをブリッジすることで、同一のL2ネットワークを作成します。
デフォルトでブリッジインターフェイスが定義されていない機種では、事前にbr0インターフェイスを作成します。
amnimo(cfg)# interface eth1
amnimo(cfg-interface-eth1)# no address 192.168.0.254/24
amnimo(cfg-interface-eth1)# exit
amnimo(cfg)# interface br0
amnimo(cfg-interface-br0)# bridge eth1 #ローカルネットワークのデバイスを指定
amnimo(cfg-interface-br0)# address 192.168.0.2/24 #IPアドレスを指定
amnimo(cfg-interface-br0)# enable
amnimo(cfg-interface-br0)# exit
amnimo(cfg)# exit
amnimo# config file save startup-config
startup-config file already exists. Do you want to overwrite? (y/N): y
amnimo#
各ゲートウェイにL2TPv3設定をipコマンドで行います。l2tpeth0インターフェイスのmtuは、br0に合わせます。
補足: br0, l2tpeth0インターフェイスではL2フレームをフラグメントしないため、設定されたmtuを超えるパケットは、L2TPv3トンネルを通過することができません。ローカルネットワークに接続される端末のmtuを調整する必要があります。
L2TPv3でカプセル化後パケットは送信インターフェイスのmtuに応じてIPフラグメントされます。
ゲートウェイA
$ sudo ip l2tp add tunnel tunnel_id 10 peer_tunnel_id 20 encap udp local 203.0.113.1 remote 203.0.113.2 udp_sport 1701 udp_dport 1701
$ sudo ip l2tp add session tunnel_id 10 session_id 30 peer_session_id 40
$ sudo ip link set dev l2tpeth0 master br0
$ sudo ip link set dev l2tpeth0 up mtu 1500 #br0のmtuに合わせる
ゲートウェイB
$ sudo ip l2tp add tunnel tunnel_id 20 peer_tunnel_id 10 encap udp local 203.0.113.2 remote 203.0.113.1 udp_sport 1701 udp_dport 1701
$ sudo ip l2tp add session tunnel_id 20 session_id 40 peer_session_id 30
$ sudo ip link set dev l2tpeth0 master br0
$ sudo ip link set dev l2tpeth0 up mtu 1500 #br0のmtuに合わせる
設定の確認。
$ sudo ip l2tp show tunnel
Tunnel 10, encap UDP
From 203.0.113.1 to 203.0.113.2
Peer tunnel 20
UDP source / dest ports: 1701/1701
UDP checksum: disabled
$ sudo ip l2tp show session
Session 30 in tunnel 10
Peer session 40, tunnel 20
interface name: l2tpeth0
offset 0, peer offset 0
設定の削除は、以下コマンドで行います。tunnel設定を削除した際に、l2tpeth0インターフェイスも削除されます。
$ sudo ip l2tp del tunnel tunnel_id 10 #削除するTunnel IDを指定
3.16.1 サービス起動のユニットファイルを作成 #
L2TPv3の設定を行うスクリプト /usr/local/sbin/l2tpv3.shを作成します。
環境に合わせ、IPアドレス、Tunnel ID、Session IDを設定します。またbr0のmtu値を変更している場合、l2tpeth0のmtu値をbr0に合わせます。
l2tpv3.sh
#!/bin/sh
#環境に合わせ、IP, Tunnel ID, Session IDを変更
LOCAL_IP=203.0.113.1
REMOTE_IP=203.0.113.2
TUNNEL_ID=20
PEER_TUNNEL_ID=10
SESSION_ID=40
PEER_SESSION_ID=30
ip l2tp add tunnel tunnel_id ${TUNNEL_ID} peer_tunnel_id ${PEER_TUNNEL_ID} encap udp local ${LOCAL_IP} remote ${REMOTE_IP} udp_sport 1701 udp_dport 1701
ip l2tp add session tunnel_id ${TUNNEL_ID} session_id ${SESSION_ID} peer_session_id ${PEER_SESSION_ID}
#L2TPv3/IPSecとして動作させる場合にはコメントアウトを外して、IPSecではないL2TPv3パケットをDROPするルールを追加
#対向と通信を行うインタフェース名を指定します、モバイル通信を使用する場合ecm0等を指定
#iptables -A OUTPUT -o eth0 -p udp --dport 1701 -m policy --dir out --pol ipsec -j ACCEPT
#iptables -A OUTPUT -o eth0 -p udp --dport 1701 -j DROP
ip link set dev l2tpeth0 master br0
ip link set dev l2tpeth0 up mtu 1500 #br0のmtuに合わせる
exit 0
l2tpv3ユニットファイル(l2tpv3.service)を、/lib/systemd/system配下に作成します。
l2tpv3.service
[Unit]
Description=L2TPv3 Tunnel
After=network.target amnimo-amsrv.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/l2tpv3.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
ユニットを有効化します。
$ sudo systemctl enable l2tpv3.service
3.16.2 IPsecの併用 #
L2TPv3は通信が暗号化されていないため、セキュアな通信が必要となる場合、IPsec等と組み合わせる必要があります。
エッジゲートウェイのIPsecの設定を行うことで対応可能です。
補足: エッジゲートウェイでのIPsec設定には、CLI(amsh)を使用する方法とGUIを使用する方法があります。
設定方法については、以下を参照してください。
CLI(amsh)を使用する方法
『エッジゲートウェイシリーズ CLIユーザーズマニュアル』の『第6章 ネットワークの設定』GUIを使用する方法
『エッジゲートウェイシリーズ GUIユーザーズマニュアル』の『IPSEC設定をする』
L2TPv3は、IPsec無しの状態でもトンネルが成立するため、IPsecと併用する場合、IPsec適用前のL2TPパケットが出力されない様、iptablesで制限することが可能です。トンネルの対向と通信を行うために使用するインターフェイス名がeth0としてコマンド例を記載します。
$ sudo iptables -A OUTPUT -o eth0 -p udp --dport 1701 -m policy --dir out --pol ipsec -j ACCEPT
$ sudo iptables -A OUTPUT -o eth0 -p udp --dport 1701 -j DROP

注意: TODO(移行) ここに図が入ります(DOCX の図形を組み合わせた図のため自動変換できません。Word で PNG に書き出して差し替えてください。図中の文字: eth0 (203.0.113.1)、インターネット、br0 (192.168.0.1)、l2tpeth0、ecm0 (203.0.113.2)、br0 (192.168.0.2)、ゲートウェイB、ゲートウェイA)
補足: br0, l2tpeth0インターフェイスではL2フレームをフラグメントしないため、設定されたmtuを超えるパケットは、L2TPv3トンネルを通過することができません。ローカルネットワークに接続される端末のmtuを調整する必要があります。