VPS を使用して構築された VPN を使用した VPN で、最近のシステムアップグレード後、接続が頻繁に切断されたり接続できなくなったりする現象(619 などのエラー)がよく発生します。Linux のシステムログ(syslog)を調査したところ、接続失敗ごとに以下のログ内容が表示されることがわかりました。
GRE: read(fd=6,buffer=80504c0,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs CTRL: PTY read or GRE write failed (pty,gre)=(6,7) CTRL: Reaping child PPP[13354] CTRL: Client XXX.XXX.XXX.XXX control connection finished
最初は GRE に問題があると思いましたが、アップグレードログを確認したところ、GRE はアップグレードされていないことがわかりました。後で Google と Baidu で解決策を見つけ、ここにメモしておきます。 1. デバッグモードを有効にして、/etc/ppp/pptp-options ファイルを変更し、次の行を見つけます。
#debug
#dump
行のコメントを解除し、pptpd サービスを再起動してデバッグモードに入ります。
2. ログを分析した結果、logwtmp バージョンが pptpd バージョンと一致しないための問題が発生していることがわかりました。/etc/pptpd.conf ファイルを開き、次の行を見つけます。
logwtmp
logwtmp のコメントを外した後、pptpd を再起動し、再接続するとすべてが正常に復旧します。
3. 最後に、サーバーで proxyarp 機能を有効にしている場合、異常な切断後に arp -d を忘れないでください。
#windows
arp -d
#linux
sudo arp -d -a