どうやら、うちにつないでいる v6 プラスだと、MAP-E での IPv4 接続が 無料でついてくるらしい。しかも、PPPoE と比べて速度が出る(IPv6 相当の速度になる)という噂。 ……という訳で、それを試してみたという話。
hoshizuki.hateblo.jp この時と真逆のことをやろうとしているのか……
まずはアドレスを計算する
http://ipv4.web.fc2.com/map-e.html ここで、自分のところに割り振られている IPv6 のプレフィックスを入力する。 すると、MAP-E 接続に使用する各種パラメータが計算されるという寸法。
v6プラスのIPアドレス&ポートの計算方法: ネトゲー回想録 この辺を読んで自前で計算もできるけど。 一応、RFC とか読んで試してみたけど、ここにある謎の非公開らしい情報がないと、 自前で計算はできないらしい。うーん?
設定する
先人の方々の記事を参考にしつつ。 qiita.com bokut.in
まずは、さっき計算した CE のアドレスを今使ってる物理 NIC に振る。alias で OK。
# ifconfig em0 inet6 240b:11:d4e0:2000:6a:49d4:e000:2000/128 alias
で、CE と peer addr (どちらも IPv6)の間でトンネルを張る。 計算した IPv4 アドレスはここに割り振る。
# ifconfig gif0 create up # ifconfig gif0 inet 106.73.212.224/15 106.73.212.224 # ifconfig gif0 inet6 tunnel 240b:11:d4e0:2000:6a:49d4:e000:2000 2404:9200:225:100::64
こんな感じになる。
$ ifconfig gif0 gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280 options=80000<LINKSTATE> tunnel inet6 240b:11:d4e0:2000:6a:49d4:e000:2000 --> 2404:9200:225:100::64 inet 106.73.212.224 --> 106.73.212.224 netmask 0xfffe0000 groups: gif nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
あと、ファイアウォールもあけておく。
# ipfw add 10 allow ip6 from 240b:11:d4e0:2000:6a:49d4:e000:2000 to 2404:9200:225:100::64 # ipfw add 20 allow ip6 from 2404:9200:225:100::64 to 240b:11:d4e0:2000:6a:49d4:e000:2000 # ipfw add 30 allow ip from any to any via gif0
トンネル間の出入り口の IPv6 パケットは相互にとりあえず全開通。
gif0
も一旦全部通す状態で実験。
これで OK。
通信してみる
MAP-E の仕様として、こちらに割り振られるグローバル IP は複数のユーザで共有していて、 そのアドレス宛の、一部のポート宛のパケットだけが流れてくる。
なので、通信するには「こちら側」のポートを指定できる必要がある。
とりあえず今回は NAPT とかするのは諦めているので(最新の pf ならできるという噂?)、
nc
を使って通信してみる。※執筆時は FreeBSD 13.0-R を使ってました。
速度測定に使うサーバは、CDN にそこそこのサイズのファイルがあるものがいい。 あと非 SSL で通信できる必要がある。
……という訳で、今回はとあるサーバを勝手に拝借。
#!/bin/sh go () { printf "GET /hogefuga.tar.gz HTTP/1.0\r\nHost: foobat.org\r\n\r\n" | nc -4 -p $1 xxx.xxx.xxx.xxx 80 > /dev/null echo 'done' } go 12800 & go 12801 &
みたいな。これを、 time
コマンドで実行して、転送サイズを割れば速度が分かる。
ちなみに go
の引数はこちら側で使えるポート。さっきのサイトで計算した範囲のヤツを使う。
あと、測定対象のサーバ向けは gif0
に向けてパケットを投げるように、
ルーティングテーブルも追加する必要がある。
# route add XXX.XXX.XXX.XXX -iface gif0
という訳で速度測定。
IPv6(IPoE) 190.38Mbps, 164.27Mbps, 192.96Mbps IPv4(PPPoE) 178.06Mbps, 183.91Mbps, 189.23Mbps IPv4(MAP-E) 175.87Mbps, 162.90Mbps, 144.85Mbps
ん-……PPPoE でも十分な速度でてない???