SUSE Linux pptp で Android, iOS がリモート接続できない。

SUSE Linux


SUSE Linux で作る pptp サーバ、ノマドワークへの道
の続きです。

PC系のライターさんたちは語彙が豊富で、「クラウド」に「ホーム」を付けてしまって「ホームクラウド」なんてコトバを作っちゃうんですね。要は、 Google などのクラウドサービスを使うのではなく自宅を「クラウド」に見立てて「ホームクラウドだぜ、すげーだろ」ってことにしてしまうわけです。もうこうなると意地の世界ですな。

まぁ、確かに、自宅のNASやサーバにあるファイルを、ちっちゃなスマートフォンの画面でも操作できたり、音楽をダウンロードできて「すンげーだろ」という事なのですが、あまり利用価値なさそうな気もします。そんなことするくらいなら、Google 神社にお布施した方がよっぽどマシな気もします。

しかし、VDIによる仮想デスクトップなどをデモしようとするならば、たとえちっちゃなスマートフォンの画面でも Windows のログオン画面が出てくるというのはそれなりにインパクトがあります。何しろ、HDMI のTV出力とか、タブレットクラスの機械であれば、Bluetooth キーボードがあれば「使えそう」な気がしてしまう(かもしれない)のです。

ところが、Android や iOS では通常の VPN トンネルをさらに GRE でさらにカプセリングするという技を見せてくれるようなのですね。

ということで、通常の PPTP サーバでは Android や iOS は接続できないようです。GRE ポート(47) の解放はもちろん、 GRE でカプセリングして肥大化したパケットを通す必要がありそうです。もちろん最初から VPN 装備のルータがあるのなら問題はないのでしょうが、貧乏なので僅か 192Mbメモリの pptp サーバを仮想化してつないでみました。


-現象-

iOS もしくは Android で pptp 接続できない。 GRE ポート(47) は解放済み、PC からの VPN 接続は問題ない。

接続できない時のログ

May 7 00:59:00 sles11 pptpd[5050]: CTRL: Client 126.229.32.111 control connection started
May 7 00:59:00 sles11 pptpd[5050]: CTRL: Starting call (launching pppd, opening GRE)
May 7 00:59:00 sles11 pppd[5051]: pppd 2.4.5 started by root, uid 0
May 7 00:59:00 sles11 pppd[5051]: Using interface ppp0
May 7 00:59:00 sles11 pppd[5051]: Connect: ppp0 <--> /dev/pts/1
May 7 00:59:01 sles11 pppd[5051]: MPPE 128-bit stateless compression enabled
May 7 00:59:04 sles11 pppd[5051]: MPPE disabled
May 7 00:59:06 sles11 pppd[5051]: Connection terminated.
May 7 00:59:06 sles11 pppd[5051]: Connect time 0.1 minutes.
May 7 00:59:06 sles11 pppd[5051]: Sent 50 bytes, received 40 bytes.
May 7 00:59:06 sles11 kernel: [14340.582105] Loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-ppp0 instead
May 7 00:59:06 sles11 pppd[5051]: Exit.
May 7 00:59:06 sles11 pptpd[5050]: GRE: read(fd=6,buffer=611640,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
May 7 00:59:06 sles11 pptpd[5050]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
May 7 00:59:06 sles11 pptpd[5050]: CTRL: Reaping child PPP[5051]
May 7 00:59:06 sles11 pptpd[5050]: CTRL: Client 126.229.32.111 control connection finished
sles11:/etc/ppp #

-対策-

/etc/ppp/options.pptp の mtu, mru の値を 1200 から 1100 に減らしたら接続できた。

sles11:/etc/ppp # cat options.pptp
lock
# my pptp server name, myoffice domain
name sles11
domain intra
#
auth
refuse-mschap
require-mschap-v2
require-mppe-128
# my office-dns
ms-dns 192.168.1.102
#ms-wins 192.168.1.102
#
proxyarp
nodefaultroute
nobsdcomp
novj
novjccomp
nologfd
#
#mtu 1200
#mru 1200
mtu 1100
mru 1100
sles11:/etc/ppp #

繋いでみました。

May 7 21:37:10 sles11 pptpd[2953]: CTRL: Starting call (launching pppd, opening GRE)
May 7 21:37:10 sles11 pppd[2954]: pppd 2.4.5 started by root, uid 0
May 7 21:37:10 sles11 pppd[2954]: Using interface ppp0
May 7 21:37:10 sles11 pppd[2954]: Connect: ppp0 <--> /dev/pts/1
May 7 21:37:10 sles11 pppd[2954]: MPPE 128-bit stateless compression enabled
May 7 21:37:10 sles11 pppd[2954]: found interface eth0 for proxy arp
May 7 21:37:10 sles11 pppd[2954]: local IP address 192.168.1.22
May 7 21:37:10 sles11 pppd[2954]: remote IP address 192.168.1.80
May 7 21:37:10 sles11 pppd[2954]: Script /etc/ppp/ip-up finished (pid 2969), status = 0x0
May 7 21:38:02 sles11 pptpd[2953]: CTRL: EOF or bad error reading ctrl packet length.
May 7 21:38:02 sles11 pptpd[2953]: CTRL: couldn't read packet header (exit)
May 7 21:38:02 sles11 pptpd[2953]: CTRL: CTRL read failed
May 7 21:38:02 sles11 pptpd[2953]: CTRL: Reaping child PPP[2954]
May 7 21:38:02 sles11 pppd[2954]: Modem hangup
May 7 21:38:02 sles11 pppd[2954]: Connect time 0.9 minutes.
May 7 21:38:02 sles11 pppd[2954]: Sent 1638 bytes, received 1583 bytes. <- 繋げて ping を飛ばしてみた。
May 7 21:38:02 sles11 pppd[2954]: MPPE disabled
May 7 21:38:02 sles11 pppd[2954]: Connection terminated.
May 7 21:38:02 sles11 kernel: [ 100.687207] Loading kernel module for a network device with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-ppp0 instead
May 7 21:38:02 sles11 pppd[2954]: Script /etc/ppp/ip-down finished (pid 3077), status = 0x0

別に Android だとか iOS のちっちゃな画面でつなぐ必要はないのですが、将来、タブレットだとか使う時のために試してみました。








by islandcenter | 2016-05-08 10:24 | プライベートクラウド | Comments(0)