PPTPのGRE転送を回避!Windows Server RRAS+NPSでL2TP VPNを安定稼働させる方法

遠隔からネットワークへの安全な接続を構築する方法として、VPNは欠かせない存在です。しかし、Windows ServerのRRAS(Routing and Remote Access Service)とNPS(Network Policy Server)を同居させた環境でPPTPを利用すると、GREの通過設定がネックとなり、外部から接続できないトラブルに悩むケースもあります。そこで、本記事ではPPTPとGREに関する考察から、最終的にL2TP/IPsecへの切り替えで問題を解消する流れを、具体的な設定例やポイントを交えながら詳説していきます。

Windows ServerのRRASとNPSを使ったVPN構築の概要

Windows Serverには標準機能として、VPNを実装できる「RRAS(Routing and Remote Access Service)」と、認証やポリシー管理を担う「NPS(Network Policy Server)」が用意されています。これらを同一サーバー上にセットアップし、PPTPやL2TPなどのVPNプロトコルを提供するのはよくある構成です。社内ネットワークに接続しなくても、業務に必要な社内リソースへアクセス可能になるため、リモートワークや出張時に非常に便利です。

RRASとNPSが同居するメリット

  • 物理サーバーや仮想マシンリソースの節約
  • Windows Server標準機能で一貫して設定できる
  • 別サーバーと比べて設定や連携の手間を減らせる

RRASではVPNの接続受付やルーティングを行い、NPSがRADIUSサーバーとしてユーザー認証や接続ポリシーの判定を担当します。この構成により、一元的にVPN接続の可否管理やログ収集ができる利点があります。

トラブルが起きやすいポイント

  • ファイアウォール(特にLinuxベース)でPPTPを通すためのGRE(プロトコル番号47)の扱い
  • WAN側のネットワーク機器でポート転送(TCP 1723など)の誤設定
  • NPSの認証ポート(UDP 1812, 1813, 1645, 1646)の開放漏れ

PPTP接続は内側のネットワークからは問題なく利用できる一方で、外部ネットワークからはGREを通せず、VPNのセッション確立に失敗するケースが少なくありません。

PPTP接続が外部からできない原因:GREの扱い

PPTPはTCP 1723番ポートと、GRE(Generic Routing Encapsulation)をセットで利用する通信方式です。TCP 1723が開いていても、GREが通過しなければVPNトンネルは張れません。Linuxベースのファイアウォールや一部のISPルータでは、このGREを許可する設定が複雑である場合があります。

なぜGREが厄介なのか

GREはポート番号ではなく、プロトコル番号47を使っている点が最大の特徴です。一般的なTCP/UDPポートフィルタリングとは異なり、ファイアウォールによっては「GREを通すためのモジュールが別途必要」「パケットインスペクション設定が特殊」などの制限がある場合があります。特に、iptablesをベースにした環境で十分なモジュールが組み込まれていないと、GREトラフィックが弾かれてしまうことがあります。

たとえば、Linux系ファイアウォール(iptables)であれば以下のようにGREモジュールを使用する必要があります。

# modprobe ip_gre
# iptables -A INPUT -p gre -j ACCEPT
# iptables -A FORWARD -p gre -j ACCEPT

上記のような明示的なモジュールロードとルール追加を行わないと、PPTP VPNの接続は失敗することが多いです。また、カーネルビルドオプションにより、GREサポートが組み込まれていない可能性も否定できません。

GRE転送が難しいときの対処方法

  • DMZ設定の利用
    LinuxファイアウォールにPPTP用のGREパススルー設定が難しい場合、DMZホスト設定としてWindows Server自体にすべてのトラフィックを通す方法があります。セキュリティリスクは高まるため、十分な検討と追加のフィルタリングが必要です。
  • VPNサーバーの配置を変更
    ファイアウォールの背後にWindows Serverを設置していてGREが通らないなら、VPNサーバーを別段階のルータ側に置くか、ISPルータにPPTPパススルー機能がある場合はそちらを使う手段もあります。

L2TP/IPsecへの切り替えによる問題解決

PPTPは設定が容易な反面、暗号強度やGREの通過要件などの問題を抱えています。そこで、外部接続が安定しない場合はL2TP/IPsecへ移行を検討するのが一般的です。L2TP/IPsecを利用すれば、GREを使わないためにファイアウォールの設定が大幅に簡素化され、セキュリティ面でも優位になります。

L2TP/IPsec接続に必要なポートとプロトコル

