windows serverでVPNサーバを構築した際のメモ。
iOS, android->windowsは苦労せずに接続できたが、CentOS->windowsは設定が厄介。 windows serverでのVPNサーバ構成自体はサーバーマネージャの役割と機能の追加から出来るし、記事も複数あるので割愛してはまったことだけメモしておく。
環境
VPNサーバ: windows server 2012 R2 VPNクライアント: iOS, android, CentOS7(libreswan)
はまったこと(すべてCentOS->windows)
- エラーメッセージのログ
CentOSのIPSec関連のログって /var/log/pluto.logを指定していたからすべてここに出るかと思っていたら、 接続関係のエラーは/var/log/messageに出力されていた。 これに気づくまで、ログの出力少なすぎだと思っていた。 ログの出力ファイルの確認は大事。
- no prosal chosen
使用可能な暗号方式がマッチせずにno proposal chosenになっていた。 暗号方式の調査はike-scanを用いて確認すればいい。
CentOS7ではyumでインストール出来ないためgithubからソースを入手する。
今回は一時的に使えればいいので./configureとmakeだけして、インストールはしなかった。
使い方
ike-scan <VPNサーバのIPアドレス>
コマンドの出力結果を元にipsecのコンフィグファイルに
ike=3des-sha1;modp1024 esp=3des-sha1;modp1024
を追加する。
なお、ipsecサービスが動いているとike-scanがポートを使用できないため、サービスの停止が必要。
- libreswanとstrongswanは別物
調べているとstrongswanとかopenswanとかの記事が見つかって設定参考にしたりしたけど、 設定の記述方法が微妙に異なっているので動作しなかったり、変なログが出ている場合は 疑った方がいい。
例えば上記のikeやespの暗号化の指定はstringswanだと
ike=3des-sha1-modp1024 esp=3des-sha1-modp1024
になる(sha1とmodp1024の間が"-"になる)
- refuse chap
IPSecがつながったと思ったら、chapがrefuseされてL2TPの接続が確立できなかった。
/etc/ppp以下のコンフィグファイルに
refuse-pap refuse-eap refuse-chap refuse-mschap require-mppe
を追記して解消。
感想
windows<->CentOSの接続をやってみると、IPSecの設定が難しいと言われるのが少しわかった気がする。 パラメータが多すぎて対向で合わせるのが大変なのでike-scanとかをうまく使う必要がある。 一方でandroidとかiOSはすんなりつながったので、簡易につながるのを意識して実装してるんですね。