つれづれ日記
ぶいよんブイロク?
GA | GW | G | A / amL | S | つれづれ日記 RSS: RDF Site Summary
最新 | 2010年 8月 7月 6月 5月 4月 3月 | もっと前 [ 携帯版 | IPv6版 ]
この日記はよしいまいち コメント

he.net の tunnel broker用の 起動時設定

he.net の tunnel broker用の 起動時設定 。Fedora 12用。

  • SITトンネルのデバイス名はhe-ipv6になる
  • he.netの routed /64アドレスはeth0につける

$ cat /etc/sysconfig/network-scripts/ifcfg-he-ipv6

# Config Script for ifup-sit

### he.net tunnel broker
### http://tunnelbroker.net/

# Uses following information from /etc/sysconfig/network:
#  IPV6_DEFAULTDEV=: controls default route (optional)
#  IPV6_DEFAULTGW=<address>: controls default route (optional)

TYPE=sit
DEVICE=he-ipv6
ONBOOT=yes

IPV6INIT=yes
IPV6FORWARDING=yes
IPV6_ROUTER=yes

IPV6TUNNELIPV4=72.52.104.74
IPV6TUNNELIPV4LOCAL=222.228.173.205
IPV6ADDR=2001:470:1f04:bc2::2/64

# IPV6_MTU=: controls IPv6 MTU for this link (optional)
# IPV6ADDR_SECONDARIES="[/] ..."

このトンネル用の経路を追加する。table 200に設定する。 この設定ファイルには ip -6 route add 以降のコマンドラインを 羅列できる。

$ cat /etc/sysconfig/network-scripts/route6-he-ipv6

# See /etc/iproute2/rt_table
dev he-ipv6 table 200

he.net の routed /64アドレスはeth0に追加する。 /etc/sysconfig/network-scripts/ifcfg-eth0に 以下の1行を追加する。Fedora 12で挟まれた部分はさわらないようにする。

IPV6ADDR=2001:470:1f05:bc2::1/64

別途、/etc/rc.d/rc.localの末尾などに追加:

### Source Address Selection ###
### RFC3484 Rule 6 Lables ###
ip -6 addrlabel add prefix 2001:0470::/32 label 10
### DELETE tunnel entry ###
ip -6 addrlabel del prefix 2002::/16 label 2

### Policy Routing ###
ip -6 rule add to 2001:470::/32 table 200

以下のコマンドで確認する。

$ sudo ifdown he-ipv6
$ sudo ifup he-ipv6
$ ping6 he.net
$ ping6 a.dns.jp
  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年05月11日(火)| あめ | 4/5 | カテゴリ: IPv6 Linux Fedora 12

Fedora 12 の Linux kernel 2.6.31.12で IPv6のポリシールーティングがようやく効いた

Fedora 12 の Linux kernel 2.6.31.12で IPv6のポリシールーティングがようやく効いた 。

Policy Routingというと、ソースアドレスやTCPなどの ポート番号を条件にして、特定のルータを指定して経路制御を 行うもの、と思う。

昨日まで試した設定がどうもうまくいかなかった。やったのは、

  • IPv6 over IPv4トンネルを本張る (1つはOCNv6/PPP, 1つはHE.NET/SIT)
  • 自分のサイトのIPv6アドレスはeth0に割り当てる
  • HE.NET: 2001:470:1f05:bc2::1/64
  • OCNv6: 2001:380:e07:10:200:f4ff:fe58:44f/64
  • ポリシールーティングの設定は:
    HE.NETの2001:470:1f05:bc2::/64を ソースアドレスに持つパケットはHE.NETのトンネルに向ける

しかし、ソースアドレスにHE.NETの2001:470:1f05:bc2::1が 選択されても、HE.NETではなくOCNv6のトンネルに向かってしまう。

type unicastを指定してみたり、HE.NETのrouted /64アドレスと トンネルの終端アドレスの両方で ip -6 rule を書いてみたが、 やはり同じだった。

そこで、ソースアドレスの判定をやめることにして、宛先だけを 指定してみることにした。 Linux でのソースアドレス選択にも、「IPv6でポリシー ルーティングすればよい」とあるが、ソースアドレスでの 振り分けはしていない。IPv4のソースアドレスによる振り分けなら、 ほかにたくさん紹介例があるのだが。

