treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Hyper-VのゲストSoftEtherでネットワーク設定(MTU)修正

前回<SoftEther Ver.4.44にバージョンアップ - treedown’s Report>にてバージョンアップを実施した際に気づいたことを記録します。

WindowsのクライアントHyper-VのゲストOS環境

Windows11のクライアントHyper-VのゲストOSでDebian11(Bullseye)を稼働し、そこにSoftEther VPN Serverをインストールして使用してる環境があります。

RaspberryPiで稼働するSoftEther環境と並行して稼働しています。

症状

SoftEther VPN Clientからアクセスした際に、いつの間にか上手く動作しなくなっていました。(以前は正常動作していましたので、Hyper-V側の「MACアドレスのスピーフィングを有効にする」設定有効化などは既に完了しています。)

接続すると、

この画面でSoftEtherの向こう側にいるDHCPサーバからIPを取得してくれないような動作になってしまったり、何回かに一回はIPが取得できるのですが、接続完了後にNASの共有フォルダにアクセスすると

このようなエラーになってしまってアクセス出来ないというエラーが表示されます。

同じPC(とインターネット接続経由で)RaspberryPi側の(正常動作する)SoftEtherに接続すると、IPの取得も問題ないし、

共有フォルダへのアクセスも問題なく可能な状況です。

差は接続先のSoftEther ServerなのでHyper-VでホストしているSoftEtherに問題があると切り分けました。

MTUの設定

Hyper-V上のDebianゲスト環境でSoftEtherを使っている構成において、MTUの値を調整することで通信が安定したという記事を見つけました。

参考:<https://takabus.com/tips/2765/>

こちら、当方の環境とほぼ同じ構成となっていて参考になりました。

参考にさせていただいた記事内容によれば、MTU値を設定することで通信が安定するとのことです。

結論を言ってしまうと、自分の環境でも同じくMTU値を二箇所設定してみたところ、問題になっていた前述のVPN接続の症状は収まって、正常に接続することができるRaspberryPi側のSoftEtherと同様に通信できるようになりました。

MTU(Maximum Transmission Unit)は、ネットワーク上で一度に送れるデータの最大サイズの指定です。RaspberryPiのSoftEtherで設定する必要はなかったので、Hyper-VのゲストOSで稼働させるSoftEtherだと必要になると認識しています。

設定方法

設定は</etc/network/interfaces>ファイル内にMTU項目を追記してOS再起動で適用させました。

--------------------------------------------------------------
$ cat /etc/network/interfaces
--------------------------------------------------------------
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.0.11
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
mtu 1454

auto eth1
iface eth1 inet static
#iface eth1 inet manual
address 0.0.0.0
mtu 2000
--------------------------------------------------------------

上記の「mtu 1454」と「mtu 2000」が追記した設定です。各NIC(eth0/eth1)の末尾に追記しています。

追記後にOSを再起動して有効化しました。

症状が改善した

結果として、上記の</etc/network/interfaces>ファイル内に記載したMTU値の設定が有効になったことで、今回問題となっていた以下の症状は発生しなくなりました。

・VPNクライアント接続時にIPアドレスが取得できないことがある
・共有フォルダに接続できず、エラーでアクセスが中断されることがある

MTUの設定を調整した後は、VPN接続直後にDHCPサーバからIPが割り当てられますし、共有フォルダもエラーになることなく開けるようになりました。
数回にわたって接続テストを行いましたが、いずれも正常動作が確認できています。

同じネットワーク環境に設置されたSoftEther VPN Serverであっても、Hyper-VゲストOSのDebian環境とRaspberryPiをベースにしたDebian環境(RaspberryPiはDebian派生OSですが)では、仮想化の有無で通信の処理に差がでることがあるようです。

Hyper-VのゲストOS環境では、仮想NICやホスト側ネットワーク(NIC)が影響してMTU値を明示的に調整する必要がある、ということだと考えました。