MikroTik の PPTP が切れる?サーバーへのルートを直す
接続してから切れる PPTP クライアントは、たいてい自分のトランスポートをトンネルに送っています。サーバーのアドレスを WAN に固定するか、デフォルトルートを止めてください。
RouterOS の PPTP クライアントが接続し、少し通信してから止まり、ログは認証情報やサーバーの問題のように見えます。ふつうはどちらでもありません。トンネルが自分のトランスポートパケットを運んでいるからです。サーバーへのルートが、トンネルが入れたルートとも一致しているのです。相手側はルーターの声を聞かなくなり、インターフェースがまだ稼働中と主張する間にセッションは死にます。
直し方は、ルートを一本、または設定を一つで、サーバーを物理 WAN 経由で到達可能に保つことです。どちらが必要かは、ルーターをフルトンネルのゲートウェイにするかで変わります。
症状:接続し、通信し、止まる
再接続のたびに同じパターンが繰り返され、それが最初の手がかりです。拒否されたパスワードはインターフェースが上がる前に失敗し、ファイアウォールの設定ミスはふつう片方向を止め、ルーティングループはインターフェースを確立させてから絞め殺します。カウンターを見てください。トンネルは最初のパケットの噴出のあと何も示さず、WAN インターフェースはカプセル化したコピーを送り続けます。これは自分の出力を自分に戻しているルーターです。
PPTP でこれが起きやすいのは、トランスポートがサーバーのアドレスへの素の IP だからです。遠端が別のサブネットにあるトンネルではありません。そのアドレスを迂回させるものは、トランスポートも一緒に迂回させます。
トンネルが自分のパケットを飲み込む理由
クライアントが接続すると、ゲートウェイがトンネルインターフェースのルートを入れます。プロファイルがデフォルトルートも入れると、より具体的な一致のないすべての宛先、サーバーのパブリックアドレスも含めて、トンネルへ解決されます。ルーターはパケットをカプセル化し、外側のパケットをサーバー宛てにして、もう一度ルートを引きます。同じ宛先、同じデフォルト、同じトンネルです。リリースによって、その再帰は破棄され、キューに入れられ、あるいは相手が諦めてセッションを切るまでループします。
アプライアンスベンダーは自社サーバー用のホストルートを自動で足すことが多く、まさにこれを避けるためです。RouterOS はそれを前提にしないので、運用者が例外を書くか、最初からデフォルトルートを避ける必要があります。
サーバーのアドレスを WAN に固定する
可能な限り狭いルートを足します。サーバーのパブリックアドレスに /32、次ホップをプロバイダーのゲートウェイにして、インターネットに出るインターフェース上に置きます。/32 はプレフィックス長でどのデフォルトにも勝ち、同じプレフィックスの別ルートがすでにあれば距離の小さいほうが勝ちます。そのうえで再接続し、ルートが一覧にあるだけでなく有効になっていることを確認します。
/ip route add dst-address=198.51.100.10/32 gateway=192.0.2.1 distance=10プロバイダーのゲートウェイを DHCP で学ぶ場合は、DHCP が入れたゲートウェイアドレスを使うか、リリースが対応していればルートをインターフェースに結び付けます。次のリースで変わる固定のゲートウェイは、遅れてやってくる故障です。WAN の再接続後にアドレスを確認してください。そのとき古いゲートウェイが現れ、トンネルがまた切れ始めます。
またはトンネルにデフォルトを主張させない
遠隔 LAN を一つだけ必要とする支店なら、PPTP プロファイルをデフォルトルートから完全に離すべきです。クライアントプロファイルでそのオプションを切り、代わりにトンネルインターフェース経由で遠隔プレフィックスへの個別ルートを足します。通常の通信は WAN に残り、トンネル自身のトランスポートは自然な経路を保ち、ルーティングテーブルの説明も簡単になります。これは一つのサブネットを必要とする支店に向く設計で、拠点の出口になるべきルーター向けではありません。
フルトンネルには独自の要件があります。選択した送信元のポリシールーティング、戻り通信の計画、トンネルが落ちたときの扱いの決定です。どれもホストルートでは解決しません。ホストルートはトランスポートを生かすだけです。
層ごとに確認し、そのあと管理の穴を閉じる
層ごとに試します。接続前にサーバーのパブリックアドレスへ ping し、接続後に遠隔ゲートウェイへ ping し、そのあと遠隔 LAN のホストへ ping します。ルーターの背後のホストが応答をこのインターフェース経由で受け取る必要があるなら、トンネルインターフェースに masquerade を足します。
/ip firewall nat add chain=srcnat out-interface=pptp-out1 action=masqueradeそのあとルーターを再起動するか WAN の再接続を強制して、三つの ping を繰り返します。実行中の設定にしかないルートは残らないからです。バックアップファイルにエクスポートして後で復元する設定も、これが壊れるもう一つの場所です。実行時に足したルートはエクスポートに含まれないことがあります。
最後に、VPN やルートの変更を公開する前に、Winbox と Web 管理を既知の送信元アドレスに限定します。トンネルを終端するルーターは管理の標的であり、世界に開いたポート 80 は、いま直したルートより大きな発見です。