【Windows】VPNの通信単位を最適化して速度とデータの欠落を改善する手順

【Windows】VPNの通信単位を最適化して速度とデータの欠落を改善する手順
🛡️ 超解決

VPN接続を利用しているビジネスマンにとって、通信速度の低下やデータ欠落は業務の生産性を大きく妨げる問題です。

これらの問題は、VPN通信で使用されるデータパケットの大きさが、ネットワーク経路に合致していないことが原因で発生する場合があります。

この記事では、Windows 11を基準に、VPN通信の単位であるMTUとMSSの値を最適化し、通信速度と安定性を向上させる具体的な手順を解説します。

【要点】VPN通信のMTU/MSSを最適化するポイント

  • 現在のMTU値の確認: ネットワークインターフェースの現在のMTU値を確認し、設定変更の準備をします。
  • 最適なMTU値の特定: pingコマンドを利用して、経路上の最適なMTU値を特定し、フラグメンテーションを防ぎます。
  • MTU値とMSS値の変更: ネットワークインターフェースとレジストリを操作し、通信単位を最適化して速度とデータの欠落を改善します。

ADVERTISEMENT

VPN通信におけるMTU/MSSの重要性

VPN接続が遅い、または不安定な場合、ネットワークの通信単位であるMTUとMSSの値が原因となっていることがあります。

MTUはMaximum Transmission Unitの略で、ネットワークインターフェースが一度に送信できる最大のパケットサイズを指します。

MSSはMaximum Segment Sizeの略で、TCPセグメントのデータ部分の最大サイズを指し、MTUからIPヘッダーとTCPヘッダーのサイズを差し引いた値です。

VPNトンネルを通過する際、元のパケットにVPNヘッダーが付加されるため、パケットサイズが増大します。

この増大したパケットが経路上のMTU値を超えると、パケットが分割されるフラグメンテーションが発生します。

フラグメンテーションが発生すると、パケットの処理に時間がかかり、再送処理が増えることで通信速度が低下したり、データ欠落が発生したりする原因となります。

Windows 11でもWindows 10でも、VPN通信の安定化と高速化のためには、これらの値を適切に調整することが重要です。

VPN通信のMTU/MSS値を最適化する手順

ここでは、Windows 11でVPN通信のMTUとMSS値を最適化する具体的な手順を説明します。

レジストリを編集する前に、必ずバックアップを取得してください。

レジストリのバックアップを取得する手順

  1. レジストリエディターを開く
    スタートボタンを右クリックし、「ファイル名を指定して実行」を選択します。名前に「regedit」と入力し、「OK」をクリックしてレジストリエディターを起動します。
  2. バックアップ対象を選択する
    左側のナビゲーションペインで、バックアップしたいキーまたはルートを選択します。通常は「コンピューター」全体を選択します。
  3. バックアップを実行する
    「ファイル」メニューから「エクスポート」を選択します。ファイルの種類を「レジストリ ファイル (*.reg)」に設定し、任意のファイル名で保存先を指定して「保存」をクリックします。

現在のMTU値とインターフェース名を確認する手順

  1. コマンドプロンプトを管理者として実行する
    スタートボタンを右クリックし、「ターミナル 管理者」または「Windows PowerShell 管理者」を選択します。
  2. インターフェース情報を表示する
    コマンドプロンプトに「netsh interface ipv4 show subinterfaces」と入力し、Enterキーを押します。表示されたリストから、使用しているVPN接続のインターフェース名と現在のMTU値を確認します。

最適なMTU値を特定する手順

  1. pingコマンドでMTUをテストする
    コマンドプロンプトに「ping -f -l [パケットサイズ] [VPNサーバーのIPアドレスまたはホスト名]」と入力し、Enterキーを押します。
  2. 最適な値を特定する
    「パケットサイズ」の部分を1472から開始し、徐々に値を下げながらテストします。「Packet needs to be fragmented but DF set.」のようなメッセージが表示されなくなるまでサイズを小さくします。最後にエラーが出ずに応答が返る最大のパケットサイズに28バイト(IPヘッダー20バイトとICMPヘッダー8バイト)を足した値が、経路上の最適なMTU値の目安です。例えば、1440バイトで成功した場合、1440 + 28 = 1468が最適なMTU値の目安となります。

MTU値を変更する手順

  1. MTU値を設定する
    コマンドプロンプトに「netsh interface ipv4 set subinterface "[VPNインターフェース名]" mtu=[最適なMTU値] store=persistent」と入力し、Enterキーを押します。例えば、インターフェース名が「VPN接続」、最適なMTU値が1468の場合、「netsh interface ipv4 set subinterface "VPN接続" mtu=1468 store=persistent」となります。
  2. 設定が適用されたか確認する
    再度「netsh interface ipv4 show subinterfaces」と入力し、設定したMTU値が適用されているか確認します。

MSS値を変更する手順(レジストリ編集)

