Ubuntu Weekly Recipe

第498回 Network ManagerのCLIクライアントでVPN接続をする

この記事を読むのに必要な時間:およそ 4 分

Ubuntuサーバーの設定

ようやく舞台をVPSに移して設定を行います。VPSにはUbuntu 16.04 LTSがインストールされ,適切に設定されているものとします。なお,L2TP/IPsecクライアントとして使用する場合は,特別なポートが空いている必要はありません。

まずは/etc/network/interfacesファイルの中身を確認してください。通常はここでIPアドレス等の設定が行われているもと思われます。Network Managerはこの設定があると動作しないため,この設定を移植したあとこのファイルを削除またはリネームします。このファイルではないところで設定が行われている場合は,そちらを参照してください。

今回移植する/etc/network/interfacesの例は次のとおりです。

$ cat /etc/network/interfaces
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto ens3
iface ens3 inet static
        address AAA.AAA.AAA.AAA
        netmask BBB.BBB.BBB.BBB
        gateway CCC.CCC.CCC.CCC
        dns-nameservers DDD.DDD.DDD.DDD EEE.EEE.EEE.EEE
        dns-search dns.example.com

続けてNetwork Managerをインストールします。次のコマンドを入力してください。

$ sudo apt install network-manager --no-install-recommends

インストール完了後,次のようなメッセージが表示されます。

The following network interfaces were found in /etc/network/interfaces
which means they are currently configured by ifupdown:
- ens3
If you want to manage those interfaces with NetworkManager instead
remove their configuration from /etc/network/interfaces.

「ens3」はこのとおりではないかもしれませんが,いずれにせよ前述のとおりの注意が表示されます。

Network Managerにinterfacesファイルの設定を移植します。

ポイントは,ネットマスクはprefix長で入力する必要があります。今回はBBB.BBB.BBB.BBBをFFとしています。

では次のコマンドを入力してください。

$ sudo service network-manager start
$ sudo nmcli connection add type ethernet con-name default ifname ens3 ip4 AAA.AAA.AAA.AAA/FF gw4 CCC.CCC.CCC.CCC
$ sudo nmcli connection modify default ipv4.dns "DDD.DDD.DDD.DDD,EEE.EEE.EEE.EEE" ipv4.dns-search "dns.example.com"
$ sudo mv /etc/network/interfaces /etc/network/interfaces.old
$ sudo reboot

defaultという接続名で設定しました。

再起動後,正しくネットワーク接続が行われていれば成功ですが,念のため次のコマンドを入力して確認してください。

$ nmcli device status

「connected」の文字があれば成功しています。

ようやくNetworkManager-l2tpをインストールします。次のコマンドを入力してください。

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
$ sudo apt update
$ sudo apt install network-manager-l2tp

先ほどエクスポートしたL2TP/IPsecの設定をUbuntu Serverにコピーします。方法は任意ですが,通常はscpコマンドを使用することになるでしょう。ファイル名はrtx1200.confとします。

次のコマンドでインポートします。

$ sudo nmcli connection import type l2tp file rtx1200.conf

これで完了としたいところですが,Ubuntu Serverにはパスワードを保存する仕組みがインストールされていないため,設定ファイルに直接書くことにします。例としてパスワードはPASSWDとします。

今回の例だと設定ファイル名は/etc/NetworkManager/system-connections/rtx1200になるので,これをvimなどのエディターで開いてください。

設定箇所は,[vpn]のセクションの一番下にpassword-flags=0を追加し,ファイルの一番下に[vpn-secrets]セクションを追加し,password=PASSWDを指定します。例として次のようになります。

[connection]
(中略)

[vpn]
(中略)
password-flags=0

[ipv4]
(中略)

[ipv6]
(中略)

[vpn-secrets]
password=PASSWD

実際に接続するには次のコマンドを入力してください。

$ sudo nmcli connection up (接続名)

正しく接続されているかの確認にはipコマンドを使用するのがいいでしょう。

自動接続する場合は次のコマンドを実行してください。

$ sudo nmcli connection modify default connection.autoconnect yes
$ sudo nmcli connection modify default connection.secondaries rtx1200

運用について

設定方法の説明はこれで終わりですが,運用上の問題点はいくつかあります。まずNetwork ManagerにはVPN切断時の自動再接続の仕組みがないことです。これはチェックスクリプトを定時で走らせるくらいしか解決方法が思いつきません。

またルート(route)がVPNのもの,すなわちルーターの優先度が一番高くなるため,不都合なことがあるかもしれません。これはNetwork Managerでも設定可能ですが,今回は紹介を省略します。

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamメンバーで,主として日本語入力関連を担当する。特定非営利活動法人OpenOffice.org日本ユーザー会。LibreOffice日本語チーム。ほか,原稿執筆も少々。