やあやあ。2012/06/06の今日はWorld IPv6 Launchなんだよね。

World IPv6 Launch

World IPv6 Launch

僕はIPv6に何のコミットメントもないけど、いちインターネッツ民にとって大事なのは、出来るところからv6化していくことだと思うんだ。ってことで、良い機会だから、この日記もIPv6 Readyにしたよ。v6環境のひとは、きっとAAAA引いてv6でこの日記に繋がってるはず。

今日は、普段なら書かないような、つまらない設定メモを書くよ。だってさ、設定しようと思って “CentOS6 IPv6” とかで検索したら “無効にする方法” ばっかり検索結果に出てくるようなこんな世の中じゃポイズン。一応卒論でもv6触ったし、OSのこと右も左も解らない時代に世の中はKAMEでUSAGIだったもんだから、なんだかんだ言ってv6に早くシフトして欲しいんだよね。

で。自宅にIPv6を引っ張ってこようとしたときに、今だと現実的なのはたぶん2通りなんだと思う。一つは、フレッツ光ネクストを契約して、ネイティブでIPv6を引っ張っちゃう方法。もう一つは、既存のIPv4ネットワーク上に何らかのトンネル掘って、そこにv6を流す方法。

自宅の足回りが光ネクストなら、いまPPPoEでIPv4が来ているように、そのまんまIPv6を引っ張る感じだね。宗教上の理由で基準にしているIIJさんだとこんな感じでプランが用意されてる。OCNなんかもプランがあるし、大手のISPはだいぶ提供するようになってきたと思う。

ウチの場合、光ネクストじゃなくてBフレッツのハイパーファミリーか何か(覚えてない)だから、PPPoEでそのまんまIPv6は、残念ながら、もらえない。まあ、契約変えればいいんだけど、それはそれで面倒だし。ってことでトンネルを検討するんだけど、有名どころだとOCNの315円のやつになるのかな。会社は2008年からIIJmioのIPv6トンネリングサービスのお世話になっているんだけど、自宅だとIIJmioのISP代払えないので、i-revoなんですよね。お察し下さい。

ということで、検索した結果、素晴らしい発表資料がありました。

http://negi.ipv6labs.jp/data/ipv6study/ipv6study_20110723.pdf

もうね、今日のネタの8割はこれで解決。Nambaさん有り難うございます。

とりあえずPDFを読みましょう。IPv6 Tunnel Broker を使ってIPIPトンネルを張りましょうという話です。ウチはそのままずばりi-revoで、ルータはIX2015(仕事ではRTX使ってる)なので、そのままこの資料の内容が適用できそうです。設定は適当に読み替えましょう。

で。PDFによると、Tokyoはi-revoからだと香港経由で遅い、みたいな話が載ってますが(P.15)、試してみた感じ、僕の環境ではTokyoが一番良好な結果でした。経路変わったのかな、それとも札幌からだと何か違うんですかね。

traceroute

traceroute

20msなら札幌~東京のレイテンシそのものなので、迷わず東京を選択しました。それにしても、gigabitethernet2-8 とか 10gigabitethernet1-2 とか、ホスト名が熱い。何のアッピールなのだろう。

んでまああとはIX2015の設定なんですが、コマンドリファレンスマニュアル見れば大体わかるよね。ちょっと検索してみたら、設定例もいっぱいありました。一応僕がやった設定はこんな感じです。RAのあたりが、ルータでやるやり方よくわかって無くて自信ないです。rtadvdと基本一緒だと思うんだけど。

ipv6 route default Tunnel0.0
ipv6 dhcp enable
ipv6 dhcp server-profile lanv6
 dns-server {LAN内リゾルバのV6アドレス}
 ia-pd prefix 2001:470:fd65:xxxx::0/64 nla-length 8
interface FastEthernet1/0.0
 ip address 192.168.xxx.xxx/24
 ip dhcp binding dhcp_hub
 ip policy route-map mymap
 ipv6 enable
 ipv6 address {IX2015にstaticで振るv6アドレス}/64
 ipv6 dhcp server lanv6
 ipv6 nd ra enable
 ipv6 nd ra other-config-flag
 no shutdown
interface Tunnel0.0
 tunnel mode 6-over-4
 tunnel destination {対向のv4アドレス}
 tunnel source {こっちのv4アドレス}
 no ip address
 ipv6 enable
 ipv6 address {トンネル的なこっちのv6アドレス}/64
 no shutdown

config書くときにあと参考になるとしたら、何だろうな。

  • ping6 2001:470:… みたいにして、とりあえずトンネルの対向側のv6アドレスにping飛ばしてみる
  • show tunnel status でトンネルの状態見れる

