【Proxmox】SoftEtherでIPoE(MAP-E)回線用VPNサーバーを構築

Linux

インターネット回線がIPoE(MAP-E:OCNバーチャルコネクト)の場合、NEC IXルータのVPNサーバーではL2TP/IPsecのポートが通過できずVPN接続ができません。

その対応として、Proxmox上にSoftEther SSL-VPNサーバーを導入することで対処を行いましたので構築方法を紹介します。

IXルータ単体でもIPv4のPPPoEトンネルとルーティング設定をすることで、L2TP/IPsecを構築できますが、筆者は自宅や会社にIPoE回線(※)を導入していませんし、客先の現場でVPN接続の検証作業するわけにもいかないので、今回はSoftEtherを使ったSSL-VPNサーバー構築を選択することにしました。

※筆者はeo光の10G回線(PPPoE回線)です。

IPoE(MAP-E)回線でL2TP/IPsecが動かない理由

L2TP/IPsecでは、UDP 500/1701/4500、IP(ESP) 50の計4つのポートが固定的に用いられます。

しかし、IPoE回線(MAP-E方式)は複数回線でポートをシェアする仕様となっており、L2TPで用いるポートが通過できないため、VPN通信ができません。

IPoE回線でVPNを構築する場合は、以下の対処くらいしかなさそうです。

  • UDP 500/1701/4500、IP(ESP) 50のパケットをPPPoE(IPv4)で通過させる:PPPoE(IPv4 over IPv6)を提供するプロバイダに契約変更すれば、L2TPで通信することができます。しかし、ビジネス用のIPoE回線では、コラボIPoE回線で契約されていて、プロバイダが変更できないケースも多く見うけられますので、この方法では対処が出来ない場合があります。
  • SSL-VPNが実装されたルータを採用する:SSL-VPNは1000番以上の単一ポートを使うためIPoE回線でも対応できます。しかしながら、FortigateやPaloaltoといったSSL-VPNを実装するルータではIPv4 over IPv6を設定する場所がなく、IPoE回線に完全対応とはなっていないためIPv6接続オンリーとして動かすしかありません。IPv4のWebサイトが閲覧できないと顧客クレームに繋がりますので、「IPoE回線の場合は海外製ルータは採用出来ない」と考えたほうが良いです。
  • VPNサーバーを設置する:LAN側にOPEN VPN, WireGuard, SoftEtherなどのSSL-VPNサーバーを設置し、サーバーをインターネットに公開することでVPN接続を実現する方式です。ルータにVPNが実装される前から古くある方法で、実績があります。中古PCにLinuxをいれてつかうのが安くて動作確実です。VPNクライアントソフトもリリースされているため、素人さんでも容易に使えることもメリットです。
  • DS-Lite方式を採用するプロバイダ(ASAHI-NETなど)に変更する:プロバイダ企画回線、いわゆるコラボ回線の場合、プロバイダ変更ができません。コラボ回線である場合は、新規契約で回線を引き直しするしかなさそうです。

もう一つの注意点としては海外製ルーターを選ばないことです。

人気のあるFortinet社のFGシリーズはSSL-VPNが実装されているルータとしては安価で人気ありますが、IPv4 over IPv6対応が完全とはいえない製品ですし、人気があることからSSL-VPNの脆弱性を狙われる状況が続いているため、現時点では選択できません。

世界レベルでみればPPPoEが主流であって、IPoEは日本でのみ採用される通信方式であることから、Fortigateにかかわらず海外製のルータは対応が後回しになっています。

IPoE回線(MAP-E, DS-Lite方式とも)直下にFortigateをゲートウェイルータに使うと、IPv6を扱うサイトにしか到達しなくなりますので、インターネットを閲覧する目的の場合は採用しないほうが無難です。

IXルーター単体でもL2TP接続のVPN構築は可能ですが、検証環境の準備を考慮すると、LAN側にSSL-VPNサーバーを設置する方法が早くて安くて利便性も良い、という結論に至りました。

VPNサーバーソフトの選定

