インターネット回線が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へ切り替えることにしました。