【VPN2/2】SoftEtherVPNをvpncmdコマンドだけで設定してみた

前回、Raspberry Pi 4のRaspberry Pi OS BullseyeにインストールしたSoftEther VPNサーバーを設定していきます。

今回はGUIのソフトではなく、CUIのvpncmdだけで設定してみました。参考にしてください。

Raspberry Pi 4とモバイルモニターで設定中

順番に設定していくように書いています。もしかしたら何か抜けていたり、前後している部分があるかも知れません。見つけたら修正します。ご理解ください。

この記事の主な流れ

softether vpn manager for windows

本来は、Windows用のSoftEther VPN Managerを使いGUIで設定できます。ただ、現在はmacOSではGUIソフトが動きません。手持ちにWindowsマシンが無いため、勉強も兼ねてコマンド(CUI)で設定していきます。

GUI版の紹介は他のサイトに譲りまして、ここではvpncmdだけで設定していきます。

VPN サーバーマネージャー for Windows

正直な話、GUIのManagerなら苦労はしなかった。Windowsユーザーなら素直にGUIの管理ソフトを使ってください。

コマンドより簡単に設定できるGUI版

公式にあるvpncmdのマニュアルを参照しながら進めるとと分かりやすいですよ。

主にMacしか持っていない人向けの記事ですが、他のマシンは必要無くRaspberry Pi 4だけで設定できるという点で、どなたにも有効な方法です。

3つの前提条件

最初にお断りしておきたいのは、セットアップにあたり、前提の条件として3つ挙げておきます。

Wi-Fiはオフにして有線LANケーブルで繋ぐ

Raspberry Pi を使うのに、ほとんどの人はWi-Fi接続だと思います。しかし、有線ケーブルのeth0にブリッジして使う関係上、設定するのに有線で繋いでください。

Wi-Fiが稼働していると、ただでさえややこしいネットワーク周りの設定が、余計に難しくなってしまいます。

この記事は、Wi-Fiをオフにした状態でご紹介しています。

Rレッド

と言っても、有線のLANケーブルのポートって余っていないんですよねー。まぁ、速度的な意味ではギガビットイーサネットの恩恵はあるけどね。

Raspberry Pi に繋いだキーボードで設定していく

macOSやLinuxしか手元にない人は、CUIで設定できるvpncmdを使しかありません。GUIより難しいですけど、同じ設定をすることができます。

SoftEtherVPNをインストールしたRaspberry Pi を直接操作します。そうすれば、vpncmdで指定するサーバーはローカルになるからです。

SSH経由ではなく、Raspberry Piにモニターを繋いでください。SSH経由だと設定によってはアクセスできないケースも出てくるでしょう。

Windows版GUIソフト(SoftEther VPN Manager)では、逆に同じLAN内にあるRaspberry PiのIPアドレスを指定することになります。(DHCPで振られているIPなど)

最初は固定IPアドレスにしない状態

Raspberry Pi OSをインストールしたばかりの状態で、DHCPから自動的にIPアドレスを振り出してもらっていれば、そのままで設定していきます。

固定IPアドレス化しても、ネットワークの設定でコメントアウトしないとなりません。色んな番号が出てきてもややこしく感じるので、最初はDHCPから振られたIPアドレスで進めてください。

  1. 前提条件1:Wi-Fiはオフにして有線LANケーブルで繋ぐ
  2. 前提条件2:Raspberry Pi に繋いだキーボードで設定していく
  3. 前提条件3:最初は固定IPにしない状態で設定していく

この条件の元、次からの設定でVPNサーバーを設定できました。

SoftEther VPNのインストールについては前回の記事を参考にしてください。

vpncmdで設定していく

以後、分かりやすくGUI版の公式キャプチャ画像を貼ってありますが画像内の内容とは異なります。

vpncmdの起動方法は、インストールしたvpnserverフォルダ内にあります。

sudo /usr/local/vpnserver/vpncmd

メニュー1番の「1.VPN Server または VPN Bridgeの管理」に入ります。サーバーが入っているラズパイを直接操作しているため、IPアドレスかホスト名とポート番号、仮想HUBなどを聞かれても空のENTERで進めます。

