NEC IX2215とUbuntu24.04 LTSでL2TP/IPsec接続を行う
当環境は、もともとL2TP/Wireguardという形で拠点間接続を行っていました。
最近、自宅ネットワーク環境の見直しを行うに伴ってNEC UNIVERGEシリーズのIX2215というVPN対応の業務用ルーターを購入しました。世間的にはIX2106のほうが人気なのかな..?
VRF対応でポート数も多く、CLIがCiscoのIOSライクな構文であることが決め手です。
また、VPN接続で最大1.3Gbpsという自宅で使うには十分なスペックを持っています。
せっかくハードウェアでVPNが使えるので、別拠点のUbuntu VMとの拠点間接続をL2TP/IPSecで行う環境を構築しました。
トンネルモードだと色々楽ですからね。
環境 - Envs
naxii@test-machine:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
IX2115# show version
NEC Portable Internetwork Core Operating System Software
IX Series IX2215 (magellan-sec) Software, Version 10.9.11, RELEASE SOFTWARE
Compiled Dec 15-Fri-2023 13:35:51 JST #2 by sw-build, coregen-10.9(11)
ROM: System Bootstrap, Version 24.1
System Diagnostic, Version 24.1
Initialization Program, Version 2.1
IX2215 の設定
L2TP/IPsec を有効化
詳しい設定方法はこちらをご参照ください。
コマンドラインで設定することも出来ますが、WebUIが使えるのであればそれを使うほうが断然楽です。
ここではWebUIで設定を行います。
- IX2215 のWebUIにログインする
- 「詳細設定」→「VPN・クラウド」→「VPNの設定」から、接続種別を
L2TP/IPsec
に変更 - 同時接続数、アドレス割り当て範囲等を適当に設定
- IKEの事前共有鍵を設定
- ユーザーの作成
- DNS通知設定(しなくてもよい)
- 保存
これでL2TP/IPsecの接続を受け付けるようになります。
もし、IX2215をLAN内専用のルーターとして使用している環境の場合は、HGW等の静的NAPTの設定が必要です。
具体的には、IKE用の500/UDP
4500/UDP
ESP
の静的NAPTを登録します。
もしくは、IX2215のWAN側IPv4アドレスに対しHGWでDMZを登録し、パケットフィルタリングされないようにしてください。
IX2215自体の静的NAPTは、WebUIでL2TP/IPsecの設定を行った時点で自動登録されます。
IKEとIPsecに関するIX2215の設定はこのようになっています。
ike nat-traversal
!
ike proposal ke4 encryption aes-256 hash sha group 2048-bit
ike proposal web_l2tp_ikeprop1 encryption aes-256 hash sha group 1024-bit
ike proposal web_l2tp_ikeprop2 encryption aes hash sha group 2048-bit
ike proposal web_l2tp_ikeprop3 encryption aes hash sha group 1024-bit
ike proposal web_l2tp_ikeprop4 encryption 3des hash sha group 1024-bit
!
ike policy web_l2tp_ikepolicy peer any key XXXXXXXXX web_l2tp_ikeprop1,web_l2tp_ikeprop2,web_l2tp_ikeprop3,web_l2tp_ikeprop4
!
ipsec autokey-proposal web_l2tp_secprop1 esp-aes-256 esp-sha
ipsec autokey-proposal web_l2tp_secprop2 esp-aes esp-sha
ipsec autokey-proposal web_l2tp_secprop3 esp-3des esp-sha
!
ipsec dynamic-map web_l2tp_secpolicy web_vpnlist web_l2tp_secprop1,web_l2tp_secprop2,web_l2tp_secprop3
Ubuntu 24.04 LTS の設定
Netplanの設定変更
このバージョンのUbuntuは、netplan
がデフォルトで使用されているのでこれをNetworkManager
に変更します。
先にNetworkManager
と関連パッケージをインストールします。
sudo apt install network-manager network-manager-l2tp
設定ファイルを開きます。
sudo nano /etc/netplan/50-cloud-init.yaml
renderer
をNetworkManager
に設定します。
この時、固定IP等をnetplan
で設定している場合はNetworkManager
で設定し直す必要があります。
network:
version: 2
renderer: NetworkManager
設定を適用します。
sudo netplan apply
NetworkManagerの有効化・コネクション登録
NetworkManager
を立ち上げます。
sudo systemctl start NetworkManager
次に、L2TP/IPsec
のコネクションを登録します。長いです。
sudo nmcli connection add connection.id <コネクションID> con-name <コネクション名> \
type VPN vpn-type l2tp ifname -- connection.autoconnect no ipv4.method auto \
vpn.data "gateway=<接続先IPアドレス>, ipsec-enabled=yes, ipsec-psk=<IKEの事前共有鍵>, ipsec-ike=aes256-sha1-modp1024, ipsec-esp=aes256-sha1, mru=1500, mtu=1500, password-flags=0, refuse-chap=no, refuse-mschap=no, refuse-pap=yes, require-mppe=no, user=<ユーザー名>, user-auth-type=mschap-v2" \
vpn.secrets password=<パスワード>
-
=
の後にスペースを入れたりするとそれも文字列として認識されてしまうようです。=
の後は詰めて入力してください。 -
ipsec-ike
とipsec-esp
はご自身のIXの設定で対応しているものを選択してください。 - PPPの認証プロトコルである
PAP
は平文で認証情報を送ってしまうためセキュリティ上よくありません。CHAP
を使いましょう。
インターフェイスの有効化
登録したコネクションを立ち上げます。
sudo nmcli conn up <コネクション名>
インターフェイスの状態を確認します。
nmcli
IPアドレスやルート情報が正常に登録されていることが確認できます。
<コネクション名> VPN connection
master ens18, VPN, ip4 default
inet4 10.0.0.2/32
route4 192.168.0.X/32 metric 0
route4 default metric 50
route4 192.168.0.X/32 metric 50
eth0: connected to Wired connection 1
~~省略~~
lo: connected (externally) to lo
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
inet4 127.0.0.1/8
inet6 ::1/128
ppp0: disconnected
"ppp0"
ppp, sw, mtu 1406
DNS configuration:
~~省略~~
systemdに登録
NetworkManager
起動時に自動接続するオプションconnection.autoconnect
がありますが、私の環境ではうまく動作しませんでした。
接続コマンドをシェルスクリプトに記述し、それをブート時にsystemd
のサービスとして呼び出す方法を取ります。
接続を行うコマンドを記述したシェルスクリプトを書きます。パスは適当でいいと思います。
touch ~/vpn_connect.sh
chmod +x ~/vpn_connect.sh
nano ~/vpn_connect.sh
#!/bin/bash
sudo nmcli conn up <コネクション名>
次に、サービスを登録します。
sudo touch /etc/systemd/system/vpn_connect.service
sudo nano /etc/systemd/system/vpn_connect.service
[Unit]
Description=L2TP/IPSec VPN Connect
After=network.target
[Service]
Type=oneshot
ExecStart=<パス>/vpn_connect.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
変更を適用します。
sudo systemctl daemon-reload
一度サービスを確認し、動作を確認します。
sudo systemctl start vpn_connect
エラーなど発生しなければ、自動起動を有効にします。
sudo systemctl enable vpn_connect
以上です。
Discussion