PPTP で LCP がピアにより終了:先に MPPE を有効化
PPTP リンクで LCP がピアに終了されるのは PPP ポリシーの不一致です。認証情報に触れる前に、MPPE の要件を比較し、pppd のログを読み、フック名を確認してください。
リンクは認証を通過し、クライアントは接続済みと報告し、その一秒後にログは LCP がピアにより終了したと記して閉じます。この行は GRE トンネル内の PPP ネゴシエーションから出たもので、トランスポートはすでに機能しており、両端がリンクのオプションで合意していなかったことを意味します。パスワードとサーバーアドレスは通常ここでは無実です。最初に比較すべきは暗号化ポリシーで、Linux では pppd のピアファイルが最初に見る場所です。
LCP の失敗が PPP 段階について示すこと
PPTP は PPP を GRE の中に包み、TCP 1723 の制御接続が呼を設定し、GRE がペイロードを運び、その後 LCP が認証プロトコル、圧縮、MPPE といったオプションを交渉します。必須のオプションが相手側で受け入れられないとき、ピアは LCP を終了します。CHAP または MSCHAPv2 の交換が完了し、その直後に LCP が終わるログはポリシーによる拒否であり、到達性の障害ではありません。トンネルが交渉にまったく到達しない場合は、LCP の行を読む前に pppd とそのプラグインを調べてください。
見落としやすい前提が二つあります。pppd のバイナリが存在し、ピアファイルに記された PPTP プラグインがインストールされていなければならず、パッケージが欠けているとどのオプションも議論される前にダイヤルが終わります。
MPPE を要求する側で有効にします
本当の判断は、暗号化ポリシーをどちらの端が持つかです。クライアントは MPPE を提示し、要求し、または拒否でき、サーバーも同じ選択をします。双方が要求すればリンクは上がり、一方が要求し他方が拒否すれば LCP は終わります。
pty "pptp vpn.example.net --nolaunchpppd"
name alice
remotename PPTP
require-mppe-128ダイヤルの前に、require-mppe-128 がこれなしでは失敗するため、modprobe ppp_mppe でモジュールを読み込んでください。Windows では同等の設定は VPN エントリのセキュリティタブで、サーバーが提示するものを受け入れるのではなく暗号化を要求するようクライアントに指示する必要があります。それでもサーバーが LCP を終了するなら、サーバーが拒否する保護をクライアントは交渉できないため、MPPE が必須か任意か無効かを運用者に尋ねてください。メッセージを消すために暗号化を切るのは、このプロトコルが持つ唯一の保護を失う逆方向の対処です。
編集する前に動作するピアファイルを保存してください。require-mppe の行を打ち間違えると同じ一般的な LCP 失敗が再現し、振り出しに戻ります。
アプレットではなく pppd 自身のログを読みます
デスクトップのアプレットは切断を表示するだけで理由を隠すので、デーモンによる一度の試行の記録を読みます。systemd のシステムではメッセージは journal に入り、古い構成では従来のログファイルに書き込まれます。
journalctl --since "10 min ago" | grep -i -E "pppd|lcp|mppe"
tail -n 50 /var/log/syslog一日分の再接続ではなく、一度のダイヤルの前後の時間帯を検索すると、拒否されたオプションが簡単に見つかります。pppd は通常オプション名とピアの応答を示すので、自分の提案を変えるべきか、サーバー側に要件を緩めるよう頼むべきかが分かります。試行には、どの行がどの呼び出しに属するか分からなければ二つのログの比較が役に立たないため、タイムスタンプを付けてください。LCP の交換がまったく現れない場合、障害はチェーンのより上流にあり、MPPE は容疑者ではありません。
再接続後も修正を保つ:フック名と MTU
リンクが安定したら、再接続を乗り切れるかを二つの細部が決めます。フックは /etc/ppp/ip-up.d と /etc/network/if-up.d にあり、どちらのディレクトリも run-parts が処理しますが、そのファイル名フィルターはドットを含む名前をすべて拒否します。したがって set-pptp.sh というスクリプトは飛ばされ、set-pptp は実行されます。スクリプトの中身をデバッグする前に名前を確認し、そのフックの中でより小さい MTU を設定して、新しい ppp インターフェースが手動コマンドなしで継承するようにします。
run-parts --test /etc/ppp/ip-up.d
ip link set dev ppp0 mtu 1200セッションを意図的に終えるには、ppp を含むすべてを kill すると無関係なリンクも切れてしまうため、プロセス名のパターン一致ではなく pppd が記録した pid を狙ってください。PPTP は非推奨で MS-CHAPv2 は弱いため、これらの確認は動き続ける必要のあるリンクの保守として扱い、新しい場所に PPTP を配備する理由にはしないでください。