これでVPNサーバーに接続したことになります。

この後、管理者パスワードを設定すると、次からは最後に管理者のパスワードを求められます。

vpncmdの起動

起動した後は、VPN Server>プロンプトになります。

GUI版の公式キャプチャ画像例

管理者パスワード

vpncmdでは、プロンプトがNTP Server>になります。以降はすべて省いています。

ちなみに、コマンドは大文字でも小文字でも関係ありません。

ServerPasswordSet

パスワードの設定をします。仮では無く、セキュリティ的にも強固なパスワードにしましょう。

次回からvpncmdを起動した後、最後に聞かれます。

仮想HUBの作成

先に現在の仮想HUBをlistで表示してみます。

hublist
最初からあるDEFAULT

最初からDEFAULTがあります。これを書き換えても良いのですが、新たに作成してから削除します。

今回の例では、仮想HUBを「vhub」としました。任意でなんでもいいです。

hubcreate vhub

パスワードを聞かれます。先程のではなく、仮想HUBの新たなパスワードを新規作成します。

これで仮想HUBができました。以降、この仮想HUBを適時使っていきます。

GUI版の公式キャプチャ画像例

IPsec VPN サーバー機能の有効化 / 無効化

次のコマンドで有効化とIPSec事前共有鍵の設定をします。

IPsecEnable

どれを有効にするのか聞かれるので、最初だけyes、他はnoでOK。

最後に、IPsec事前共有鍵を9文字以下で入れてくれと聞かれます。

この事前共有鍵は、iPhoneやPCなどでVPNを張るのに使います。

GUI版の公式キャプチャ画像例

DDNSの設定

先ず、現在の状態を確認します。

DynamicDnsGetStatus

ホスト名がデフォルトでvpn+数字.softether.netになっていると思います。

これを任意の分かりやすい名前に変更しておきましょう。今回は例としてjitaku-dnsにしました。任意で決めてください。

DynamicDnsSetHostname jitaku-dns

もう一度DynamicDnsGetStatusコマンドで確認すると良いでしょう。

GUI版の公式キャプチャ画像例

ユーザーの作成

ここから先程作った仮想Hubに入ります。Hubの後に任意の仮想HUB名を入力して入れます。
表示がVPN Server/vhub>に変わるのが分かるでしょう。

VPN Server>Hub vhub

アクセスする際のユーザーを作成します。今回の例ではvpnuserとしてあります。

続いて聞かれるグループ名、本名、説明はお好みで。Enterキーで飛ばして空白でも構いません。

UserCreate vpnuser

ユーザーのパスワードも設定します。

UserPasswordSet vpnuser

VPN Server/仮想HUB名>から抜けるには、単にHubとだけ打てば抜けられます。

GUI版の公式キャプチャ画像例

ローカルブリッジの設定

ここで仮想HUBをeth0にローカルブリッジとして新規作成します。

一旦、仮想hubから抜けます。

hub

ブリッジデバイスeth0を仮想HUBのvhubにブリッジします。

BridgeCreate vhub /DEVICE:eth0

動作確認した後で、このブリッジの設定は削除することになります。

一旦、VPN Serverから抜けましょう。

VPN Server>exit
GUI版の公式キャプチャ画像例

途中の動作確認をする

iPhoneでご説明しますが、Androidも同じような設定でできると思います。

この時点では、まだ外部からアクセスはできません。だからVPNではないのですが、同じLAN内に居る状態でサーバーにアクセスできるかということです。

iPhoneだと、【設定】→【一般】→【VPN、DNS,およびデバイス管理】→【VPN】にある【VPN構成を追加】からおこないます。

ここで接続できない場合、恐らくパスワードが違っているのではないでしょうか。

LAN内からのアクセス

タイプは、L2TPで、サーバにはラズパイのIPアドレスを入力します。恐らくDHCPから自動的に割り振られているので、デスクトップにあるメニューバーや、ifconfigコマンドなどで確認してください。

アカウントはユーザー名@仮想HUB名、パスワードはユーザー名のパスワード、そしてシークレットがIPSec事前共有鍵で設定したものです。