ということで、上のnabekenさんの例と同じように、 ソースアドレスではなく宛先アドレスでポリシー設定をした ところうまくいった。

  • IPv6 over IPv4トンネルを本張る (1つはOCNv6/PPP, 1つはHE.NET/SIT)
  • 自分のサイトのIPv6アドレスはeth0に割り当てる
  • HE.NET: 2001:470:1f05:bc2::1/64
  • OCNv6: 2001:380:e07:10:200:f4ff:fe58:44f/64
  • ポリシールーティングの設定は:
    WHOISに掲載されているHE.NETの割当IPv6アドレス2001:470::/32を
    宛先ドレスに持つパケットはHE.NETのトンネルに向ける
  • それ以外はOCNv6のトンネルに向ける
  • どちらかのトンネルが切れたときは、別のトンネルを使う

Fedora 12の場合、iproute2パッケージのipコマンドは もともと入っている。カーネルのAdvanced Routingも onになっているようだ。

### addrlabelはソースアドレス選択時のRFC3484 Rule 6のラベル判定表。

### HE.NETあてのIPv6ネットワークアドレスをラベル10番に設定する

### HE.NET以外の宛先はだいたいラベル1になり、
### HE.NETのソースアドレスはラベル10に判定されるので、
### HE.NET以外の宛先の場合はHE.NETのソースアドレスが
### 選択されることはない。

### 2002::/16のトンネルあてprefixもlabel 1にすれば
### よく使う経路に向けることができるので、label 2は削除しておく

$ sudo ip -6 addrlabel add prefix 2001:0470::/32 label 10
$ sudo ip -6 addrlabel del prefix 2002::/16 label 2
$ ip -6 addrlabel
prefix ::1/128		label 0
prefix ::/96		label 3
prefix ::ffff:0.0.0.0/96 label 4
prefix 2001:470::/32	label 10	### HE.NETのアドレスはここにマッチ
prefix 2001::/32	label 6
prefix 2001:10::/28	label 7
prefix fc00::/7		label 5
prefix ::/0		label 1		### HE.NET以外はだいたいここにマッチ

	### ソースと宛先がどちらもラベル1にマッチすれば、
	### そのソースアドレスが利用される

### HE.NETあてのパケットは、HE.NET用経路テーブルで処理する
$ sudo ip -6 rule add to 2001:470::/32 table 200
$ ip -6 rule
0:      from all lookup local
16383:  from all to 2001:470::/32 lookup ipv6_he_net
32766:  from all lookup main

### HE.NET用経路テーブルは、すべてHE.NETトンネルに送り出す
$ sudo ip -6 route add default dev he-ipv6 table 200
$ ip -6 route list table 200
default dev he-ipv6  metric 1024  mtu 1480 advmss 1420 hoplimit 0

### その他のパケットはすべてOCNv6のトンネルを使う
$ ip -6 route list table main | grep default
default dev he-ipv6  metric 1024  mtu 1480 advmss 1420 hoplimit 0

### 以前はHE.NETのソースアドレスが選択されていたが、
### OCNv6のソースアドレスが選択された [OK]
$ ip route get 2001:dc4::1
2001:dc4::1 from :: via 2001:dc4::1 dev ppp0  \
	src 2001:380:e07:10:200:f4ff:fe58:44f  metric 0
    cache  mtu 1390 advmss 1330 hoplimit 0

### HE.NETあてはHE.NETのソースアドレスと
### HE.NETのトンネルI/Fが選択された [OK]
$ ip route get 2001:470::1
2001:470::1 from :: via 2001:470::1 dev he-ipv6  \
	src 2001:470:1f04:bc2::2  metric 0
    cache  mtu 1480 advmss 1420 hoplimit 0

### もともとOCNv6のソースアドレスが選択されていた宛先。
### OCNv6のソースアドレスとトンネルI/Fが選択された [OK]
$ ip route get 2001:200::1
2001:200::1 from :: via 2001:200::1 dev ppp0  \
	src 2001:380:e07:10:200:f4ff:fe58:44f  metric 0
    cache  mtu 1390 advmss 1330 hoplimit 0

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年05月11日(火)| あめ | 2/5 | カテゴリ: Linux IPv6 Fedora 12