ぐらいですかねえ。

show tunnel status

show tunnel status

まあ、大体のことはコマンドリファレンス読めば解るよね。

で、やってみて、自分わかってないなと思うところ。

  • nla-length 8 って何かちゃんと理解しないで書いてて大変気持ち悪い。間違ってる気がする。なんで8にしてるんだろう、これでどう動くんだろう。NLAってこう自動でアドレス決めるときにゴニョゴニョする領域だと思うんだけど、この辺人にちゃんと説明できないから、自分ちゃんと解って無さそう。
  • ra ナントカ-config-flag って何だ?NTPサーバとかDNSサーバとかの通知用?WINSとかも通知できるのかな?
  • /48 をもらって、どうLANを設計して、どう運用していけばいいのか解らない。/64毎にサブネット切って好きに設計すれば良いと思うんだけど、じゃあそれを自宅でどう活用していけるのか?個人宅でこれを活用できるならv4からv6に移行する理由の一つになると思う。
    • 家電系サブネット、DMZ的サブネット、ゲーム機系サブネット、PC系サブネット、って分割する?
    • 全部グローバルで台数も大して無いのにサブネット切る意味ってあんまりない?
  • パケットフィルタのかけ方の定石って確立してるんだろうか。
    • IPマスカレードかかってないから、考え方はむしろシンプルなんだけど、グローバルIPを手元の端末に持ってるのって、怖くない?(速攻ポートスキャンされるv4グローバルの経験上)
    • まあ、外からの接続をルータで全拒否するのがいいんだろうけど、なんかせっかくのグローバルなのにそれはそれで寂しい気も
  • こういうことやるとき大体真面目に考えないといけないMTU値のこと、今のところ何も考えてない。ひどい。
  • それはそれとして光ネクストでPPPoE直接でv6もらうのもやってみたい。早いのかな

大体こんなところかなあ。要するに勉強不足です。

でまあ、何にせよ、とりあえずrtadvd的なものがなんとなく動いてて、繋いだらそれとなくv6アドレス(リンクローカルじゃなくてグローバルね)をもらえるようになりました。わーい。

ここまでで、家庭内LAN的にはv6 readyになりました。テストしてみると、

v6 test

v6 test

ばっちり。手元のWindowsからのtracerouteも、

traceroute6

traceroute6

うん、いいね。しかし、うーん、やっぱwebサーバは ::80 にするのが定石なのかなーーーーーーー。そうやると管理しやすいんですかね?ポート番号毎にIP分ける運用、パケットフィルタ書くときには整理しやすいのかなあ。この辺のノウハウをですね、その筋の方にまとめて頂きたいです。リーズナブルなやり方を。IIJのルータの、::75とか::10cとか、これstaticに振ってるんだと思うんですが、どういうポリシーでこういう決め方になってるんでしょう。指針が知りたいです。

ということでルータあたりの設定は完了、残るはLinux。この辺のちょっとしたノウハウがまた、もっと広まらないといけないと思うんだけど。

まずハマったのが、staticにIPアドレスを設定できないこと。CentOS6.2なんだけど、ちまたで書かれてる設定をしても、どうしても広告に従った自動決定になっちゃうっていう。

結論としては、このQ&Aがドンピシャでした。CentOS6.2で静的にIPv6アドレスを設定したい場合、NetworkManagerが関与してくるので、そこを何とかする必要があるかもしれない。ということですね。僕は単純に /etc/init.d/NetworkManager stop して、 chkconfig NetworkManager off しちゃいました。デフォルトでIPv6は有効だと思うので、/etc/sysconfig/network には何も追記せず、 /etc/sysconfig/network-scripts/ifcfg-eth0 に次の3行を追加しています。

IPV6INIT=yes
IPV6ADDR={設定したいv6アドレス}/64
IPV6_DEFAULTGW={IX2015のv6アドレス}

このやり方がCentOSのお作法的に正しいのかどうかは自信ないです。そんなに外してないとは思うんだけど。

次に設定したのは、リゾルバ。これは、それぞれのnamed.conf 次第だと思うんだけど、僕の場合この辺を追記した感じ。

  • listen-on-v6 port 53 {};
  • allow-query { v6アドレス追記 };
  • allow-recursion{ v6アドレス追記};

とりあえずlistenしてもらって、許可してもらわないとどうしようもない。ところで、LAN内の逆引きって、v4の時みたいにzoneにstaticに書いて管理するもんなんですかね?今は逆引き出来ないっていうとてもダサい状態なんだけど。

あとは、パケットフィルタ。とりあえず初期状態を確認すると、