タイプL2TP
説明任意
サーバラズパイのIPアドレス(後にDDNS名)
アカウント作成したユーザー名@仮想HUB名
RSA SecureIDOFF
パスワード作成したユーザーのパスワード
シークレットIPSec事前共有鍵
すべての信号を送信ON

エラーが出なければ、ここまではOKです。

外部から接続するための設定

前回の記事でご紹介したように、br0というブリッジポート経由で、eth0の物理LANポートではなく、TAPという仮想LANカード経由でVPN接続させます。

イメージ図にあるように、br0へ固定IPとして55番を振り、vlanという仮想TAPデバイスを作成します。

ブリッジ接続の設定

前回インストールしたbridge-utilsを使って、br0とeth0をブリッジ接続の設定をします。

sudo brctl addif br0 eth0

interfacesへ追記

/etc/network/interfacesの中身に追記していきます。

sudo nano /etc/network/interfaces

ファイルの最後に次を追記します。

uto wlan0
iface wlan0 inet manual

auto eth0
iface eth0 inet manual

auto lo
iface lo inet loopback

# softether VPN setting
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_maxwait 10

dhcpcd.confも編集

同じくdhcpcd.confも追記します。

eth0という物理LANポートにはIPアドレスを払い出さないようにし、ブリッジbr0に固定IPを設定します。

もしeth0を固定IPアドレス化していた場合は、すべてコメントアウトしておいてください。

# eth0 にはIPアドレスは払い出さない
denyinterfaces eth0

# br0 setting
interface br0
static ip_address=192.168.0.55/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8

今回の例では、55番を充てました。任意で決めてください。

最低限に必要なのはこれが全てです。5行。

ここで一旦再起動

IPアドレスも変更したので、ここで一旦再起動してみます。

br0=ラズパイのIPアドレスが設定した固定IPアドレスになっているハズです。

sudo reboot

仮想ブリッジ(tap)の作成

TAPを新規作成する前に、動作確認前に作ったブリッジを削除しておきます。

また、vpncmdを使います。

sudo /usr/local/vpnserver/vpncmd

BridgeDeleteコマンドで最初にブリッジした設定を削除します。

BridgeDelete vhub /DEVICE:eth0

次に仮想ブリッジ(TAP)を新規作成します。

仮想Hubは既に作ったvhub、TAPはvlanとしました。

最後の/TAP:yesはとても重要です! 忘れるとエラー出て面倒です。

BridgeCreate vhub /DEVICE:vlan /TAP:yes

デバイスリストを見てみます。

BridgeList

画像ではvnicになってしまっていますが、今回はvlanとなっているハズです。その前にあったeth0は消えているハズです。

bridgedevicelistコマンドも試してみてください。br0、eth0、wlan0が一覧になっています。

BridgeDeviceList

exitで抜けます。

VPN Server>exit

vpnserver.serviceに追記

仮想HUBや仮想ブリッジが作成できたので、最初に設定したvpnserver.serviceのコメントアウトした行を外して有効にします。

ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_vlan