MSS値は、通常TCP接続が確立される際にネゴシエートされますが、明示的に設定することも可能です。特にMTUを調整しても効果が薄い場合に検討します。

  1. レジストリエディターを開く
    スタートボタンを右クリックし、「ファイル名を指定して実行」を選択します。名前に「regedit」と入力し、「OK」をクリックしてレジストリエディターを起動します。
  2. 該当パスへ移動する
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces」のパスに移動します。
  3. ネットワークアダプターのGUIDを探す
    「Interfaces」キーの下に複数のGUID(Global Unique Identifier)が表示されます。それぞれのGUIDキーを展開し、「Adapter Name」や「Description」の値を参照して、変更したいVPN接続に対応するネットワークアダプターのGUIDを特定します。
  4. 新しいDWORD値を作成する
    特定したGUIDのキーを右クリックし、「新規」から「DWORD 32ビット値」を選択します。名前を「TcpMss」と入力します。
  5. TcpMssの値を設定する
    作成した「TcpMss」をダブルクリックし、「値のデータ」に設定したいMSS値を入力します。ベースは「10進数」を選択してください。推奨されるMSS値は、特定した最適なMTU値から40バイト(IPヘッダー20バイトとTCPヘッダー20バイト)を引いた値です。例えば、MTUが1468の場合、1468 – 40 = 1428となります。
  6. システムを再起動する
    レジストリの変更を適用するために、Windowsを再起動します。

PowerShellでMTU値を変更する手順

PowerShellを使用すると、より簡単にMTU値を変更できます。

  1. PowerShellを管理者として実行する
    スタートボタンを右クリックし、「ターミナル 管理者」または「Windows PowerShell 管理者」を選択します。
  2. インターフェース名を確認する
    Get-NetAdapter」と入力し、Enterキーを押します。表示されたリストから、使用しているVPN接続のインターフェース名を確認します。例えば、「VPN接続」などです。
  3. MTU値を設定する
    Set-NetIPInterface -InterfaceAlias "[インターフェース名]" -NlMtuBytes [最適なMTU値]」と入力し、Enterキーを押します。例えば、インターフェース名が「VPN接続」、最適なMTU値が1468の場合、「Set-NetIPInterface -InterfaceAlias "VPN接続" -NlMtuBytes 1468」となります。
  4. 設定が適用されたか確認する
    Get-NetIPInterface -InterfaceAlias "[インターフェース名]" | Select-Object InterfaceAlias, NlMtuBytes」と入力し、設定したMTU値が適用されているか確認します。

MTU/MSS設定時のよくある問題と対処法

MTU/MSS値を調整する際に発生しやすい問題と、その解決策を説明します。

設定したMTU値が適用されない

VPN接続の種類によっては、MTU値がVPNクライアントソフトウェアやVPNサーバーの設定によって上書きされることがあります。

対処法として、まずコマンドで指定したインターフェース名が正しいか再確認してください。

VPNクライアントソフトウェアの設定にMTU調整オプションがある場合は、そちらの設定も確認し、変更を試みます。

また、VPNサーバー側でMTU/MSSの調整が必要な場合もありますので、VPN管理者に相談することも検討してください。

MTU/MSS値を小さくしすぎた場合

MTUやMSSの値を過度に小さく設定すると、データパケットが細かくなりすぎ、パケットヘッダーのオーバーヘッドが増大します。

これにより、かえって通信効率が低下し、速度が遅くなる可能性があります。

対処法として、pingコマンドで特定した最適な値から始め、少しずつ値を調整して最も安定した速度が得られる値を見つけることが重要です。

問題が発生した場合は、元の設定値に戻すか、一般的なイーサネットのデフォルト値(MTU 1500、MSS 1460)を試してみてください。

レジストリ編集後のシステム不安定化

レジストリの誤った編集は、Windowsの動作に深刻な影響を与える可能性があります。

対処法として、レジストリ編集を行う前に取得したバックアップファイルを使用して、元の状態に復元してください。

復元は、レジストリエディターの「ファイル」メニューから「インポート」を選択し、保存した.regファイルを開くことで行えます。

MTU/MSS以外の原因によるVPN速度低下

VPNの通信速度低下やデータ欠落は、MTU/MSS値の不一致だけでなく、様々な要因によって引き起こされることがあります。

対処法として、まずインターネット回線自体の帯域が十分かを確認してください。

また、VPNサーバーの負荷が高い、VPNプロトコルの選択が適切でない、ファイアウォールやセキュリティソフトウェアの設定が通信を阻害している、といった可能性も考えられます。

これらの要因も総合的に確認し、必要に応じて設定を見直すことが重要です。

ADVERTISEMENT

MTU/MSSのデフォルト値と推奨値の比較

項目 デフォルト値(一般的なイーサネット) VPN環境での推奨値の目安
MTU(Maximum Transmission Unit) 1500バイト 1300〜1400バイトの範囲で調整
MSS(Maximum Segment Size) MTUからIP/TCPヘッダーを引いた値(例: 1460バイト) MTUからIP/TCPヘッダーを引いた値で調整(MTU-40バイト)

この記事では、Windows環境でVPNのMTUとMSS値を最適化する具体的な手順を解説しました。

これらの値を適切に調整することで、VPN通信の安定性と速度が向上し、業務の生産性向上に貢献できます。

最適な値はネットワーク環境によって異なるため、pingコマンドで特定した値を基に、少しずつ調整を繰り返すことが重要です。

通信状況が改善しない場合は、他の要因も視野に入れ、VPNクライアントソフトウェアやVPNサーバー側の設定も確認してみてください。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。