玄柴をPPTPサーバにしてiPod touch+Pocket WiFiからVPN接続する

ここ数日、玄柴をPPTPサーバにして手持ちのiPod touchイーモバイルPocket WiFi(D25HW)からVPN接続しようとあれこれ四苦八苦してました。
とりあえず、個人的にFedora(というかRedHat系)が好みなので日経Linux3月号の付録DVDに入ってるfedora12と2.6.32.3のカーネルソースを元に
さらに色んなサイトを参考にしまくって何とか構築できました。疲れた。

  • 嵌った点
    • pptpd起動していざ接続しようとするとMPPEがねーよと怒られる
    • MPPE入れるためにmake module->make modules_installとかやったらrebootできなくなった
    • そもそも俺のLinuxに対する理解が不足しまくり

アホな事いっぱいやってると思うんであくまで自分用メモ。
※もし以下を真似して玄柴が起動不能になるなどあっても私は一切責任を取りません。(念のため・・・)
 また、ここはこうすればできるのにそんなことも知らねーのかばーかというご指摘は大歓迎です。



手順

日経Linux3月号の記事を元にfedora12のイメージを書き込む。
USBメモリのミニ・ルート環境でbootして、

sh-3.2# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00100000 00020000 "u-boot"
mtd1: 00400000 00020000 "uImage"
mtd2: 1fb00000 00020000 "rootfs"

となっていたので

sh-3.2# flash_eraseall -j /dev/mtd2

でfootrsを消去。

sh-3.2# nandwrite -p /dev/mtd2 kurosheeva_f12.jffs2

でjffsイメージを書き込み。
リブート後、前のエントリ
http://d.hatena.ne.jp/val90/20100210/1265904413
を元にネット接続の設定。


んで、とりあえず必要なもんいろいろ入れとく。

# yum update
# yum install tar wget gcc make
# yum install ppp
# yum search pptpd
Warning: No matches found for: pptpd
No Matches found

との事なので本家から持ってきた。

# wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz?use_mirror=jaist
# tar xvfz pptpd-1.3.4.tar.gz
# cd pptpd-1.3.4
# ./configure --exec_prefix=/usr
# make
# make install

もろもろ設定

/etc/pptpd.confの設定

サンプルをコピー

# cp samples/pptpd.conf /etc/

以下の項目を変更。

#logwtmp
localip 192.168.11.55
remoteip 192.168.11.30-34

※logwtmpをコメントアウト
 (これをしておかないと後々「/usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4」と怒られる)
※localip:玄柴のIP
※remoteip:クライアントに割り当てられるIP

/etc/sysctl.conf

net.ipv4.ip_forward=1

※自宅内の他のマシンにパケットを転送させる為に「0」→「1」に変更

/etc/ppp/chap-secrets

$userid * $password *

※$useridと$passwordは任意の文字列を設定。

/etc/ppp/options.pptpd

サンプルをコピー

# cp samples/options.pptpd /etc/ppp/

以下を追記

mtu 1400

※これが無いと、VPNに接続できてもすぐに切断されてしまう


ここらで一旦reboot

試しに接続しようとしてみる

# /usr/sbin/pptpd start

/var/log/messagesを見てみる。

# tail -f /var/log/messages
fedora-arm pptpd[1222]: MGR: Maximum of 100 connections reduced to 5, not enough IP addresses given
fedora-arm pptpd[1224]: MGR: Manager process started
fedora-arm pptpd[1224]: MGR: Maximum of 5 connections available

ちゃんと起動してるっぽい。


iPodPocket WiFiから接続してみる。

fedora-arm pppd[1196]: MPPE required, but kernel has no support.

なんか出た。
デフォルトの/etc/ppp/options.pptpdでは

require-mppe-128

となっている為、これをコメントアウトすれば動くのかもしれませんが暗号化されないのは嫌なのでMPPEをインストールします。

MPPEカーネルモジュールのインストール

日経Linuxに付属のDVDからソースを解凍しconfigの設定。(USBメモリ内に解凍して作業しました)

# tar xvfz linux-2.6.32.3-kurosheeva.tar.gz
# cd linux-2.6.32.3
# make menuconfig
 *** 'make menuconfig' requires the ncurses libraries.

またなんか出た。

# yum install ncurses-devel

再度

# make menuconfig
Device Drivers  --->
Network device support  --->

の中のPPP関連をすべてONにしました。
んで、

# make uImage
・
・
・
・
/bin/sh: cmp: command not found
Inconsistent kallsyms data
Try setting CONFIG_KALLSYMS_EXTRA_PASS
make: *** [vmlinux] Error 1

また怒られた。

# yum install diffutils

再度

# make uImage
・
・
・
・
・
"mkimage" command not found - U-Boot images will not be built

なんだと!

mkimageのインスコトロール

# wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2
# yum install bzip2
# tar xvlpf u-boot-1.1.4.tar.bz2
# cd u-boot-1.1.4
# export TOPDIR=`pwd`
# cd tools
# make mkimage
# cp mkimage /usr/local/bin/

今度こそー。

# make uImage

通った。