最終的には次のようになります。(tap_vlanと設定した場合

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_vlan
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

変更後の更新

サービスを再読込させましょう。

設定をイジってから再度vpnserverをリスタートする時は次のコマンドでおこないます。

sudo systemctl daemon-reload
sudo systemctl restart vpnserver

再起動しても良いです。

bridgeの確認

ブリッジの確認をして、起動後に画像のようになっていればOKです。

brctl show

br0にeth0とtap_vlanがブリッジされています。

IPアドレスの確認

IPアドレスは、ifconfigコマンドで確認しましょう。

今回の例だと、項目にbr0、eth0、lo、tap_vlanと並んでいますか?

そして、br0にだけ、設定した固定IPアドレスが割り振られていればOKです。(今回の例では192.168.0.55)

ポート開放

前回の冒頭のように、環境はNEC製ルーター(Aterm)です。設定方法や用語がメーカーによっても異なります。あくまでもルーターの設定は参考程度にしてください。

ポートマッピング

ポートマッピングに追加していきます。(ポートフォワードとか他の用語もある)

ポートマッピング

プロトコルUDPの500番ポートと4500番ポートをVPNで使います。

LAN側ホストには、ラズパイの固定IPアドレスを指定します。

Aterm公式の図 ポートマッピング

VPNパススルー機能

手持ちのルーターでは、IPsecパススルー機能(VPNパススルー機能)があります。

しかし、LAN側に設置したVPNサーバーへは、ポートマッピングでポート開放しないとなりませんから、この機能は必要ありません。

外部であるWAN側のVPNサーバーへ接続するのに使用する機能だと思います。

LAN側にVPNサーバー1台の設置ならば、ポートマッピングだけで外部からも接続できます。

ルーターの設定は様々

VPN接続をするのと、Webサーバーなどの公開では設定が異なります。

Webサーバーを公開するのであれば、DMZホスト機能やNAPT、パケットフィルタリングなどを設定する必要が出てきます。

ルーターのメーカーによって設定の方法が若干異なります。

自宅のLAN環境は別にしても、VPNサーバーを自宅内に設置した場合、どうせ自分しか接続しないし、1セッションしか張れないルーターの制限もあることを考えると、ポートマッピングだけで済むと思います。

ポート開放はリスクを伴います。セキュリティが心配な方は、任意で公開するのはやめましょう。

Rブラック

今ならVPNサーバー機能を搭載したWi-Fiルーターを買えば良い

Rグリーン

それを言ったらおしまいよ

WaffleCell-VM for Aterm

WaffleCell-VM for Aterm は、同時にご利用になれる登録ユーザ数を4人までに制限したお試し版です。

最終の動作確認はスマホの4Gから

これでVPNサーバーの設定は終了です。

VPNを外部から繋げるのに外に出る必要はありません。iPhone等のスマホのWi-Fiをオフにして、4Gで繋げればOKですよね。

Wi-FiをオフにしてVPN接続

iPhoneだと、【設定】→【一般】→【VPN、DNS,およびデバイス管理】→【VPN】にある【VPN構成を追加】

VPNの設定

この記事のように、途中で接続を確認したのなら、サーバだけ変更すれば良いでしょう。

VNCアプリでもバッチリ

画面が全画面で4GとVPNの表記が見えませんが繋がっています。

LAN内にあるOMVにも接続できた

ブラウザにOMVがあるラズパイのローカルなIPアドレスを指定して接続できました。4G、VPNの表記の通り外部からです。omv.localのようなローカルドメイン名では名前解決できませんでした。

接続のイメージ

接続のイメージ図

iPhoneのブラウザでインターネットを閲覧した場合、自宅内のLAN環境からアクセスしていることになります。

接続のイメージ図のように、スマホとインターネットの通信は、オレンジ色矢印ではなく、ブルー色矢印のようなイメージで接続します。

このため、地域で制限されている通信を回避することもできます。VPNサーバーの設置しているIPアドレスから通信することになるからで、自宅からインターネットを閲覧している状態になります。

だからといって、スマホのパケット通信が節約できるわけではありません。むしろVNCなどでリモートすれば、それなりのデータ量を使います。

今回のようなVPN通信だと回線速度は少し遅くなります。ブラウザの閲覧だと、表示される前にワンテンポある感覚です。

ボタン1つでVPNのオンオフが可能なので、少しだけ自宅のLAN内を覗きに行く使い方になりますね。どのように使っていくのかは、またラズパイダでご紹介していきたいと思います。

以上、Raspberry Pi OS Bullseye にSoftEther VPNサーバーを同居で構築してみました。vpncmdよりGUIのSoftEther VPN Managerの方が簡単なことが改めて分かったとも言えます。現行Macに対応して欲しい。

vpncmdの参考にしてください。

おまけ

vpncmdで、Reboot /RESETCONFIG:YESを実行しその後に再起動すると、現在のコンフィグレーションファイルの内容を消去してくれます。再起動することにより初期状態の VPN Server が起動します。

もしも、よく分からなくなってしまった時など最初からやり直す際などで試してください。


参考

スマホやモバイル機器でVPNを張るなら

シェアする
  • URLをコピーしました!

この記事のコメント(承認後に公開)

コメントする

コメントは日本語で入力してください。名前は表示されます。メールアドレスは表示されません。

CAPTCHA

この記事の主な流れ