L2TP/IPsecを通すためには、以下のUDPポートとプロトコルを意識します。

種類ポート/プロトコル用途
L2TPUDP 1701L2TPトンネル確立
IKEUDP 500IKE(ISAKMP)の交渉
NAT-TUDP 4500NAT越え時のIKE再交渉
ESPIPプロトコル番号50 (ESP)暗号化・認証を提供
AH(任意)IPプロトコル番号51 (AH)追加の認証ヘッダ

上記に加えて、NPSがRADIUS認証を担う場合は以下のUDPポートが必要です。

  • 1812 (RADIUS認証)
  • 1813 (RADIUSアカウンティング)
  • 1645, 1646 などの旧ポートを使用する設定例もあり

Windows ServerでL2TP/IPsecを設定する流れ

  1. RRASの役割インストール
    サーバーマネージャーで「役割と機能の追加」を開き、RRASをインストールします。インストール後、RRASコンソールから「VPNとRAS構成ウィザード」を利用し、VPNサーバーとしての初期セットアップを行います。
  2. IPsec用の事前共有キー(PSK)または証明書設定
    L2TP/IPsecでは、事前共有キー(Pre-Shared Key)もしくは証明書による認証方式を選択できます。証明書ベースの方がセキュリティは高いですが、運用負荷が上がるため、シンプルにPSKを利用する企業も多いです。
  3. NPS側のRADIUSポリシー構成
    NPSマネージメントコンソールで、VPN接続クライアント用のネットワークポリシーを作成します。ユーザーまたはグループ単位で、VPN接続を許可・拒否する条件を細かく設定可能です。
  4. Windowsファイアウォールの設定
    Windows Server自体のWindows Defender Firewallでも、UDP 1701, 500, 4500などの受信ルールを作成し、外部からアクセスできるようにしておきます。
  5. 外部ファイアウォールのポート転送
    外部のLinuxファイアウォールやルータで、上記のポート・プロトコル(UDP 1701, 500, 4500, ESPなど)をWindows Serverの内部IPへ転送します。
  6. クライアント側でのVPNプロファイル作成
    Windowsクライアント、Mac、iOS、Androidなど、各デバイスでL2TP/IPsec設定を行います。事前共有キーを設定する場合は、PSKをクライアント側にも適切に登録します。

設定例:iptableでL2TP/IPsecを通す場合

以下はLinuxファイアウォールでiptablesを使い、L2TP/IPsec用のトラフィックを内部のWindows Server(192.168.1.10 など)に転送する例です。

# UDP 1701 (L2TP) の転送
iptables -t nat -A PREROUTING -p udp --dport 1701 -j DNAT --to-destination 192.168.1.10:1701
iptables -A FORWARD -p udp --dport 1701 -d 192.168.1.10 -j ACCEPT

# UDP 500 (IKE) の転送
iptables -t nat -A PREROUTING -p udp --dport 500 -j DNAT --to-destination 192.168.1.10:500
iptables -A FORWARD -p udp --dport 500 -d 192.168.1.10 -j ACCEPT

# UDP 4500 (NAT-T) の転送
iptables -t nat -A PREROUTING -p udp --dport 4500 -j DNAT --to-destination 192.168.1.10:4500
iptables -A FORWARD -p udp --dport 4500 -d 192.168.1.10 -j ACCEPT

# ESP (プロトコル番号50) の転送
iptables -t nat -A PREROUTING -p esp -j DNAT --to-destination 192.168.1.10
iptables -A FORWARD -p esp -d 192.168.1.10 -j ACCEPT

これに加え、NPSを利用する際はUDP 1812, 1813などのRADIUSポートも同様に転送設定を入れる必要があります。

PPTPからL2TPへ移行した際のメリット

GREを扱うPPTPに比べて、L2TP/IPsecは暗号化の強度が高く、企業のセキュリティポリシーに適合しやすい点が評価されています。さらにGRE転送のような手間のかかる設定が不要になるため、外部ファイアウォール側の運用負担が大幅に減ります。

移行時の注意点

  • クライアント設定の更新
    PPTP専用のVPN接続を設定していたクライアントPCやスマートフォンは、L2TP/IPsec用の設定へ切り替える必要があります。事前共有キー方式の場合、共有キーの配布手段をしっかりと管理しないと、情報漏洩リスクが上がる恐れがあります。
  • 証明書管理
    セキュリティをより強固にするため、自己署名証明書ではなく企業内CAや信頼できる認証局が発行する証明書を用意するのがベストです。証明書の有効期限管理を怠ると、突然VPNが利用できなくなるトラブルにつながります。
  • ログの収集と分析
    L2TP/IPsecでも接続トラブルはゼロではありません。Windows Server側のEvent ViewerやNPSログ、クライアントのVPNログを定期的に確認し、問題の早期発見に努めましょう。