無償で使えるVPNサーバーソフトとしては以下の3つがあります。

  • Open VPN:古くからあるVPNサーバーソフト。ソフトウェアのセットアップが難しいと言われているため、今回は見送り。
  • WireGuard:OPEN VPNよりも高速、かつ、セットアップも楽で多く使われているVPNソフトウェア。自宅のUbiquitiルータ(UDM-SE)でも実装されています。Android,IOSでもクライアントソフトがあり、スマホからのVPN接続も可能です。
  • SoftEther:筑波大学の研究プロジェクトから生まれた純国産VPNソフト。日本製であるためドキュメントがすべて日本語が整備されている。Azureと連携した「VPN Azure」が秀逸で、ルータ設定変更が不要。VPN Azureを使わない場合でも、L2TPとOPEN VPNの認証方式までサポートするという万全ぶり。

これからVPNサーバーを組む場合はVPN Azureを実装するSoftEtherをおすすめします。

VPN Azureを使う理由は、LAN側からVPN Azureにフルオートで貫通する仕組みであるため、原理的にルータやスイッチの設定変更が不要です。よくこんなやり方を考えついたものだと思いました。

ドキュメントが日本語というのもありがたいですし、サーバーソフトはWindowsやIOS上でも動くので、素人さんでもVPNサーバー構築が簡単にできる素晴らしいソフトウェアです。

日本人であればSoftEther一択だと思います。

SoftEther VPN Azureを使う場合の制約事項

VPN Azureはルータの設定変更が不要で、導入が容易であるVPNサーバーソフトですが、制約事項としては以下があります。

  • Android, Apple IOSとVPN接続ができない:通信方式はSSTPが採用されており、専用クライアントソフト経由での接続となります。Android, IOSに接続するためのクライアントソフトは提供されておらずVPN接続は不可能です。
  • 別途VPNサーバー(PC)が必要:置き場所を取らない中古ノートPCでの構築が安価です。しかしそれでも数万円程度の出費が発生します。

VPNは、外出先から社内ファイルサーバにアクセスするときに重宝しますので、この程度の出費であれば許容範囲だと思います。

SoftEther VPNサーバー構築手順

SoftEtherは、Windows, FreeBSD, Linux, Solaris, MacOS Xと多種のプラットフォームがサポートされています。

今回はルーター(ファイアウォール)のルーティング設定も省略できるVPN Azureを使うことにします。(通常、L2TPを使う場合はルーターにVPNサーバーへのルーティング設定が発生します。)

AndroidやIOSとつなぎたい場合は、L2TPやWireguard接続が必須となるため、VPN Azureは対応していませんので注意してください。

サーバーOSは、稼働性や移植性を向上させるため、Windowsではなく、Proxmoxというハイパーバイザ上にUbuntu22.04を仮想で構築することにしました。

※注記1:本手順はVPNサーバー(ubuntu)とVPN設定管理端末(WindowsまたはMacOS)の2台のPCを用いた場合を記載しています。サーバーはCLIでも設定できますが大変面倒ですので割愛します。

※注記2:Android12からL2TPが搭載されなくなりIKEv2に移行しました。SoftEtherの公式サイトを見るとIKEv2対応は未定とのことで、Android12を使わないか、OpenVPNクライアントソフトを使うようにしてくださいとのこと。

前提条件など

PCハードウェアは、現役引退させたWindows11が動作しない自作PC(core i7-7700機)を使うことにしました。メモリはお安くなっているDDR3L 16GBを積み直しました。

Linuxは、SoftEtherで推奨されているUbuntu22.04LTSを採用し、PC上に構築したハイパーバイザ(proxmox8)上で仮想動作させるものとしました。

主な導入手順は以下のとおりになります。

  • (手順1)Proxmox上にUbuntuを構築
  • (手順2)ubuntuでLANポート設定
  • (手順3)SoftEtherパッケージ入手、コンパイル、手動インストール、自動起動設定
  • (手順4)別のWindows端末にサーバー管理ソフトをインストールし、VPN Azure連携設定
  • (手順5)Windowsクライアント側からVPN接続設定を行いVPN動作確認

(手順1)Proxmox上にUbuntuを構築

Proxmox上でubuntuマシンを構築します。

Proxmoxとubuntu 22.04LTSインストールはこの記事を参照してください。

リソース割り当ては次の値に設定しました。

  • ストレージ:64GB
  • Memory:4GB
  • コア数:構築時4core、運用時2core

その他の値はデフォルトにしています。

SoftEtherは、接続のたびにログが出力される仕様のため、ストレージサイズは大きめがいいと思います。

作業前の準備

必須ではありませんが、proxmoxコンソールでの作業はコピペが出来ず、作業効率が落ちますので、リモートデスクトップ経由での操作、または、SSH経由でteratermでの接続で行うほうが良いです。