Linuxで IPv6ソースアドレスセレクションの状況を示すコマンドは ip route get "宛先アドレス"

Linuxで IPv6ソースアドレスセレクションの状況を示すコマンドは ip route get "宛先アドレス" 。特にLinux kernelの Advanced Routingをonにしなくても使えた(Linux kernel 2.6.31, Fedora 12)。

LinuxでIPv6トンネルを2本、OCNv6とHE.NET tunnelbrokerの両方を コマンドラインから使おうとして失敗。

ipv6.google.comやa.dns.jpからはping6が返り問題がない。 しかしa.root-servers.netにping6を打つと source address selectionが動いていて、HE.NETのソースアドレスが選択される。 しかし送出されるインターフェースにOCNv6のトンネルが選択されてしまい、 ping6の応答がない。

宛先 宛先 ソースアドレス 出力I/F
a.dns.jp2001:dc4::1 OCNv6(eth0) OCNv6へのトンネルI/F
a.root-servers.net2001:503:ba3e::2:30HE.NET(he-ipv6)OCNv6へのトンネルI/F

ip route コマンドの scope linkオプションはわかりやすそうな気がするが、 ip -6 route | grep ^feとしてIPv6リンクローカルアドレスを見ると、 IPv6にはscopeオプションはない。 しかし、ip -6 route show の表示が読みにくい。2008年当時の情報だからだろうか。

iproute2, ipコマンドの注意:

  • /etc/iproute2/に、ルール、経路テーブルの設定ファイルがある。
  • ip ruleはIPv4とIPv6でルールが別だがルール名が同じなので間違いやすい
  • ip tunnelはPPPトンネルについては表示しない (SIT, GRE, IP-in-IPのみ)

    現状確認

  • ip -6 rule # 経路テーブル名の一覧
  • ip -6 route list table main # テーブル main の経路
  • ip -6 route list table local # テーブル local の経路

    経路を追加

  • /etc/iproute2/rt_tables に "200 ipv6_ocn", "201 ipv6_he_net"を追加

$ sudo ip -6 rule add from 2001:470:1f05:bc2::/64 table ipv6_he_net
$ ip -6 rule		# IPv6の経路テーブルが追加された
0:      from all lookup local
16383:  from 2001:470:1f05:bc2::/64 lookup ipv6_he_net
32766:  from all lookup main

$ ip rule		# IPv4の経路テーブルは追加されていない
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

$ sudo ip -6 route add unicast default dev he-ipv6 table ipv6_he_net
$ sudo ip -6 route flush cache

$ ip -6 rule
0:      from all lookup local
200:    from 2001:470:1f05:bc2::/64 lookup ipv6_he_net
32766:  from all lookup main

$ ip -6 route list table ipv6_he_net
default via 2001:470:1f04:bc2::1 \
    dev he-ipv6  metric 1024  mtu 1480 advmss 1420 hoplimit 0

... しかし ...

$ ip route get 2001:503:ba3e::2:30
2001:503:ba3e::2:30 from :: via 2001:503:ba3e::2:30 \
    dev ppp0  src 2001:470:1f05:bc2::1  metric 0
    cache  mtu 1390 advmss 1330 hoplimit 0

# HE.NETのトンネルI/FではなくOCNv6のppp0 I/Fが選択された。うー

$ ip -6 route get from 2001:470:1f05:bc2::1 2001:503:ba3e::2:30
2001:503:ba3e::2:30 from 2001:470:1f05:bc2::1 via 2001:503:ba3e::2:30 \
	dev he-ipv6  src 2001:470:1f05:bc2::1  metric 0
    cache  mtu 1480 advmss 1420 hoplimit 0

... from を指定すると、期待どおりのvia と dev が表示された ...

### HE.NETのトンネルI/Fではなくeth0にrouted /64のアドレスをつけてみた
### しかし、やはりHE.NETのソースアドレスをつけながらも、出力デバイスが違う

$ ip route get 2404:6800:8007::63
2404:6800:8007::63 from :: via 2404:6800:8007::63 \
    dev ppp0  src 2001:470:1f05:bc2::1  metric 0
    cache  mtu 1390 advmss 1330 hoplimit 0

... こうしても、OCNv6から出て行って、HE.NETトンネルから返ってくる ...

