2002年12月28日 土曜日

IPv6 over IPv4 Tunnel (2)

昨日はローカルからしかping6が帰ってこないと言うところで挫折という感じであったが、今日は状況の切り分けを行うために、FreeBSDを別マシンにインストールし、検証してみることとした。(IPv6に関してはBSD系OSの方がこなれているし、リモート側で設定につきあっていただいているゆうじさんが分かりやすいと言う話もあるので…) 今日やった作業は以下の通り。

別のPCにFreeBSDをインストール。

いかんせんPentiumなマシンにネットワークインストールなので、これが一番かかった。

ネットワーク関連の設定を行う

僕がFreeBSDを使っていた頃は、Stand Aloneで使っていたのでネットワーク設定など分からなかったが、意外に簡単。Linuxの方がようわからんと言う話もある。

/etc/ppp/ppp.confの設定

User Mode PPPでいいのかな。設定の書き足しである。/etc/ppp/ppp.confに
vpn:allow user rootset timeout 0
set log phase chat connect lcp ipcp command
set device !/etc/ppp/vpnssh
set dial
set login
set ifaddr 10.100.1.2 10.100.1.1 #←IPアドレスは適当set server /var/tmp/loop.2 "" 0177
の設定を書き足す。

ssh関連の設定

一昨日と同様にssh関連の設定を行う。

pppを起動

こんな感じ。
# ppp vpnppp> dial
プロンプトがpppからPPPに変われば接続完了。

トンネルを掘る

FreeBSDではifconfigを使って、こんな感じにする。
# ifconfig gif1 create tunnel 10.100.1.1 10.100.1.2

ping6を打ってみる

とここまでで、昨日の状況を再現した。(pingはリモートからは帰ってこない。) ローカルのifconfigは以下に示すとおりで、見た目昨日の状態と区別は付かない。
# ifconfig -a
faith0: flags=8002<BROADCAST,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384inet6 ::1 prefixlen 128inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
ed1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500inet6 fe80::290:feff:fe0e:2cf9%ed1 prefixlen 64 scopeid 0x5inet 192.168.0.30 netmask 0xffffff00 broadcast 192.168.0.255ether 00:90:fe:0e:2c:f9media: Ethernet autoselect (10baseT/UTP)status: active
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500inet 10.100.1.2 –> 10.100.1.1 netmask 0xffffffffOpened by PID 128
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280tunnel inet 10.100.1.2 –> 10.100.1.1inet6 fe80::290:feff:fe0e:2cf9%gif1 prefixlen 64 scopeid 0x7

結局解決!

で、何が問題なんだろう?と言うところで行き詰まっていたが、ゆうじさんがリモートからのトンネルを作成し直したら、さくっとping6がトンネルの向こう側に通るようになった。やったぁ!と言うことで、Linuxな環境に戻して同様の操作をすると、同様にpingが通るようになった。
結論は推定の領域だが、GlobalなIPv4アドレスが割りあたっているところからのIPv6 Over IPv4 Tunnelの場合は tunnel を張りっぱなしにしておいて問題が無かったみたいだが、VPNのようにあとから発生するコネクションの場合だとうまくないみたいです。
と言うことで、PPPの待ち受け側でppp.linkupを用意して、VPN接続時に自動的にtunnelを作り直す事が可能ならそうしておいたほうが良いと言うことになった。ゆうじさんの話だと、 iij-ppp の確か ppp.linkup を使えばそんなことができた気はするとのこと。ただiij-pppもモデムの頃以来使ってないので、いろいろ忘れている(そりゃそうだ)ということで、manを見て調べてみますと言う話でした。僕も調べてみようっと
と言うことで、明日はIPv6の静的経路設定に続くと言う訳だ。