情報は各所に転がっていて事例も十分にありそう。vyattaは有償になったのですよね、だから、VyOSを使えばタダで使えるのですよね、というのは、下調べの段階。リモートアクセスVPNの機能をVPCに持たせる為にPPTPでVPNできる環境を作ろうかと思ったら、しょうもないバグに当たったので。

VyOSにPPTPできない

使ったAMIはMarketplaceにあるv1.1.0。手順は非常にわかりやすかったのが、サーバワークスさんのブログ。ここまで手順があるなら、簡単じゃないか、と後輩に検証を頼んだのですが、わかりません、できません、の一点張り。真面目にやれよ!と怒りつつ、自分でもやってみた。基本的には最低限の設定のみ。

configure
set vpn pptp remote-access authentication mode local
set vpn pptp remote-access authentication local-users username vpnuser password password
set vpn pptp remote-access client-ip-pool start 172.16.0.1
set vpn pptp remote-access client-ip-pool stop 172.16.0.100
commit
save

これだけやればひとまず接続だけはできそうなのに。確かにできない。ログを見ても何だかわからず、Wiresharkもtcpdumpも駆使したのだけど、原因特定に至らない。ネットワークのトラブルはこれだから嫌だ(だけど何故だかいつも巻き込まれる)。

VyattaならPPTPできる

切り分けの為にはお金も惜しまず検証してみようかと。有償版のVyattaを使って同じように設定してみる。同じ手順で何ともあっさりできた。バージョン差異なんかもあるだろうけど、裏で普通にpptpdが動いているだけのようなので、設定ファイルを比べてやろう。

options.pptpdが変

/etc/ppp/配下のファイルを比べてみたら、VyOSのoptions.pptpdが何だか変。

$ cat /etc/ppp/options.pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
### Vyatta PPTP VPN End ###

本来設定をすると書き込まれるはずの「~Begin ###」が書いていないし、中途半端な記載になっていることに気付く。この時点でほぼ半日を要した。

手動でoptions.pptpdを修正してみる

試しにバックアップして、Vyattaの設定に合わせてoptions.pptpdを書き換えて、pptpdサービスを再起動したら、上手く行った!なんだこれ。完全にバグじゃねえか。

バグ情報発見

ここに全部書いてありました。v1.1.1ではFixされているらしいけど、こんなの残ってるAMIを配布されても、ちょっと困るな。オープンソースってそんなものなのか?

まとめ(問題と回避策)

VyOSのpptpの設定をする場合、required authentication protocolの指定をしないと、設定ファイルが不完全な状態で生成されてしまう為、pptpdが正常に動作しない。required authentication protocolを明示的に指定すれば、設定ファイルに本来の形式で書き込まれる。ということで、下記を設定して解決。

set vpn pptp remote-access authentication require mschap-v2

 

解決はしたけど全然納得行かないです。他のバグ情報も全部読まないとダメなのですかね。

TOP