$ ping6 -I 2001:470:1f05:bc2::1 2404:6800:8007::63

... ping6 コマンドで -I でHET.NETのrouted /64のアドレスを指定すれば、
HE.NETのトンネルから出て行き、HE.NETのトンネルから戻ってくる ...

... あ゛ー ...

... よく見たら、どこにping6を打っても、HE.NETのソースアドレスをつけて
OCNv6のトンネルに出て行き、HE.NETのトンネルから戻ってきていた ...

... 一部、2001:240::53、2001:200:c000::35は OCNv6経由だった ...

... ソースアドレスセレクションはOKだが、出力I/Fの選択がおかしい ...
... ポリシールーティングを設定したから? ...

$ sudo ip -6 rule del from 2001:470:1f05:bc2::/64 table ipv6_he_net

... やはりHE.NETのソースアドレスでOCnv6に出て行く ...

$ sudo ip -6 rule add from 2001:470:1f05:bc2::/64 table ipv6_he_net
$ sudo ip -6 route add ::/0 via 2001:470:1f04:bc2::1 \
  dev he-ipv6 mtu 1300 table ipv6_he_net

... やはり同じ ...

しかし、ping6 -I he_net_ipv6_tunnel_server_addr 2001:503:ba3e::2:30 としたあと、ping6 2001:503:ba3e::2:30 が通るようになってしまった。 tcpdumpしてみると、行きはOCNv6のppp0から出て行き、帰りはHE.NETの SIT tunnel I/Fから応答が届いた。いやはや。

参考資料:

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年05月09日(日)| はれ | 3/4 | カテゴリ: Linux IPv6 Fedora 12

Fedora 12 をGoogleで検索すると1,130万件、 Ubunto 9.10 で検索すると5,200万件

Fedora 12 をGoogleで検索すると1,130万件、 Ubunto 9.10 で検索すると5,200万件 。どちらも2009年の11-12月ごろに リリースされたので、ずいぶんな違いがある。
  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年03月02日(火)| くもり | 6/6 | カテゴリ: Software Fedora 12

Fedora 12のデフォルトの IPv6 パケットフィルタ (iptables)は、DHCPv6 が通らない

Fedora 12のデフォルトの IPv6 パケットフィルタ (iptables)は、DHCPv6 が通らない 。 udp/546, udp/547を使って、クライアントがff02::1:2の マルチキャストアドレスにリクエストを送るが、 返ってくるのが別のリンクローカルアドレスである、 DHCPv6サーバのリンクローカルアドレスなので、 DHCPv6サーバからの応答メッセージのソースアドレスが ip6tablesのセッションテーブルに載っておらず、遮断される。

正常に応答するときは、以下のようになる。 LL-C はDHCPv6クライアントのリンクローカルアドレス、 LL-S はDHCPv6サーバのリンクローカルアドレスの略。

$ sudo tcpdump -nti ppp0 ip6
...
LL-C.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
LL-S.dhcpv6-server > LL-C.dhcpv6-client: dhcp6 advertise
LL-C.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 request
LL-S.dhcpv6-server > LL-C.dhcpv6-client: dhcp6 reply

今のところ、リンクローカルは対向のOCNv6 PPPサーバだけの はずなので、とりあえずリンクローカルアドレスをすべて許可する -A INPUT -s fe80::/64 -j ACCEPT 以下の行を/etc/sysconfi/ip6tablesに挿入している。 まずいのは、このマシンを移動先で使ったり、別の謎のトンネルで 接続したり、ということか。

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年01月17日(日)| はれ | 2/5 | カテゴリ: Network IPv6 Security Fedora 12

perl-Net-IP-1.25-10.fc12.noarchが古い 。

自宅サーバをようやくFedora 12に入れ替え