# make modules
# make modules_install

思い切って上書いてみた

cp -p System.map /boot/System.map-2.6.32.3
cp -p arch/arm/boot/uImage /boot/uImage-2.6.32.3

そしてreboot!!!

		Welcome to Fedora 
		Press 'I' to enter interactive startup.
Starting udev: [  OK  ]
Setting hostname fedora-arm:  [  OK  ]
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = ded78000
[00000000] *pgd=1f28c031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT
last sysfs file: /sys/kernel/uevent_seqnum
Modules linked in: mv_cesa [last unloaded: scsi_wait_scan]
CPU: 0    Not tainted  (2.6.32.3 #1)
PC is at strcmp+0x8/0x34
LR is at sysfs_find_dirent+0x1c/0x40
pc : []    lr : []    psr: a0000013
sp : df201ef0  ip : 00000000  fp : bef91d0c
r10: 00011fd4  r9 : df200000  r8 : c002dbc4
r7 : 00000880  r6 : df201f44  r5 : 00000000  r4 : deef0480
r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000000
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: 1ed78000  DAC: 00000015
Process rmmod (pid: 804, stack limit = 0xdf200270)
Stack: (0xdf201ef0 to 0xdf202000)
1ee0:                                     deef0450 deef0450 00000000 c01118a0
1f00: deef0450 00000000 00000000 00000000 00000000 df2d0d40 df201f44 c007804c
1f20: c002dbc4 bf007038 bf007038 c007a214 00000000 00000000 bf007038 c007a4dc
1f40: deef1948 69736373 6961775f 63735f74 de006e61 deef1580 00000003 df201f68
1f60: c0241524 c0425c58 c0423a30 00000000 dee26034 4001f000 00001000 0002dbc4
1f80: bf007038 00000880 df201f8c 00000000 df339580 00000880 bef91cd8 00011fc0
1fa0: 00000081 c002da40 00000880 bef91cd8 bef91cd8 00000880 00000000 bef91ccc
1fc0: 00000880 bef91cd8 00011fc0 00000081 00000001 00000001 00011fd4 bef91d0c
1fe0: 00000880 bef91cd8 00008f58 4011375c 60000010 bef91cd8 00000000 00000000
[] (strcmp+0x8/0x34) from [] (sysfs_find_dirent+0x1c/0x40)
[] (sysfs_find_dirent+0x1c/0x40) from [] (sysfs_hash_and_remove+0x2c/0x64)
[] (sysfs_hash_and_remove+0x2c/0x64) from [] (free_notes_attrs+0x28/0x54)
[] (free_notes_attrs+0x28/0x54) from [] (free_module+0xc8/0x184)
[] (free_module+0xc8/0x184) from [] (sys_delete_module+0x20c/0x254)
[] (sys_delete_module+0x20c/0x254) from [] (ret_fast_syscall+0x0/0x28)
Code: 1afffff2 e8bd8030 e1a0c000 e3a02000 (e7dc0002) 
 ---[ end trace 7df491cfe1b77201 ]---

はい、起動しません。
人生そうそう上手くいきませんよねー。


よくわからんが、最終的に以下の手順でできました。

やり直し!

USBのミニ・ルートから再度rootfsをフォーマットし、pptpdの設定までを済ませる。
USBメモリをマウントし

# cd /mnt/linux-2.6.32.3
# make modules_install

この状態でpptpdを起動したところiPodから接続でき、ローカルIPで他のマシンにVNCも繋がった。

# tail -f /var/log/messages
fedora-arm pppd[1164]: pppd 2.4.4 started by root, uid 0
fedora-arm pppd[1164]: Using interface ppp0
fedora-arm pppd[1164]: Connect: ppp0 <--> /dev/pts/0
fedora-arm kernel: PPP MPPE Compression module registered
fedora-arm pppd[1164]: MPPE 128-bit stateless compression enabled
fedora-arm pppd[1164]: found interface eth0 for proxy arp

が、rebootするとまたしても起動時にエラー。


今度は、上記の状態の/lib/modules/2.6.32.3/以下をUSBメモリ内に保存しておいて
再度USBのミニ・ルートから再度rootfsをフォーマットし、pptpdの設定まで済ませ、
以下をUSBメモリ内に保存した内容で上書き。

/lib/modules/2.6.32.3/kernel/drivers/net/*
/lib/modules/2.6.32.3/modules.alias
/lib/modules/2.6.32.3/modules.dep

そしたら、pptpも繋がりrebootもできる状態になった。


大分適当かつ無理やりだと思うんで、この環境はそのうち壊してまた別の環境で何かやります。
そもそも、VPNで何かやりたいわけでもなくなんとなくでやってみただけなので・・・。
自宅マシンのリモート操作ならdocomoのmobile2pcを持ってるのでそれで事足りてるし。
ちなみに、途中で試しに自宅にあまってる別PC(BaniasコアのMentium-MノートPC)にLinuxをインストールして
やってみたら上記の苦労が嘘のようにあっけなく繋がり拍子抜けしたりもしました。
次はHDDをeSATA接続してそこに環境構築かなぁ。