年末の帰省中に、auひかりを契約している実家にOpenVPNを構築しました。
帰省から帰ってきて接続してみると、なんかすぐ切れて使い物になりません。
たぶん問題は解決したので、メモしておきます。

構築したOpenVPNについて

  • OpenVPN 2.3.6
  • L3接続のtunを利用
  • UDPプロトコルを利用
  • クライアントにはTunnelblickを利用
  • すべての通信をVPNを経由するように設定

接続していると、、、

最初の二分間くらいは疎通してたんですが、その後

1
*Tunnelblick: Expected disconnection occurred.

というログを吐いて接続不可になります。pingも通りません。
「予想通りの切断」ですか、はあ。俺は予想してないぞ。

試したこと

mssfixの設定→失敗

このページを参考に、双方のコンフィグに

1
mssfix 1300

を追加してみました。しかし、あまり変わらず。
そもそもpingも通らないんだから、違う気がする。

tun-mtuの設定→失敗

1
tun-mtu 1200

を設定してみました。結果、切断は回避されません。
困ったな。

ジャンボフレームの透過→失敗

HGWで、ジャンボフレームの透過を設定してみました。
結果、やっぱりあまり変わらず。

tcpをつかってみる→すこし成功

udpではなく、tcpで通信してみました。
結果、切断はされない気がしてました。
しかし、速度が遅すぎて使い物になりません。udpの半分くらいです。
できればudpを使いたいですねえ。

udpのポートを変更→成功!

udpのポートを初期設定の1194から変更してみました。
するとなんと、接続が切れないじゃないですか!
今でも安定して動いています。やったね!

原因を考えてみる

ログ

1
*Tunnelblick: Expected disconnection occurred.

というログは、手動で接続解除した際にも出てくるログです。
ということは、パケットが詰まってたりして起こったのではなく、接続自体が遮断された可能性があります。
また、ADSLを利用しているアパートのOpenVPNは切断されません。
ここから、これはauひかり固有の問題ではないかと考えました。

VPNを遮断?

これはあくまでも予想ですが、auひかりは、意図的にVPN通信を遮断してるんじゃないんですかね?
well-knownポートである1194を利用した接続 = OpenVPN = 切断!
といったことをしてると予想します。
一応、利用規約を見る限りでは制限している項目はなさそうですが、、、プロパイダですかね。
ちなみに、プロパイダはBiglobeを契約しています。
Biglobeの利用規約の第12条の3(トラフィックについて)の項目に則って、帯域制限されてるんですかね。こればっかりは中の人に聞いてみないとわからないですね。

今後の予定

このページを参考に、チューニングをしたいと思います。
AES-NIを利用するとだいぶパフォーマンスが向上するみたいです。kvmホストで利用しているNUC(BOXDC53427HYE)のCPUはどうやら対応しているみたいなので、楽しみですね。

さいごに

万が一この利用が各種利用規約に違反している場合は、ご連絡ください。対処いたします。