自宅サーバをようやくFedora 12に入れ替え 。

  • Fedora 9との比較だが、インストール時にFedora updateの リポジトリをいっしょに設定すれば、更新済みのインストールが できて、たいへんよろしい。うまくいった。
  • Fedora 12のインストールは、vmlinuzとinitrd.imgだけを コピーして、vncから開いて、http経由でftp.riken.jpから インストールした。EEEPC 4G 701で、動作は早いのだが、 内蔵のSSDに書き込むのに時間がかかる。200MBほどの バックアップ用のtar ファイルを作るのにも1時間ほど かかったような気がする。
  • インストール後、NetworkManager状態でも、dhcpクライアントとして IPアドレスがとれていた。/etc/rc.d/init.d/networkに戻すには、 chkconfig --level 3 network onしなければならない。
  • Fedora 12に用意されている、perlのNet::SMTP::SSL RPMは、 Gmailにつながらない。つながるのは、Net::SMTP::TLSのほうだ。 Net::SMTP::TLSはFedora 12のRPMにないので、cpan -MCPAN -e shell して、install Net::SMTP::TLSすればよい。
  • # useradd xxxxx
  • # passwd xxxxx

  • perl-Date-Calc, radvd, xl2tpd をRPMで追加
    # yum -y install xl2tpd radvd perl-Date-Calc

Fedora 9 から Fedora 12 への引越しは割と簡単だった。 インストール後のFedora 12 自体の調整が少なくて済むからか。 perl、ディスプレイの明るさ調節についてはカスタマイズが必要だが、 コンパイルは perl のモジュールのみ。あとはIPv6のトンネルと IPsecか。RPMは増えたので、RPMの中からおもしろそうなものを 試したりするだけで時間がかかりそう。

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2010年01月05日(火)| くもり | 1/1 | カテゴリ: Fedora 12 EeePC

今月11月17日にリリースされていたのだった 。

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2009年11月20日(金)| はれ | 2/2 | カテゴリ: Fedora 12

Fedora 12の新機能を見ると、KVM関連が5項目 以上あり、多い

Fedora 12の新機能を見ると、KVM関連が5項目 以上あり、多い 。KSMは、仮想マシン間で同じ内容のメモリを共有する機能。

FCoEはFibre Channel over Ethernet。インストール時点から利用できる ようになった。インストール時点から利用できるデバイスに、BIOSで 動作するRAID機能が追加された。

起動時の初期ファイルシステムイメージを作るmkinitrdの置き換えで、 Dracutというのが入った。

NetworkManager が「完全(Full)IPv6対応」というのもあるが、 GUI対応したということらしい。dhcpv6を利用する。また、RDNSSは IPv6のルータ広報(Router Advertisement)メッセージ内にある、 DNSサーバのIPアドレス(RFC5006)を、Linux kernelから、ユーザ空間で受け取れるように する機能。いままでは、kernel内で処理するしかなかったが、RDNSSを 利用すれば、ユーザ空間から容易に、IPv6 RAで広報された DNSサーバのアドレスを取得できるようになる。 RAのRDNSSオプションをnetlink経由でkernelからとりだすパッチ。 これ用にrdnssdというのがあるらしい。

NFSはデフォルトでNFSv4を使うとのこと。

Perl 6実装のRakudoというのがあるそうだ。

PXEの最新実装、VirtPXEに置き換え。

仮想マシンのディスクイメージ用のlibguestfsというのがある。

Fedora 12 の新機能リストは、各項目での議論のログもリンク先に 掲示されていて、たいへんわかりやすい。法律、政治もこのようにしてほしい。 政治なんて特に議論の結果でしかないはずなのだが、話をした記録なしで 何か決めたとしたら、その時点で詐欺。

  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2009年09月24日(木)| はれ | 2/2 | カテゴリ: Fedora 12 IPv6

Fedora 12はi686ベースに移行するとのこと

Fedora 12はi686ベースに移行するとのこと 。 すべてのパッケージはi686でコンパイルされるので、 i586以下は非サポートになる。atomでの最適化が行なわれるので、 ネットブックに重点が置かれている。Fedora をデスクトップ用に 使う人はそんなにいないと思っていたが、ATOMでサーバなのか? その割にSSDへの最適化については特に書かれていないようだが、 もう十分なサポートレベルになったのだろうか。
  • Twitter
  • はてなブックマークに追加
  • Google
  • Yahooブックマーク
  • Facebook
| 2009年07月13日(月)| くもり | 1/3 | カテゴリ: Software Fedora 12
Fedora 12カテゴリ
1ページ

お便りはこちらへ (sshida@gmail.com)
見出し一覧は RSS で つれづれ日記 RSS: RDF Site Summary