RRAS + NPSでのトラブルシューティング

VPNが確立できない場合、原因を特定するための手順として、以下を確認することが有効です。

1. イベントビューアの参照

Windows Serverの「イベントビューア」で、RRASとNPSに関連するエラーや警告がないかをチェックします。特に「Application and Services Logs」→「Microsoft」→「Windows」→「RemoteAccess」あたりにはVPN接続の成功・失敗が記録されています。NPSなら「NPS」ログも合わせて要確認です。

2. ルーティングテーブルの確認

RRASで正しくルーティングが設定されているか確認します。VPNクライアントにIPアドレスが割り当てられているのに、社内ネットワークへ疎通が取れない場合は、ルーティング設定に漏れがある可能性があります。

# Windows上でルーティングテーブルを表示する例
route print

特に、LAN側へのゲートウェイ設定や、VPNクライアント向けの静的ルート設定が正しいかを再確認します。

3. RADIUSポートの設定とファイアウォール

NPSがRADIUSサーバーとして動作している場合、UDP 1812や1813、もしくは1645/1646が正しく開放・転送されているかを確認します。外部からRADIUSパケットを受け取れなければ、ユーザー認証そのものが失敗し、VPN接続できません。

RADIUS通信のトラブル例

  • 外部ネットワークからのRADIUSパケットが到達しない
  • ルータでRADIUSポートを別のサーバーに転送してしまっている
  • Windows Defender FirewallでRADIUSポートがブロックされている

4. クライアント側のVPN設定

クライアントOSによっては、PPTPを選択する際の設定画面が見落としやすかったり、L2TP/IPsecで事前共有キーを入力し忘れることがあります。トラブルシューティングの際は、クライアント設定も再度見直すことが重要です。

セキュリティと運用上のベストプラクティス

VPN接続はインターネット上を経由して社内ネットワークへアクセスする仕組みであるため、正しく設定しないと不正侵入や情報漏洩などのリスクが高まります。以下のポイントを押さえて、セキュアなVPN運用を目指しましょう。

定期的なパッチ適用とアップデート

Windows ServerやLinuxファイアウォールのセキュリティアップデートは、VPN稼働中であっても後回しにせず、計画的に実施しましょう。既知の脆弱性を放置すると、VPNを足がかりとした攻撃のリスクが大きくなります。

不要なプロトコルやポートの閉鎖

VPN接続のために開放するポートやプロトコルは必要最小限にとどめ、それ以外は閉じておくのが基本です。ポートスキャンに対して無防備になると、他のサービスが狙われる可能性があります。

多要素認証(MFA)の導入

NPSとAzure ADなどを連携すれば、多要素認証を組み合わせたVPNログインも実現可能です。パスワード流出だけでは突破されない仕組みを作ることで、リスクを大幅に低減できます。

監査ログの活用

NPSやRRASのログに加えて、ファイアウォールの接続ログもこまめに分析します。VPNの接続状況や失敗理由、異常な接続試行がないかを監査しておくことで、潜在的な脅威を早期に検知できます。

まとめ

PPTPを利用したVPN構築は、設定がシンプルである反面、GRE(プロトコル番号47)を通すためにファイアウォール設定が複雑になりがちです。特にLinuxベースのファイアウォールや、GRE転送に非対応の機器を使っている場合は、外部からの接続が確立できないというトラブルに直面しやすくなります。そのため、GREの転送設定が困難な場合やセキュリティ上の要件が高い場合は、L2TP/IPsecへの移行がおすすめです。

L2TP/IPsecならば、PPTP特有のGRE設定が不要になり、暗号化の強度も上がります。Windows Server上ではRRASとNPSを併用することで、RADIUS認証を含めたVPN環境を統合的に管理できます。ポート転送やプロトコル設定こそ必要になりますが、正しくセットアップすることで内外から安全かつ安定したリモートアクセスが可能になります。

VPNは業務効率を大きく向上させる一方で、設定の誤りがセキュリティリスクにつながりやすい技術でもあります。定期的なログの確認やファイアウォールルールの見直し、OSやソフトウェアのアップデートは欠かさずに行い、安心して使えるVPN環境を維持しましょう。

コメント

コメントする