[root@neumann sysconfig]# ip6tables -L
Chain INPUT (policy ACCEPT)
target    prot opt source       destination
ACCEPT    all      anywhere     anywhere state RELATED,ESTABLISHED
ACCEPT    ipv6-icmp anywhere    anywhere
ACCEPT    all      anywhere     anywhere
ACCEPT    tcp      anywhere     anywhere state NEW tcp dpt:ssh
REJECT    all      anywhere     anywhere reject-with icmp6-adm-prohibited
Chain FORWARD (policy ACCEPT)
target    prot opt source       destination
REJECT    all      anywhere     anywhere reject-with icmp6-adm-prohibited
Chain OUTPUT (policy ACCEPT)
target    prot opt source       destination

ふむ。なんとなくそれっぽいのが設定されているようなので、ここに外からのhttpを受けるように追記するのです。本当はsystem-config-firewallを使うべきなんだろうけど、ごめん、直接ファイル触っちゃいます。

[root@neumann ~]# vi /etc/sysconfig/ip6tables
--------------------------------------------------------------------------
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -s {LANのv6}/64 -p tcp --dport 53 -j ACCEPT
-A INPUT -s {LANのv6}/64 -p udp --dport 53 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

LANからの名前解決と外からのHTTPを取り急ぎ。書いて保存して/etc/init.d/ip6tables restart。ついでにchkconfigでデフォルトどうなってるかも確認。設定が上手いこと反映されてるか ip6tables -L で確認するのを忘れずに。例によってこれで安全かどうかは解らない。申し訳ない。

Apacheは、設定するところ何もなかった。NameVirtualHost *:80 って書いてあったので、そのままでいけちゃいました。

ああそうだ、.htaccessでIP制限してる領域(WordPressの管理画面とか)。これは当然v6でのアクセスになると弾かれるので、v6のアドレスを追記してあげる必要がありました。ぱっと検索したところ .htaccess の書き方なんて無かったんだけど(探せばあるのかも)、まあふつうに

Order Deny,Allow
Allow from 192.168.xxx
Allow from xxx.xxx.xxx.xxx
Allow from xxxx:xxxx:xxxx:xxxx::/64
Deny from all

こんな感じで大丈夫。とりあえず書いてみたら動くもん、検索しても当たらない訳だよね。

ということで、万事設定完了。そうなると、公開する前に、外部からnmapぐらいかけたい。これ、良いサービスあるんですかね。もう一カ所外部でv6アドレス持ってる計算機のroot持ってないと、ポートスキャン出来ない感じですかね?今回はとりあえず会社からやったんだけど、自宅鯖の人たち的にはこの辺のサポートも欲しいところと思ったのです。この辺その筋の方に是非(略)。

最後にAAAAレコードを書いて、会社の計算機にリモートで繋いでブラウザで日記見れるの確認して、僕ん家 IPv6 Launch は無事完了。お疲れ様でした。

この一連の作業、所要時間は3時間ぐらいのものなので、IX2015とかRTXナントカみたいなルータをご自宅で使っている方は、これを機にv6対応してみませんか。v6だったら最新のベータ版webアプリがタダで使えるけどv4はstableで有料ね、みたいなことを力のある事業者がやってくれれば、v6への移行は加速するとは思うんですが、v6のユーザがほぼゼロな状況では、それすら叶わないし。この辺のルータを自宅で使ってる人は大体そういうこと好きなひと何じゃないかと思うんだけど、最近ネットワークを繋ぐってことでわくわくするネタって、そんなに多くなくないですか。v6はまだ手探りな感じで楽しいですよ。僕だけかもしれないけど。

しかし、アレだね。これ、一般の家庭に入り込むには、まだ時間かかるね。普通の人はv4とかv6とかわからない、とにかく「インターネットが見れれば良い」んだから、当たり前にどのISPに契約してもPPPoEデュアルスタックが来る、みたいな状態にならないとねえ。んで、メルコなりAppleなりの、適当に繋いでそれっぽくIDとパスワード入れたらなんとなく繋がる系の家庭用ルータがv4もv6も対応してくれないと、ね。現状だと、実家にこの環境作る気にはならないもんなあ。ケータイの3GからLTEみたいに、喫緊の課題って感じでもないもんねえ。

まあ、本格的にv6の時代になる前に、自分なりにうまい構成法を掴みたいと思います。今回の作業だけでも、勉強しないといけないこと、いくつも出てきたもんね。

Written by bokusama in: 技術ねた,日記 | タグ: , , , ,

コメントはまだありません »

RSS feed for comments on this post. TrackBack URL



Leave a Reply

Template: TheBuckmaker.com Themes for WordPress | Web Hosting Plan Comparison, Slimdevices Squeezebox