外から自宅の LANDISK (HDL-160U) に入れたファイルをアクセスしたいことがあります. ftp を使うとか WebDav を使うとかいう方法もありますが, せっかくなので 家庭内 LAN 全般にアクセスできるよう, 噂に聞いた pptp を入れてみました.
以下に手順を示しますが, 思い出しながら書いてます. やったけど忘れた重要な手順とか, 不必要だった手順があるかもしれません. また, 私の LANDISK は過去にいろいろいじくったのでもしかしたら, ノーマルの LANDISK では本手順では上手くいかないかもしれません.
とにかく, 作るのは結構大変だったので一応バイナリを用意しました. バイナリがあればいいという方はこの章は読み飛ばしてかまいません (次の章で作ったモジュールを置いておきます). .
まずは get したソースをコンパイル, インストールしていきます.
仮想ルートに入り,
# PATH=$PATH:/usr/local/bin |
と言っても ppp を作るためには libpcap が要り, libpcap を作るためには flex が要り, flex を作るためには yacc, yacc のためには m4 と次から次へ必要なものが出てきますので m4, yacc, flex, libpcap, ppp の順に作っていく必要があります.
手順は
# tar xvf [tar.gz ファイル] | tar xvf - # cd [展開されたディレクトリ] # ./configure # make # make install |
手順は上記と同じです. 順番は特に関係ありません.
# tar xvf HDLSRC42.TGZ | tar xvf - |
手順 2 における ppp のディレクトリのさらにその下の linux/mppe まで行って
# ./mppeinstall.sh [上記の kernel ソースディレクトリ] |
# make config |
CONFIG_PPP |
CONFIG_PPP_ASYNC |
CONFIG_PPP_DEFLATE |
CONFIG_PPP_BSDCOMP |
CONFIG_PPP_MPPE |
# make depend # make modules # make modules_install |
とまぁ結構大変だったので生成物をここに 置いておきます (/mnt/hda3/pptp の下にでも展開して置いてください). ここからの説明はこいつを使っておこないますが, 律儀に作った方は 適当にディレクトリを読み替えてください. 以下の説明は仮想ルートでなく, 本来のルートの話です.
# cd /lib/modules/2.4.21/kernel/drivers/net # cp /mnt/hda3/pptp/lib/modules/drivers/net/*.o . # cd ../.. # cp -R /mnt/hda3/pptp/lib/modules/lib . |
めんどうなのでシンボリックリンクで済ませます.
# ln -s /mnt/hda3/pptp/bin/pppd /usr/sbin/pppd # ln -s /mnt/hda3/pptp/bin/pptpd /usr/sbin/pptpd # ln -s /mnt/hda3/pptp/bin/pptpctrl /usr/local/sbin/pptpctrl |
/etc/pptpd.conf を作り以下のような感じで書く
option /etc/ppp/options localip 192.168.0.5 remoteip 192.168.0.200-210 |
refuse-mschap name landisk auth require-mschap-v2 require-mppe-128 proxyarp |
myname landisk paswwd * |
# mknod /dev/ppp c 108 0 |
ここまで来たらためしに動かしてみます.
# echo 1 > /proc/sys/net/ipv4/ip_forward # /sbin/insmod /lib/modules/2.4.21/kernel/lib/zlib_deflate/zlib_deflate.o # /sbin/insmod /lib/modules/2.4.21/kernel/lib/zlib_inflate/zlib_inflate.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/slhc.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/ppp_generic.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/ppp_deflate.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/bsd_comp.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/ppp_async.o # /sbin/insmod /lib/modules/2.4.21/kernel/drivers/net/ppp_mppe.o # /usr/sbin/pptpd |
# ps -aux | grep pptpd |
無事動いているようでしたら, いよいよ接続試験です. Windows Xp で説明しますが, 他の OS の場合は適当に読み替えてください.
まず, PC を同じ LAN に繋げます. その PC で 「ネットワーク接続」を開き, [新しい接続を作成する] をクリックします. ウィザードが現れますので, [職場のネットワークへ接続する]→ [仮想プライベートネットワーク接続]を選び ([接続名]は適当, 最初の接続では ダイヤルしない) [VPN サーバの選択] で LANDISK の IP アドレスを指定します. 後は, 接続のダイアログでユーザ名とパスワードに /etc/ppp/chap-secrets で 設定した物を入れてみます.
無事に接続できたら成功です. うまく行かなかったら /hosts.allow, /hosts.deny が原因かもしれません (うちの LANDISK は思いっきり解放しているので良く分からん).
さらに, telnet で LANDISK に入れるかとか, LANDISK のトップページが見られるか, LAN に繋がった別の PC にアクセスできるか等も確認してみてください (ネットワークコンピュータ一覧を除く).
上手く出来たなら, LANDISK 起動時に上記手順を自動実行すため 動作試験 1 の echo で始まる一連のコマンド群を /etc/rc.d/rc.local の最後にでも加えます.
続いて, 外部からの接続を LANDISK で受け持つようにします. ブロードバンドルータを設定し, TCP 1723 を LANDISK に回すようにします. そうそう, ブロードバンドルータは vpn パススルーとか pptp 対応とか 謳っているものじゃないと駄目かもしれません.
後は 何らかの手段でブロードバンドルータのインターネット上の IP アドレス を知り, ホストをそれにすると外から家庭内 LAN に繋がります. 「DynamicDNS」という単語を知らなければ検索してみるのもいいでしょう (多少古いし pptp ではないですが ここも 参考になるかもしれません).
なお, pptp はブロードキャストを通さないようです. そのためブロードキャストを使ってネット上にどのコンピュータが居るか知る 「ネットワークコンピュータ」の一覧が得られません. 「コンピュータの検索」で家庭内 LAN 上の IP アドレスを 指定しなければ目的の PC にたどり着けません.
というわけでネットワークコンピュータ周りを使うにはちょっと不便です. ただ, この件に関してはいろいろ技があるようですので 「vpn」, 「pptp」, 「名前解決」あたりで検索をかけてみてください.
インターネット上にポートを空けて待ち受けるということは, それだけクラッカーの攻撃を受けるの危険性が増すことになります. 今回用いた pptp, ppp 等のバージョンに対し, 将来何らかのセキュリティホールが発見され, そこを突かれる可能性は皆無とは言えません. また, あなたが設定した ID やパスワードがバレることだってありますし... その辺は自己責任で管理してください.
あっそれから苦労して LANDISK を VPN サーバに仕立てなくても, 世の中にはそういうハードが売られていますので, そういう選択肢も考える価値はあるでしょう. 「VPN」「ブロードバンドルータ」あたりで検索してみてください (本文執筆時点で 1 万 2 〜 3 千円で買えるようです) .