UbuntuへのSSHインストールは以下のコマンドです。

$ sudo apt -y update
$ sudo apt install openssh-server

当HPを見ながらインストールする場合は、コピペができるSSHで接続するほうが時短に繋がります。

(手順2)ubuntuのLANポート設定

次にUbuntuのLANポート設定をします。

今回のシステム構築イメージは以下の通りとし、ネットワークポートを1ポート(1NIC)で構築する手法を紹介します。

上図のようなシステム構成をとる理由としては、Linuxには使用中の内部通信ポートと通信ができない仕様があるからです。

そのため、1NICで構築するためには、LANブリッジ(br0)を作り、SoftEtherはブリッジ(br0)にtap(tap_vpn)することで、VPN経由の通信ルートを作る必要があります。

実際、tap_vpnを作らなくてもSoftEther VPNは動いてしまうのですが、VPN通信中はSoftEtherがbr0を専有し、他サーバー通信を阻害してしまうことにより、使い物にならないくらいの遅延が生じたり、通信中に切断されるなどの問題が発生します。

この現象の対処がわからず、ubuntu版の導入を諦め、追加でNICを購入される方も多いと思います。(追加NICは1,000円位で買えますので、早くて安く済みます)

一方でWindows版はこの制約がなく、Windows版はSoftEtherサーバーをインストールするだけで高速に動きます。構築の手間を省きたい方はWindows版を利用するほうが良いと思います。(OS費用に万単位のコストは掛かりますが...。)

ブリッジとtapの作成

ブリッジ用のパッケージをインストールします。

$ sudo apt install -y bridge-utils

次に/etc/netplanにブリッジ設定を記載します。

netplanは、01-network-manager-all.yamlのように01から付番され、設定は01から順に読み込まれます。

フォルダ内に同じ設定がなされている場合は、最後に読み込まれる一番大きい番号が有効になります。

不要なデフォルト設定が入っている場合は、意図したとおりに設定されない可能性があるため、netplanの01番をリネームし、読み込みされないようにしてから、50番のyamlファイルを作成します。

# cd /etc/netplan
# mv 01-network-manager-all.yaml 01-network-manager-all.yaml.bak

50番のyamlファイルは以下のように作りました。

エディターはviが難しければ、nanoを使うのが良いでしょう。

br0のネットワークアドレス(addresses)、デフォルトゲートウェイ(routes)、DNSサーバー(nameservers)は、ご自身のネットワーク環境に合わせてください。

補足:以下の"ens01"は仮想NICを割り当てていませんので実際は動作しないです。不要なので消しても良いのですが、一度システムを稼働させると停止するタイミングが取れないため、そのままにしています。

# cat 50-softether-init.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens01:
      optional: true
    ens19:
      optional: true
      dhcp4: false
      dhcp6: false
    tap_vpn:
      dhcp4: false
      dhcp6: false

  bridges:
    br0:
      dhcp4: false
      dhcp6: true
      interfaces:
      - ens19
      - tap_vpn
      addresses:
      - 192.168.0.250/24
      routes:
      - to: default
        via: 192.168.0.1
      nameservers:
        addresses:
        - 192.168.0.1
        - 8.8.8.8
        search: []

設定を有効にするには、netplanコマンドを用います。

Proxmox上のゲストOSのネットワーク設定を変更するときは、ネットワークが切断されてしまうためコンソール操作ができる環境で行うようにします。

netplanの記述が誤っていると、ネットワークに繋がらなくなるため、tryオプションで試行して、復帰できるようにするほうが良いでしょう。

$ sudo netplan try --timeout 100

100秒以内にip addressコマンドを実行し、新規作成したブリッジ"br0"経由での接続になることを確認します。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether bc:24:11:69:e6:87 brd ff:ff:ff:ff:ff:ff
    altname enp0s19
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e2:c2:86:c8:e3:06 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.250/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::e0c2:86ff:fec8:e306/64 scope link
       valid_lft forever preferred_lft forever

この時点ではtap_vpnはまだ出てきていません。tap_vpnはSoftEtherのサーバー管理マネージャで設定することで出現します。

次に周辺の機器やgoogle.comにpingを打ち、疎通できることを確認します。

