Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

NAT環境下でのL2TP/IPsec VPN接続設定とエラー809の対処法

iOSでPPTP VPNのサポートが廃止されたことを受け、あるクライアントはWindows Server 2012 R2上のVPNサーバーをPPTPからL2TP/IPsecへ再構成しました。LAN内部のクライアントはVPNサーバーへ問題なく接続できるものの、外部のWindowsクライアントから接続を試みると、次のようなエラーコード809が表示されます。

「L2TP-IPsec-VPN-Server.hostname に接続できません。コンピューターとVPNサーバー間のネットワーク接続を確立できませんでした。リモートサーバーが応答していません。これは、コンピューターとリモートサーバー間のネットワークデバイス(ファイアウォール、NAT、ルーターなど)のいずれかが、VPN接続を許可するよう構成されていないことが原因と考えられます。問題の原因となっているデバイスを特定するには、管理者またはサービスプロバイダーにお問い合わせください。」

なお、Windowsのバージョンによっては、800794809などのエラーコードが同じ問題を示す場合があります。

このVPNサーバーはNATの背後に配置されており、ルーターでは以下のL2TP関連ポートがポートフォワーディングされるよう設定されています。

  • UDP 1701 — L2F(Layer 2 Forwarding Protocol)およびL2TP(Layer 2 Tunneling Protocol)
  • UDP 500 — IKE(Internet Key Exchange)
  • UDP 4500 — NAT-T(IPsec NAT Traversal)
  • プロトコル50(ESP) — Encapsulating Security Payload

これらのポートは、WindowsファイアウォールのVPN接続用ルールでも開放されています。つまり、ごく標準的な構成であり、接続にはWindows標準のVPNクライアントを使用しています。ちなみに、同じVPNサーバーにPPTP経由で接続した場合は、正常に接続が確立できます。

NAT配下のWindowsで発生するL2TP/IPsecのVPNエラー809

