« LS-GL(debian Lenny)でpptpサーバー構築、その1 | トップページ | LS-GL(debian Lenny)でOpenVPNサーバーを構築する »

2011年11月13日 (日)

LS-GL(debian Lenny) でpptpサーバー構築、その2

LS-GLでPPTPサーバーを構築しようとしてppp_mppeのロード
# insmod ppp_mppe.ko
これがエラー。モジュール ppp_mppe.koがないのに気づく。

つまり、カーネルをコンパイルして、モジュールを作る必要がある。
ちなみにLS-GL debian lenny のカーネルバージョンは、2.6.29 なのだが、ソースは。2.6.26しかないので、2.6.26 ベースでブートイメージとmodulesを作ってみた。

参考にしたページ
http://d.hatena.ne.jp/irasya/20100111/1263213868
http://k355566687.blogspot.com/2010/04/blog-post_23.html

パッケージ一覧情報の更新をする
# aptitude update

必要なツール、ライブラリをインストール
# aptitude install build-essential bzip2 libncurses5-dev git-core fakeroot initramfs-tools kernel-package module-assistant devscripts uboot-mkimage devio

カーネルソースの入手
# aptitude install linux-tree-2.6.26

ソースのビルド
# cd /usr/src/linux-source-2.6.26

debian用のパッチをあてる
# /usr/src/kernel-patches/all/2.6.26/apply/debian
....
  (+) OK   bugfix/all/nfs-aio-fix-use-after-free.patch
  (+) OK   bugfix/all/md-fix-bug-with-re-adding-of-partially-recovered-device.patch
  (+) OK   bugfix/all/md-fix-bug-with-re-adding-of-partially-recovered-device-regression.patch
  (+) OK   bugfix/x86/flush-tlb-if-pgd-entry-is-changed-in-pae-mode.patch
  (+) OK   bugfix/all/ext3-skip-orphan-cleanup-on-rocompat-fs.patch
  (+) OK   bugfix/all/cciss-fix-lost-command-issue.patch
  (+) OK   bugfix/all/cifs-check-that-last-search-entry-resume-key-is-valid.patch
  (+) OK   bugfix/all/cifs-fix-saving-of-resume-key-before-CIFSFindNext.patch
  (+) OK   bugfix/all/vm-fix-vm_pgoff-wrap-in-upward-expansion-regression.patch
--> 27 fully applied.

/bootパーティションをマウント
# mount -t ext2 /dev/sda1 /boot

オリジナルのconfigファイルをコピー。
# cp arch/arm/configs/orion5x_defconfig .config

Makefileを変更、EXTRAVERSIONに -cocoro.ppp を追加
EXTRAVERSION = -cocoro.ppp 

カーネルの設定
# make oldconfig

... デフォルトでずっとENTER、以下だけ変える。

Buffalo Linkstation Pro/Live (MACH_LINKSTATION_PRO) [N/y/?] (NEW) Y

... 後も終わるまでずっとENTER

使用するモジュールの設定
# make menuconfig

[Device Drivers]->[Network device support]にある
<M> PPP (point-to-point protocol) support
として
[*] PPP multilink support (EXPERIMENTAL) (NEW)
[*] PPP filtering (NEW)
<M> PPP support for async serial ports (NEW)
<M> PPP support for sync tty ports (NEW)
<M> PPP Deflate compression (NEW)
<M> PPP BSD-Compress compression (NEW)
<M> PPP MPPE compression (encryption) (EXPERIMENTAL) (NEW)
<M> PPP over Ethernet (EXPERIMENTAL) (NEW)
<M> PPP over L2TP (EXPERIMENTAL) (NEW)

他はそのまま。

コンパイル作業、(devioの>はリダイレクトではないらしい。)
# make clean
# make zImage; make modules; make modules_install
# devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811031,4'
# cat foo arch/arm/boot/zImage > zImage
# mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n 'Linux-2.6.26-cocoro-ppp' -d zImage /boot/uImage-2.6.26-cocoro-ppp
Image Name:   Linux-2.6.26-cocoro-ppp
Created:      Fri Nov 11 22:38:09 2011
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1789232 Bytes = 1747.30 kB = 1.71 MB
Load Address: 0x00008000
Entry Point:  0x00008000

ブートパーティションに置く
/boot/uImageはシンボリックリンクなので一度削除して張りなおす。
# cd /boot
# rm uImage
# ln -s uImage-2.6.26-cocoro-ppp uImage

終わったら、再起動。
# shutdown -r now

uname でカーネルバージョンを確認
# uname -a
Linux LS-GL 2.6.26-cocoro.ppp #1 PREEMPT Fri Nov 11 01:03:15 JST 2011 armv5tel GNU/Linux

lsmodでロードされているか確認
#lsmod
Module                  Size  Used by
ppp_synctty             7392  0
ppp_async               8960  0
ppp_deflate              4928  0
ppp_generic            23572  3 ppp_synctty,ppp_async,ppp_deflate
slhc                      5504  1 ppp_generic
pcbc                      3584  0
ecb                        2752  0
crypto_blkcipher      15972  2 pcbc,ecb
crypto_algapi          14304  3 pcbc,ecb,crypto_blkcipher

なんか逆にモジュールが足りなくなった。その上、ppp_mppeがロードされてない。
pcbc, ecbはロードされてんだけどなあ。

tunやbridgeがないのが原因か?再度 menuconfig で修正してカーネルビルド