$ ping g.co
PING g.co (172.217.25.174) 56(84) bytes of data.
64 bytes from kix06s19-in-f14.1e100.net (172.217.25.174): icmp_seq=1 ttl=58 time=3.05 ms
64 bytes from syd09s13-in-f14.1e100.net (172.217.25.174): icmp_seq=2 ttl=58 time=3.25 ms
64 bytes from sin01s16-in-f14.1e100.net (172.217.25.174): icmp_seq=3 ttl=58 time=3.32 ms
--- g.co ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 3.054/3.206/3.316/0.111 m

設定に問題がなければ、netplan applyで設定を永続有効化します。

$ sudo netplan apply

以上でブリッジ設定は完了です。

ubuntuにmakeとgccをインストール

Linux版のSoftEtherはソースコード配布となっているため、コンパイル作業が発生します。

コンパイルするためのツールであるmakeとgccをインストールします。

$ sudo apt install make

$ sudo apt install build-essential

makeとgccのバージョン確認も確認しておくと良いでしょう。

ace@vpn-server:~$ make --version
GNU Make 4.3
このプログラムは x86_64-pc-linux-gnu 用にビルドされました
Copyright (C) 1988-2020 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.

ace@vpn-server:~$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ace@vpn-server:~$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
つ

(手順3)SoftEtherサーバーのインストール

UbuntuのFireFoxブラウザを用いて、SoftEtherサイトにアクセスし、SoftEhterサーバーをダウンロードします。

保存されたフォルダに移動し、tar形式(テープアーカイバ)を解凍します。

$ tar xvf softether-vpnserver-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz 
vpnserver/
vpnserver/Makefile
(中略)
softether-vpnserver-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz
vpnserver

解凍時に作成された./vpnserverディレクトリに入り、makeでパッケージをコンパイルします。

公式ページでは、ここで使用許諾の同意が出るとのことでしたが、インストールしたバージョンでは省略されていました。またVPN Toolsで環境検証も同時に行ってくれました。

$ cd ./vpnserver
$ make
--------------------------------------------------------------------

SoftEther VPN Server (Ver 4.43, Build 9799, Intel x64 / AMD64) for Linux Build Utility
Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved.

--------------------------------------------------------------------

(中略)
SoftEther VPN 動作環境チェックツール

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

'カーネル系' のチェック中...
              [合格] ○
'メモリ操作系' のチェック中...
              [合格] ○
'ANSI / Unicode 文字列処理系' のチェック中...
              [合格] ○
'ファイルシステム' のチェック中...
              [合格] ○
'スレッド処理システム' のチェック中...
              [合格] ○
'ネットワークシステム' のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

コマンドは正常に終了しました。

(中略)
--------------------------------------------------------------------
The preparation of SoftEther VPN Server is completed !

(中略)

--------------------------------------------------------------------

make[1]: ディレクトリ '/home/ace/softether/vpnserver' から出ます

プログラムを/user/local/vpnserverへ移動し、ファイル権限を変更します。

[root@machine vpnserver]# cd ..
[root@machine root]# mv vpnserver /usr/local
[root@machine root]# ls -l /usr/local/vpnserver/

[root@machine root]# cd /usr/local/vpnserver/
[root@machine vpnserver]# chmod 600 *
[root@machine vpnserver]# chmod 700 vpncmd
[root@machine vpnserver]# chmod 700 vpnserver

起動時にVPNサーバーが動作するようにしたいので、/opt/vpnserver.shにスタートアップスクリプトを記述し、権限を変更します。

# cd /opt
# nano vpnserver.sh
# chmod 755 /opt/vpnserver.sh

/opt/vpnserver.shに記述する内容は、HPに紹介されている通りに入力します。

以下をコピペすれば一瞬で終わりますのでご利用ください。

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

次にvpnserverサービスをdaemonに登録します。

viやnanoエディタで"/etc/systemd/system/vpnserver.service"を新規作成します。

ファイル内は以下の設定をコピペで記述します。

[Unit]
Description = vpnserver daemon

[Service]
ExecStart = /opt/vpnserver.sh start
ExecStop = /opt/vpnserver.sh stop
ExecReload = /opt/vpnserver.sh restart
Restart = always
Type = forking

[Install]
WantedBy = multi-user.target

ここまで設定を進めると、VPN Serverの起動制御ができるようになっていますので、systemctlコマンドでサービス開始します。

サービス開始
[root@machine vpnserver]# systemctl start vpnserver

