趣味のプログラム工房

Zenfone2 Android 5.0 楽天モバイルでL2TPがうまく動かない

タイトル通り、Zenfone2、Android 5.0楽天モバイルの環境でL2TPがうまく動きません。

原因不明です。

自宅に、VPNのサーバを立てているのですが、まず、Wifiでは安定してつながります。
というわけで、ハード、OS、設定には問題なし。
しかし、MVNO(楽天モバイル)経由だとコネクションはされるのですが、しばらくするとすぐに切れる。
ほとんど使い物になりません。
ってことは、楽天モバイル(回線)が悪い?
でも、楽天モバイル(回線)をデザリングして、iPhoneからサーバへつなぐと安定してつながる、、、あれ?
というわけで原因不明なのです。

VPNサーバ - Wifiルータ - Zenfone2 ・・・OK
VPNサーバ - ルータ - 楽天モバイル - Zenfone2 ・・・不安定
VPNサーバ - ルータ - 楽天モバイル - Zenfone2 - iPhone ・・・OK

というわけで、これ何が原因なの?

いろいろと、トライ&エラーを繰り返してみたのですが、やっぱり原因不明。
syslogに Maximum retries exceeded for tunnel XXXX. Closing.
というログがあったので、これをヒントに調べたところ、
L2TPのKeepaliveの設定が怪しいとのこと。

というわけで、Gitからソースをダウンロードしてきて、L2TPの固定値を変更してコンパイルすることに。
2tp.h
#define NZL_TIMEOUT_DIVISOR 40
#define HELLO_DELAY 260 /* How often to send a Hello message
#define DEFAULT_MAX_RETRIES 20 /* Recommended value from spec */


network.c:248
// tv.tv_sec = 1;
tv.tv_sec = 10;

でも、全く意味なし。


いろいろ調べたのですが、どうも、android側から切断しているようなので、
サーバ側のパラメータを変更してもあまり意味がなさそうです。
(切断のタイミングを見たところ、どうもandroid側が先に切れている)

というわけで、全くのお手上げ。
回線の関係上、PPTPは使えないし、どうしたものやら。。。
2015年09月22日