SoftEther VPN サーバのローカルブリッジをコマンド操作だけで設定する方法
前提条件
前の記事 SoftEther VPN サーバをコマンド操作だけで構築する方法 の続きになります。
コマンドラインで SoftEther VPN サーバ (以下、VPN サーバと略すことあります) に接続している状態から説明を始めます。
ローカルブリッジとは何か?
SoftEther VPN のマニュアルページ の説明を引用すると、
ローカルブリッジを使用すると、この VPN Server 上で動作する仮想 HUB と、物理的な Ethernet デバイス (LAN カード) との間でレイヤ 2 ブリッジ接続を構成することができます。
とあります。
tap デバイスとかブリッジ (br0) なんて必要ない
Linux で SoftEther VPN サーバを構築するための情報をググっていると、tap デバイスを使ったりブリッジを使ったりする記事を多く見かけます。
ちゃんと意味がわかってやっているのなら良いが、「意味がわからずとりあえずこうしたらできた」的にやっている印象の記事もある。
物理 NIC を 1 個ローカルブリッジ専用に使える場合は、tap もブリッジも設定は不要です。この記事ではその方法をご紹介します。
ローカルブリッジの設定
まずローカルブリッジに使う LAN カード (NIC) の設定を OS 側 (Ubuntu) で行います。具体的には NIC に IP アドレスを持たせないようにします。
netplan を使って行います。/etc/netplan ディレクトリに 99_config.yaml というファイルを作ります。
$ cd /etc/netplan $ ls -l 99_config.yaml -rw-r--r-- 1 root root 118 Dec 31 02:50 99_config.yaml $ cat 99_config.yaml network: version: 2 ethernets: enxbc5c4ce12dd4: dhcp4: false addresses: [0.0.0.0/32] $
これは僕が実際に使っているファイルの中身そのまんまです。たったこれだけです。
もし同じようにされたい場合は、NIC 名のところ (enxbc5c4ce12dd4 のところ) だけ変更して頂ければ良いかと思います。
このファイルを作ったら設定反映のため、
$ sudo netplan apply
を実行する。
また、/etc/netplan ディレクトリには 01-network-manager-all.yaml というファイルが最初から存在していましたが、こちらは全く触りません。
$ cat 01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
$
すべてのデバイス (= すべての NIC と捉えた) を NetworkManager に管理させる設定だけ定義してあり、これをデフォルトの動作としているようです。
ネットワーク周りの確認コマンドで役に立ったもの
コマンド実行結果だけ載せておきます。参考になるかもしれません。
$ nmcli d
DEVICE TYPE STATE CONNECTION
enp0s25 ethernet connected wired1
enxbc5c4ce12dd4 ethernet connected netplan-enxbc5c4ce12dd4
wlp3s0 wifi unavailable --
lo loopback unmanaged --
$
$ nmcli connection show
NAME UUID TYPE DEVICE
wired1 83493658-da45-3486-a91e-6ea794c9ce0c ethernet enp0s25
netplan-enxbc5c4ce12dd4 bec5d66a-7a08-35ab-b045-469f7272727c ethernet enxbc5c4ce12dd4
Hishinakao 32d0c3f3-830a-43a8-bf0c-e66f5194cabb wifi --
aterm-902f23-a b7ac3e5c-54c8-4269-bcd7-15e9d7bb5ff0 wifi --
$
$ nmcli device show enxbc5c4ce12dd4
GENERAL.DEVICE: enxbc5c4ce12dd4
GENERAL.TYPE: ethernet
GENERAL.HWADDR: BC:5C:4C:E1:2D:D4
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: netplan-enxbc5c4ce12dd4
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 0.0.0.0/32
IP4.GATEWAY: --
IP6.ADDRESS[1]: fe80::be5c:4cff:fee1:2dd4/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.ROUTE[2]: dst = fe80::/64, nh = ::, mt = 256
$
ローカルブリッジに使う LAN カード (NIC) を確認する
ここからは OS 側ではなく、VPN サーバー側の作業です。
BridgeDeviceList コマンドで NIC を一覧表示して確認します。
VPN Server>BridgeDeviceList
BridgeDeviceList command - Get List of Network Adapters Usable as Local Bridge
enp0s25
enxbc5c4ce12dd4
wlp3s0
The command completed successfully.
VPN Server>
このコマンド例では 3 つの NIC が表示されていますが、enxbc5c4ce12dd4 という NIC をローカルブリッジ専用の NIC として使うことにしています。
参考:過去記事 (挿すだけで Ubuntu が USB LAN アダプターを正しく認識したと確認する方法)
ローカルブリッジを設定する
BridgeCreate コマンドを実行します。
VPN Server>BridgeCreate BridgeCreate command - Create Local Bridge Connection Virtual Hub Name to Create Bridge: hoge-vhub Bridge Destination Device Name: enxbc5c4ce12dd4 While in the condition that occurs immediately after a new bridge connection is made when bridging to a physical network adapter, depending on the type of network adapter, there are cases where it will not be possible to communicate using TCP/IP to the network adapter using a bridge connection from a computer on the virtual network. (This phenomenon is known to occur for Intel and Broadcom network adapters.) If this issue arises, remedy the situation by restarting the computer on which VPN Server / Bridge is running. Normal communication will be possible after the computer has restarted. Also many wireless network adapters will not respond to the sending of packets in promiscuous mode and when this occurs you will be unable to use the Local Bridge. If this issue arises, try using a regular wired network adapter instead of the wireless network adapter. The command completed successfully. VPN Server>
BridgeList コマンドで確認できます。
VPN Server>BridgeList
BridgeList command - Get List of Local Bridge Connection
Number|Virtual Hub Name|Network Adapter or Tap Device Name|Status
------+----------------+----------------------------------+---------
1 |hoge-vhub |enxbc5c4ce12dd4 |Operating
The command completed successfully.
VPN Server>
まとめ
以上で VPN サーバの設定は終わりです。
前回の記事と合わせて 2 回に分けて書きましたが、ここで作業的には一区切りです。
詳細は書いていませんが動作確認として iPhone を使って L2TP/IPsec で VPN 通信ができたことを確認しました。
残り作業としては、OS を起動した時に VPN サーバが自動的に起動するようにする設定がありますが、それは次回の記事で書きます。
おまけ
僕が使っている Ubuntu はデスクトップ版です。この場合、原則的に NetworkManager でネットワーク周りの設定や管理を行うことになっているようです。
Ubuntu のサーバー版は、NetworkManager ではなく、systemd-networkd を使うようです。
この違いがネットワーク設定でわけがわからなくなる入り口になるようです。(僕の場合、途中でここに引っかかってわけが分からなくなりました)
結論として、Ubuntu デスクトップ版を使っている僕は systemd-networkd を使わないで設定する方法を模索していきました。