サービス停止
[root@machine vpnserver]# systemctl stop vpnserver

vpnserverを自動起動させるには、systemctlコマンドでenableします。

※注意手順4でネットワークループを発生させるリスクがあるため、自動起動設定は手順5までの全動作確認が完了後に行うのが良いでしょう。

[root@machine vpnserver]# systemctl enable vpnserver

vpnserverの動作状況はpsコマンドで確認出来ます。

$ ps aux|grep vpnserver
root         567  0.0  0.0   8984  3072 ?        S<s  11:38   0:00 /usr/local/vpnserver/vpnserver execsvc
root         568  1.3  8.9 2380968 359644 ?      S<l  11:38   6:17 /usr/local/vpnserver/vpnserver execsvc

以上でubuntu側のvpnserverインストール作業は完了です。

(手順4)Windows端末にVPNサーバー管理ソフトインストールとVPN Azure連携設定

VPNサーバー設定は、ubuntu上でのCLIでも可能ですが、独自コマンドがたくさんあり、とても難しいです。

公式ページでは、Windows端末からのサーバー設定が推奨されていますので、ネットワークで接続されたWindows端末にVPNサーバー管理ソフトをインストールして設定を行います。

設定値は以下項目を入力するだけですが、ローカルブリッジ設定はtapデバイスの"vpn"のみを追加してください。(LANカードのプルダウンで出てくる"br0"にtapしがちですが誤りです。)

システム上は"tap_vpn"の表記になりますので"vpn"のみを入力します。("tap_vpn"と入力してしまうと、システム上は"tap_tap_vpn"となり動作しません。)

  • ユーザーとパスワードを設定する
  • IPsec,L2TPの設定では何もチェックしない
  • VPN Azureのみ有効にする
  • ローカルブリッジ設定で仮想HUB VPNを作成
  • 作成する種類はtapデバイス(tapデバイス名:vpn)

注意:ここで誤って物理LANカード(ens**)をブリッジに設定してしまうとネットワークループします。ブリッジ(br0)を設定した場合は、普通に動くように振る舞いますが、VPN接続時に他タスクがアクセスできなくなるため、VPN接続が使い物にならないくらいに遅くなります。

設定後、サーバー管理マネージャでVPN AzureのDDNSが割当てされていれば、クラウド上のVPN Azureと接続ができており、VPNクライアントの待受状態になっています。

Ubuntu側でip addressコマンドを使って、tap_vpnが割り当てられているか確認し、4:にtap_vpnが割り当てされていればサーバー設定はOKとなります。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether bc:24:11:7c:da:be brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet6 fe80::ded1:e183:a091:1801/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 02:b4:80:c0:e1:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.251/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::b4:80ff:fec0:e109/64 scope link
       valid_lft forever preferred_lft forever
4: tap_vpn: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
    link/ether 5e:c2:92:0c:a9:08 brd ff:ff:ff:ff:ff:ff

tap_vpnが割り当てできていない場合は、サーバー管理マネージャでのローカルブリッジ設定が誤っていますので、設定を削除して再作成してください。

ループ状態で放置していると、ブロードキャストが大量発生し、系統内の通信に悪影響が出ることがありますので、ネットワーク設定は早急に見直ししましょう。(家庭用HUBはループ切り離し処理がないため、家庭内のネットワークが動かなくなります。)

以上で設定は完了です。

ネットワーク設定をミスらないように細心の注意を払いましょう。

(手順5)Windowsクライアント側から通信テスト

Windowsクライアントからの接続は、公式HPからVPNクライアントソフトをインストールし、以下の設定をいれます。

  • 接続設定名:接続先がわかるような任意の名称
  • ホスト名:vpnサーバーのDDNS名称(vpn*********.vpnazure.net)
  • 仮想HUB名:SoftEtherサーバーに設定した仮想HUB(VPN)
  • ユーザーとパスワード:SoftEtherサーバーに設定したVPN接続アカウント

VPNの内側(LAN側)に接続していると、自分の端末が2つのIPアドレスをもってしまいループを構成してしまいます。

Windows端末をスマホのテザリング機能を使って、外部インターネット側から接続するようにしてください。

接続出来ない場合のトラブルシューティング

筆者が遭遇した不具合事例を紹介します。

認証までいくが最後に失敗する場合

「コンピュータへの接続を確立できませんでした。この接続用にネットワーク設定の変更が必要である可能性があります。」