調査の結果、この問題はMicrosoftのサポート記事(https://support.microsoft.com/en-us/kb/926179)で説明されている既知の問題であることがわかりました。Windows標準のVPNクライアントは、デフォルトではNAT越しのL2TP/IPsec接続をサポートしていません。その理由は、IPsecがパケットの暗号化にESP(Encapsulating Security Payload)を使用するのに対し、ESPがPAT(ポートアドレス変換)をサポートしていないためです。IPsecで通信したい場合、MicrosoftはVPNサーバーにグローバルIPアドレスを使用することを推奨しています。

しかし、回避策も存在します。NAT-Tプロトコルのサポートを有効にすれば、ESP(プロトコル50)のパケットをUDP 4500番ポートのパケットにカプセル化できるようになります。NAT-TはWindowsを除くほぼすべてのOS(iOS、Android、Linux)でデフォルトで有効になっています。

L2TP/IPsec VPNサーバーがNATデバイスの背後にある場合、外部クライアントがNATを通じて正しく接続できるようにするには、サーバー側とクライアント側の両方でレジストリを変更し、L2TPのUDPパケットカプセル化とIPsecのNAT-Tサポートを許可する必要があります。

  • レジストリエディター(regedit.exe)を開き、以下のレジストリキーに移動します。
    • Windows 10/8.1/Vista および Windows Server 2016/2012 R2/2008 R2 の場合 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Windows XP/Windows Server 2003 の場合 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
  • AssumeUDPEncapsulationContextOnSendRule という名前の DWORD 値を作成し、値を 2 に設定します。

注:AssumeUDPEncapsulationContextOnSendRule に設定できる値は以下のとおりです。

  • 0 — (デフォルト値)サーバーがNATなしでインターネットに接続していることを前提とします。
  • 1 — VPNサーバーがNATデバイスの背後にあることを前提とします。
  • 2 — VPNサーバーとクライアントの両方がNATの背後にあることを前提とします。

その後、コンピューターを再起動し、VPNトンネルが正常に確立されることを確認してください。

[注意] WindowsのVPNサーバーとクライアントの両方がNATの背後にある場合は、両方のデバイスでこの設定を変更する必要があります。

また、PowerShellコマンドレットを使用してレジストリを変更することもできます。

Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;

NAT-Tサポートを有効にすると、クライアントからNAT経由(二重NATを含む)でVPNサーバーに正常に接続できるようになります。

場合によっては、VPNを正常に動作させるために、TCP 1701用の追加のファイアウォールルールを有効にする必要があります(一部のL2TP実装では、このポートがUDP 1701と組み合わせて使用されます)。

なお、Windows 10の初期ビルド(10240、1511、1607など)ではNAT-Tが正しく動作しないことがあります。古いWindowsバージョンをお使いの場合は、Windows 10のビルドをアップグレードすることをお勧めします。

同じLANからの複数のL2TP VPN同時接続の問題

もうひとつ興味深いVPNの不具合があります。ローカルネットワーク内に複数のWindowsコンピューターがある場合、外部のL2TP/IPsec VPNサーバーへの同時接続は1台分しか確立できません。別のコンピューターから(別のデバイスでアクティブなVPNトンネルが存在する状態で)同じVPNサーバーに接続しようとすると、エラーコード809または789が表示されます。

エラー 789: リモートコンピューターとの初期ネゴシエーション中にセキュリティレイヤーで処理エラーが発生したため、L2TP接続の試行に失敗しました。

興味深いことに、この問題はWindowsデバイスでのみ発生します。同じローカルネットワーク上のLinux/macOS/Androidデバイスではこのような問題は発生せず、複数のデバイスから同時にL2TP VPNサーバーへ問題なく接続できます。

TechNetによると、この問題はWindowsのL2TP/IPsecクライアントの実装不具合に起因するもので、長年修正されていません。

この不具合を修正するには、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters レジストリキー内の2つの値を変更し、コンピューターを再起動します。

  • AllowL2TPWeakCrypto00000001 に変更(弱い暗号化アルゴリズムを許可します。L2TP/IPsecではMD5とDESアルゴリズムが使用されます)。
  • ProhibitIPSec00000000 に変更(IPsec暗号化を有効にします。一部のVPNクライアントやシステムツールによって無効化されていることがあります)。

以下のコマンドを実行して、これらのレジストリ変更を適用します。

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f

これにより、Windowsで共有グローバルIPアドレスを介したL2TP/IPsec VPNの同時接続がサポートされるようになります(Windows XPからWindows 10までのすべてのバージョンで動作します)。

  1. Windows 10でVPNエラー809が発生したときの原因と解決策を徹底解説

    VPN(仮想プライベートネットワーク)は、ウェブ閲覧時のオンラインプライバシーを強化するために欠かせないサービスです。閲覧履歴を安全に保ち、第三者に追跡されないようにすることはもちろん、地域制限で視聴できない映画やテレビ番組を楽しむ際にも、現代のデジタル時代においてVPNは心強い味方となってくれます。 VPNに接続する際、Windows 10 PCで「VPNエラー809」に遭遇したことはありませんか?エラー809はよくあるVPNエラーの一つで、デバイス(ローカルクライアント)とリモートサーバー間の接続確立を妨げてしまうトラブルです。 この記事では、VPNエラー809に関する基本情報、発生原因

  2. HuluエラーコードPLAUNK65とは?原因と解決方法をわかりやすく解説

    Huluは、世界で3,500万人以上のアクティブユーザーを抱える、最も人気のあるオンライン動画配信サービスの一つです。アメリカ発のサブスクリプション型メディアプラットフォームとして、Huluオリジナル作品や受賞歴のある番組、映画など、幅広いエンターテインメントコンテンツを提供しています。さらにHuluには「LIVE TV」ポータルもあり、ケーブルテレビ契約なしで65以上の人気チャンネルを視聴できるのも大きな魅力です。さて、あなたがHuluのアクティブユーザーでこの記事を読んでいるということは、アカウントにアクセスした際に「PLAUNK65」というエラーコードに遭遇したことがあるかもしれません。