LinuxデバイスをL2TP/IPsecで接続する

Linuxが搭載されたデバイスでVPNアクセスのL2TP/IPsecプロトコルで接続する場合のセットアップ方法です。

root権限のあるシェルにアクセスできることを前提に手順を記載しています。

1. L2TP/IPsecクライアントをセットアップする

L2TP/IPsecクライアントとしてxl2tpdとstrongswanを使用します。それらのソフトウェアは、aptなどのパッケージ管理ソフトウェアを用いてインストールできます。以下のコマンドを実行してください。

apt install xl2tpd strongswan
2. IoTサービスでVPNアクセスを追加する

コントロールパネル にログインし、VPNアクセスを追加します。

VPNアクセスの追加方法は、VPNアクセス画面の作成に従って進めてください。

手順に従い作成すると、以下のような完了画面が表示されます。このままブラウザを閉じずに次のステップに進んでください

3. L2TP/IPsecを設定する
3.1. IPsecを設定する

/etc/ipsec.confを編集し、VPNアクセス用のIPsecの設定を書き込みます。以下コマンドのようにリダイレクションなどを使用して実施してください (<接続先アドレス>はコントロールパネルに表示されている接続先アドレスに変更してください)。

cat >> /etc/ipsec.conf << EOF
conn vpn
        type=transport
        authby=secret
        rekey=yes
        keyingtries=1
        keyexchange=ikev1
        ike=3des-sha256-modp2048
        esp=aes128-sha256
        dpdaction=restart
        dpddelay=10s
        dpdtimeout=30s
        left=%any
        leftprotoport=udp/l2tp
        leftikeport=4500
        right=<接続先アドレス>
        rightid=%any
        rightprotoport=udp/%any
        rightikeport=4500
        forceencaps=yes
        auto=start
EOF

/etc/ipsec.secretsに事前共有鍵を追記します。以下、<事前共有鍵>をコントロールパネルに表示されている事前共有鍵に変更した上で実行してください。

cat >> /etc/ipsec.secrets << EOF
: PSK "<事前共有鍵>"
EOF
3.2. L2TPを設定する

/etc/xl2tpd/xl2tpd.confにL2TP接続設定を追記します。以下、<接続先アドレス>をコントロールパネルに表示されている接続先アドレスに変更した上で実行してください。

cat >> /etc/xl2tpd/xl2tpd.conf << EOF
[lac vpn]
lns = <接続先アドレス>
require chap = yes
refuse pap = yes
require authentication = yes
pppoptfile = /etc/ppp/options.xl2tpd.vpn
length bit = yes
autodial = yes
redial = yes
redial timeout = 10
max redials = 100
EOF

続けて、/etc/ppp/options.xl2tpd.vpnに認証情報を追記します。以下、<ユーザ名>と<パスワード>をコントロールパネルに表示されている内容に変更した上で実行してください。

cat > /etc/ppp/options.xl2tpd.vpn << EOF
noauth
nodefaultroute
usepeerdns
logfile /var/log/vpn.log
name "<ユーザ名>"
password "<パスワード>"
EOF

/etc/ppp/ip-up.d以下にスクリプトを配置します。このスクリプトは、IoTサービスに必要なルーティング設定をL2TP/IPsec接続時に自動設定するスクリプトです。以下のコマンドを実行して設定してください (最後のコマンドで/var/log/ppp-ipupdown.logを作成していますが、このファイルをあらかじめ作成しておくと実行ログが出力されます)。

cat > /etc/ppp/ip-up.d/001vpnaccess << EOF
#!/bin/sh

ip route add 10.64.2.0/24 dev \$1
EOF
chmod +x /etc/ppp/ip-up.d/001vpnaccess
touch /var/log/ppp-ipupdown.log

上記の設定コマンドは、VPNゲートウェイを利用しない場合の設定方法です。

VPNゲートウェイを利用したVPNアクセスの場合、ルーティング設定はお客様のIIJプライベートバックボーンサービスプライベートコネクタの構成により異なります。

WISE-PaaSコネクタを利用してWISE-PaaSへ接続する場合、WISE-PaaSコネクタのIPアドレスセグメントに記載されている全てのIPアドレスセグメントをルーティング設定に追加する必要があります。

ルーティング設定を追加するには、/etc/ppp/ip-up.d/001vpnaccess ファイルを編集し、行末に「ip route add <WISE-PaaSアドレスセグメント> dev $1」をアドレスセグメントごとに1つずつ追記してください。

3.3. 設定を反映する

IPsecとL2TPの設定を反映します。以下のコマンドを実行し、各デーモンを再起動してください。

systemctl restart ipsec
systemctl restart xl2tpd
4. IoTサービスに接続する
4.1. L2TP/IPsecインタフェースを有効化する

作成したインタフェースを有効化して接続します。以下のコマンドを実行してください。

ipsec up vpn
xl2tpd-control connect vpn
4.2. IoTサービスの接続状態を確認する

curlで以下のコマンドを実行してください。正常に接続されていれば、作成したVPNアクセスのIPアドレスや名称などがコンソールに表示されます。

curl http://gw.iot.iij.jp/v1/dvc-state/csv

以上でIIJ IoTサービスにデータを送る準備は完了しました。IoTサービスの機能の使用方法については、引き続き本マニュアルを参考にご利用ください。