このメッセージはVPNサーバーがDHCPサーバーとの連携ができない場合に発生します。

WindowsOSの場合、標準ではNATの動作が制限されていることもあり、ここで繋がらないという方も多いかと思います。

SoftEther VPNサーバー管理マネージャ>仮想HUBの管理>仮想NATおよび仮想DHCPサーバー機能>SecureNAT機能を有効にすると回避できます。

ubuntuの場合は制約がないので、デフォルト状態で動作します。

VPN経由で入るとVPNサーバーにアクセスできない

仮想HUBに物理NIC(ens**)かブリッジ(br0)が割り当てられていることが原因です。

ログを見ると、VPN接続の度に”大量のブロードキャストパケットを検出しました。”とのログが確認できます。

2024-06-23 17:51:37.943 セッション "SID-FALCON-2": パラメータが設定されました。最大 TCP コネクション数 2, 暗号化の使用 はい, 圧縮の使用 いいえ, 半二重通信の使用 いいえ, タイムアウト 20 秒
2024-06-23 17:51:37.953 セッション "SID-FALCON-2": VPN Client の詳細: (クライアント製品名 "SoftEther VPN Client", クライアントバージョン 443, クライアントビルド番号 9799, サーバー製品名 "SoftEther VPN Server (64 bit)", サーバーバージョン 442, サーバービルド番号 9798, クライアント OS 名 "Windows 10", クライアント OS バージョン "Build 19045, Multiprocessor Free (19041.vb_release.191206-1406)", クライアントプロダクト ID "--", クライアントホスト名 "DESKTOP-J9AA2S6", クライアント IP アドレス "192.168.0.12", クライアントポート番号 60134, サーバーホスト名 "vpn424845027.vpnazure.net", サーバー IP アドレス "130.158.6.104", サーバーポート番号 443, プロキシホスト名 "", プロキシ IP アドレス "0.0.0.0", プロキシポート番号 0, 仮想 HUB 名 "VPN", クライアントユニーク ID "3D0D597ED9F75708A3A76831B999BF80")
2024-06-23 17:51:41.149 セッション "SID-LOCALBRIDGE-1": このセッション上のホスト "72-A7-41-A0-18-6E" (192.168.0.1) の DHCP サーバーは、別のセッション "SID-FALCON-2" 上のホスト "5E-09-3E-B5-2E-C0" に対して新しい IP アドレス 192.168.0.18 を割り当てました。
2024-06-23 17:52:23.432 セッション "SID-FALCON-2": 大量のブロードキャストパケットを検出しました。ポリシーに従ってパケットを破棄する場合があります。送信元 MAC アドレスは 5E-09-3E-B5-2E-C0, 送信元 IP アドレスは 192.168.0.18, 宛先 IP アドレスは 0.0.0.0 です。ブロードキャストパケット数は 1 秒間に 48 個以上です (なおこの情報はパケットの一部を機械的に解析した結果であり、不正確な場合があります)。
2024-06-23 17:53:44.940 セッション "SID-FALCON-2": セッションが終了しました。統計情報は次の通りです。合計送信データサイズ: 174115 バイト, 合計受信データサイズ: 134205 バイト

原因は、ubuntuのvpnserver設定で"tap"を設定していないために発生する事象です。

手順3の要領でtap_vpnを設定するか、面倒であれば物理NICを追加することで対策できます。

会社PCではVPN接続ができない

会社のネットワークではSoftEtherが利用するポートに制限をかけられていることがあります。

自分ではどうしようもないため、会社にSoftetherの動作許可をもらうことで対処する必要があります。

ルータの穴あけは必要ですが、L2TPやOpenVPNは許可されている場合もあるため、一度システム管理者に問い合わせてみてください。

SoftEtherは国産の超優秀ソフト

IPoE回線でL2TPが使えなかったことがきっかけで、SoftEtherという素晴らしいVPNソフトを知ることできました。

いままでNEC IXルーターでL2TPのVPNを構築していましたが、WindowsのL2TP接続は直感的ではないため、使い方を教えるのにも時間がかかってました。

その点、SoftEtherはクライアントソフトのGUIも秀逸で誰でも簡単に使えます。ノートPCで蓋を閉じて通信切断しても、復帰時にすぐ再接続までしてくれます。

結局、VPNサーバーはSoftEtherへ切り替えることにしました。