# cd /usr/src/linux-source-2.6.26
#make menuconfig

以下の設定を画面から選択
  Networking  --->
    Networking options  --->
       [*] TCP/IP networking
       [*]   IP: multicasting
       [*]   IP: advanced router
            Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH)
       [*]   IP: policy routing
       [*]   IP: equal cost multipath
   ....
       <M>   IP: tunneling
       <M>   IP: GRE tunnels over IP
       [*]     IP: broadcast GRE over IP
   ....
       <M>   IP: AH transformation
       <M>   IP: ESP transformation
       <M>   IP: IPComp transformation
       <M>   IP: IPsec transport mode
       <M>   IP: IPsec tunnel mode
       <M>   IP: IPsec BEET mode

ついでに、iptablesのフィルタ関係を追加。
  Networking  --->
    Networking options  --->
      [*] Network packet filtering framework (Netfilter)  --->
        [*]   Bridged IP/ARP packets filtering
        Core Netfilter Configuration  --->
          以下選べるの全部チェック
        IP: Netfilter Configuration  --->
          以下選べるの全部チェック
        Bridge: Netfilter Configuration  --->
          以下選べるの全部チェック

ブリッジ使う前提で入れる。
  Networking  --->
    Networking options  --->
    <M>  802.1d Ethernet Bridging

  Device Drivers  --->
    Network device support  --->
    <M>  Universal TUN/TAP device driver support

再度ビルド作業
# make zImage; make modules; make modules_install
# devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811031,4'
# cat foo arch/arm/boot/zImage > zImage

/bootをマウントして、uImageを置き換え
# mount -t ext2 /dev/sda1 /boot
# mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n 'Linux-2.6.26-cocoro-ppp' -d zImage /boot/uImage-2.6.26-cocoro-ppp
# cd /boot
# rm uImage
# ln -s uImage-2.6.26-cocoro-ppp uImage

再起動して再度試す。
# shutdown -r now

ロードされたモジュールの確認
# lsmod
Module                  Size  Used by
ppp_synctty            7392  0
ppp_async              8960  0
ppp_deflate             4928  0
ppp_generic            23572  3 ppp_synctty,ppp_async,ppp_deflate
slhc                       5504  1 ppp_generic
pcbc                      3584  0
ecb                        2752  0
crypto_blkcipher     15972  2 pcbc,ecb
crypto_algapi          14304  3 pcbc,ecb,crypto_blkcipher
tun                        9764  0
bridge                    51968  0

状況変わらず、他が原因か・・・試しに depmod を実行

# depmod -a
# modprobe ppp_mppe
FATAL: Error inserting ppp_mppe (/lib/modules/2.6.26-cocoro.ppp/kernel/drivers/net/ppp_mppe.ko): No such device

他に原因があるに違いない・・・ググって、以下のモジュールをロードするとうまくいった。

# modprobe crypto_algapi
# modprobe arc4
# modprobe sha1
# modprobe cryptomgr
# modprobe cbc
# modprobe pcbc
# modprobe ecb

それで、結局、/etc/modulesは以下の内容へ変更
----------------------------------------------------------------------
# Parameters can be specified after the module name.
bridge
tun
crypto_algapi
arc4
sha1
cryptomgr
cbc
pcbc
ecb
ppp_generic
ppp_deflate
ppp_async
ppp_mppe
ppp_synctty

alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
----------------------------------------------------------------------

再起動して、確認
# lsmod
Module                  Size  Used by
ppp_synctty            7392  0
ppp_mppe               7044  0
ppp_async               8960  0
ppp_deflate             4928  0
ppp_generic            23572  4 ppp_synctty,ppp_mppe,ppp_async,ppp_deflate
slhc                       5504  1 ppp_generic
ecb                        2752  0
pcbc                      3584  0
cbc                        3392  0
crypto_blkcipher      15972  3 ecb,pcbc,cbc
cryptomgr               2720  0
sha1_generic            2336  0
arc4                      1696  0
crypto_algapi          14304  7 ecb,pcbc,cbc,crypto_blkcipher,cryptomgr,sha1_generic,arc4
tun                       9764  0
bridge                   51968  0

結論)
ppp_mppeがロードできるようになるには、暗号関係(cryptomgr,sha1_generic,crypto_algapi)をロードさせることが必要。bridge やtunは関係なし。

また、後で気づいたのが、使用しているADSLモデム Aterm WD701CVは、VPNパススルーとうたっているが、GRE(プロコトル番号=47)のNAT対応がされていなかった。これじゃ外部からアクセスできない。

2012/04/30 しかし、GREのNATが出来なくても、高度な設定で、DMZホストの登録機能があった。以下の設定をAterm WD701CVで設定
・DMZホスト機能=使用する
・DMZホストの配置=LAN側
・DMZホストのIPアドレス=Linkstation のIPアドレス

後は、ポートマッピングで、TCP / 1723 をLinkstation のIPアドレスに仕向けるだけで
OKでした。

|

« LS-GL(debian Lenny)でpptpサーバー構築、その1 | トップページ | LS-GL(debian Lenny)でOpenVPNサーバーを構築する »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: LS-GL(debian Lenny) でpptpサーバー構築、その2:

« LS-GL(debian Lenny)でpptpサーバー構築、その1 | トップページ | LS-GL(debian Lenny)でOpenVPNサーバーを構築する »