Vine5.2でnetwork(NetworkManagerを停止)してIPv6を構築
IPv6はn bitのサブネットプレフィックスと128-n bitのインタフェースIDで構成
-------------------------------------------------------- | サブネットプレフィックス | インターフェイスID | -------------------------------------------------------- n bit 128-n bit 2001:db8:cafe:babe::bad n=64 サブネットプレフィックス = 2001:db8:cafe:babe インターフェイスID = 0:0:0:bad ネットワークアドレス = 2001:db8:cafe:babe::/64
IPv6のゼロの省略
2001:db8:cafe:babe::bad ↓ ::は0で補完(::の場所は1か所,2か所以上あると補完バイト数が判らなくなる) 2001:db8:cafe:babe:0:0:0:0bad ↓ 0は省略されている。 2001:db8:cafe:babe:0000:0000:0000:0bad (2byteごと区切る)
IPv6一覧
::1/128 | ループバック(IPv4の127.0.0.1) |
2000::/3 | グローバルアドレス |
fd00::/7 | ユニークローカルアドレス 独自割り当て(ローカル管理) |
fc00::/7 | ユニークローカルアドレス 現在定義(集中管理) |
fe80::/10 | リンクローカルアドレス |
ff00::/8 | マルチキャストアドレス |
/n はn bit
MACアドレスから生成されるのが、リンクローカルアドレス。
24Bit 24Bit ------------------- MACアドレス | 001122 | 334455 | ------------------- 24Bit 16Bit 24Bit -------------------------- EUI-64アドレス | 001122 | fffe | 334455 | -------------------------- ↓universal/local Bit の反転 0000 0010 … 02 11 22 上位1Byteの7Bit目を反転すると0 → 2(Hex) ^^^^ リンクローカルアドレスは ------------------------------------------- |fe80000000000000| 021122 | fffe | 334455 | ------------------------------------------- 64Bit
EUI-64では左から,7ビット目と8ビット目には意味が定められている。7ビット目はuniversal/localビットと呼ばれ,0がセットされていると識別子が世界で一意であること示す。一方,1の場合はローカル利用を示しており,必ずしも一意である保証はない.
IPv4のプライベートアドレスに相当するのがユニークローカルアドレス。
ユニークローカルアドレスはサブネットプレフィックスの上位7bitが1111 110。
8bit目が1が独自割り当て 0が現在定義
よって
-------------------------------------------------------------- | 1111 1101 | Global ID | Subnet ID | インターフェイスID | -------------------------------------------------------------- 8bit (fd) 40bit 16bit 64bit
Global ID: ランダムに生成し、重複しない値
サブネット ID: ネットワークの管理サブネットを定義。管理者が自由に決める
ユニークローカルアドレスはローカル内部重複しなければOK。
重複を避けるためにGlobal ID (40bit)を以下のように生成(RFC 4193)
$ ntpdate -dq ntp.jst.mfeed.ad.jp 22 Jul 11:47:15 ntpdate[27765]: ntpdate 4.2.4p8@1.1612-o Sun Dec 13 12:36:41 UTC 2009 (1) Looking for host ntp.jst.mfeed.ad.jp and service ntp host found : ntp2.jst.mfeed.ad.jp transmit(210.173.160.57) (略) originate timestamp: d1d362b6.2e39448c Fri, Jul 22 2011 11:45:10.180 transmit timestamp: d1d36334.ad2007dd Fri, Jul 22 2011 11:47:16.676 <===ここを利用 filter delay: 0.05257 0.04285 0.04520 0.04866 (略)
$ /sbin/ifconfig (略) inet6アドレス: fe80::21d:72ff:feb5:a9e/64 範囲:リンク ^^^^^^^^^^^^^^^^^^ ここを利用する(8Byte) (略)
$ echo d1d36334ad2007dd021d72fffeb50a9e | sha1sum 4820d6a830f1b90187e091bfc64d155e059e47ea - ^^^^^^^^^^ 40bitを使用する
Subnet IDを 00にし、インターフェイスIDを::1にすると アドレスは1d:45:80:ee:8a::1/64になる
IPアドレスはfd41:28b7:be11::47/64を設定
/etc/sysconfig/network
NETWORKING_IPV6=yes
/etc/sysconfig/network-scripts/ifcfg-eth0
# IPV6INIT=no IPV6INIT=yes IPV6_AUTOCONF=no IPV6ADDR=fd41:28b7:be11::47/64 IPV6_DEFAULTGW=fd41:28b7:be11::54
Linuxでの /etc/hosts
fd41:28b7:be11::54 d5270-54
構成
IPv6 ---------- fd41:28b7:be11::47 fd41:28b7:be11::54 ---------- |d5270-47|----------------------------------------------|d5270-54| ---------- ---------- MAC 00:1D:72:B5:0A:9E
# ping6 -I eth0 fd41:28b7:be11::54 PING fd41:28b7:be11::54(fd41:28b7:be11::54) from fd41:28b7:be11::47 eth0: 56 data bytes 64 bytes from fd41:28b7:be11::54: icmp_seq=1 ttl=64 time=4.62 ms 64 bytes from fd41:28b7:be11::54: icmp_seq=2 ttl=64 time=0.378 ms
# ping6 fd41:28b7:be11::54 PING fd41:28b7:be11::54(fd41:28b7:be11::54) 56 data bytes 64 bytes from fd41:28b7:be11::54: icmp_seq=1 ttl=64 time=0.492 ms 64 bytes from fd41:28b7:be11::54: icmp_seq=2 ttl=64 time=0.376 ms
# ping6 d5270-54 PING d5270-54(d5270-54) 56 data bytes 64 bytes from d5270-54: icmp_seq=1 ttl=64 time=3.97 ms 64 bytes from d5270-54: icmp_seq=2 ttl=64 time=0.375 ms
以下のようにダンプをとりながらpingを打つ
# tcpdump -i eth0 -nxx ip6 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 14:37:35.482271 IP6 fd41:28b7:be11::47 > ff02::1:ff00:54: ICMP6, neighbor solicitation, who has fd41:28b7:be11::54, length 32 0x0000: 3333 ff00 0054 001d 72b5 0a9e 86dd 6000 0x0010: 0000 0020 3aff fd41 28b7 be11 0000 0000 0x0020: 0000 0000 0047 ff02 0000 0000 0000 0000 0x0030: 0001 ff00 0054 8700 332a 0000 0000 fd41 0x0040: 28b7 be11 0000 0000 0000 0000 0054 0101 0x0050: 001d 72b5 0a9e
相手のMACアドレスを検索するためにNS(近隣要請)をMACのマルチキャストを投げる。 MACマルチキャストは送信元MACアドレス上位16bit 33:33 にIPアドレスの下位32bitを組み合わせ、6Byetにして送る。(この場合IPアドレスの下位32bitは00:00:00:54) ところが、ノードマルチキャストアドレスの下位32BitはFF+ユニキャストアドレス 24Bitなため33:33:ff:00:00:54になる。
14:37:35.482802 IP6 fd41:28b7:be11::54 > fd41:28b7:be11::47: ICMP6, neighbor advertisement, tgt is fd41:28b7:be11::54, length 32 0x0000: 001d 72b5 0a9e 001d 72b5 0b18 86dd 6000 0x0010: 0000 0020 3aff fd41 28b7 be11 0000 0000 0x0020: 0000 0000 0054 fd41 28b7 be11 0000 0000 0x0030: 0000 0000 0047 8800 eaa9 6000 0000 fd41 0x0040: 28b7 be11 0000 0000 0000 0000 0054 0201 0x0050: 001d 72b5 0b18
# apt-get install radvd
/etc/sysctl.confに以下を追加
net.ipv6.conf.all.forwarding = 1
再起動
確認
# sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.all.forwarding = 1
で確認
直接設定(再起動時は消える)
# sysctl -w net.ipv6.conf.all.forwarding=1
/etc/radvd.conf
interface eth0{ AdvSendAdvert on; AdvManagedFlag off; AdvOtherConfigFlag off; prefix fd41:28b7:be11::/64{ AdvValidLifetime 7200; AdvPreferredLifetime 3600; }; RDNSS fd41:28b7:be11::47{ }; };
# /etc/rc.d/init.d/radvd start
/etc/sysconfig/network-scripts/ifcfg-eth0
# IPV6INIT=no IPV6INIT=yes IPV6_AUTOCONF=yes # IPV6ADDR=fd41:28b7:be11::33/64
# /etc/rc.d/init.d/network restart
$ /sbin/ifconfig eth0 リンク方法:イーサネット ハードウェアアドレス 00:1D:72:B5:0B:13 inetアドレス:10.3.4.33 ブロードキャスト:10.255.255.255 マスク:255.0.0.0 inet6アドレス: fd41:28b7:be11:0:21d:72ff:feb5:b13/64 範囲:グローバル <==自動に割り振られたIP inet6アドレス: fe80::21d:72ff:feb5:b13/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
$ netstat -rnA inet6 カーネルIPv6 経路テーブル 送信先サイト 次回ホップ フラグ Metric Ref 使用数 インターフェース fd41:28b7:be11::/64 :: UA 256 5 0 eth0 fe80::/64 :: U 256 0 0 eth0 ::/0 fe80::21d:72ff:feb5:a9e UGDA 1024 1 0 eth0 <==デフォルトGW ::1/128 :: U 0 7 1 lo fd41:28b7:be11:0:21d:72ff:feb5:b13/128 :: U 0 4 1 lo fe80::21d:72ff:feb5:b13/128 :: U 0 13 1 lo ff02::1:ffed:e5db/128 ff02::1:ffed:e5db UC 0 1 0 eth0 ff00::/8 :: U 256 0 0 eth0
デフォルトGWはサーバが指定される。
以下のコマンドで確認
# radvdump eth0 # # radvd configuration generated by radvdump 1.1 # based on Router Advertisement from fe80::21d:72ff:feb5:a9e # received by interface eth0 # interface eth0 { AdvSendAdvert on; # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump AdvManagedFlag off; AdvOtherConfigFlag off; AdvReachableTime 0; AdvRetransTimer 0; AdvCurHopLimit 64; AdvDefaultLifetime 300; AdvHomeAgentFlag off; AdvDefaultPreference medium; AdvSourceLLAddress on; prefix fd41:28b7:be11::/64 { AdvValidLifetime 7200; AdvPreferredLifetime 3600; AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; # End of prefix definition RDNSS fd41:28b7:be11::47 { AdvRDNSSPreference 8; AdvRDNSSOpen off; AdvRDNSSLifetime 100; }; # End of RDNSS definition }; # End of interface definition
Server側は動作している(Windowsで取得はできる)がLinuxクライアントでうまく割り振れないようだ原因調査中
# apt-cache search dhcpv6 dhcpv6 - DHCPv6 - DHCP server and client for IPv6 dhcpv6-client - DHCPv6 client
# apt-get install dhcpv6
/etc/dhcp6s.conf
interface eth0 { server-preference 255; renew-time 60; rebind-time 90; prefer-life-time 130; valid-life-time 200; allow rapid-commit; # option dns_servers 2000::2 ibm.com; link AAA { pool{ range fd41:28b7:be11::0001 to fd41:28b7:be11::00ff/64; prefix fd41:28b7:be11::/48; }; #range 3ffe:501:ffff:1::1 to 3ffe:501:ffff:1::10/64; }; };
リソースリリースファイル
/var/lib/dhcpv6/server6.leases
lease fd41:28b7:be12::1/64 { DUID: 00:01:00:01:13:ed:49:78:00:0c:29:0f:32:f5; IAID: 234884137 type: 0; RenewTime: 0; RebindTime: 0; state: 1; hostname: ; (start_date: 4 2011/8/11 21:41:40 UTC); start date: 1313098900; PreferredLifeTime: 130; ValidLifeTime: 200; } lease fd41:28b7:be12::1/64 { DUID: 00:01:00:01:13:ed:49:78:00:0c:29:0f:32:f5; IAID: 234884137 type: 0; RenewTime: 0; RebindTime: 0; state: 5; hostname: ; (start_date: 4 2011/8/11 21:41:40 UTC); start date: 1313098900; PreferredLifeTime: 130; ValidLifeTime: 200; } lease fd41:28b7:be12::2/64 { DUID: 00:01:00:01:13:ed:49:78:00:0c:29:0f:32:f5; IAID: 234884137 type: 0; (略)
# apt-get install dhcpv6-client
/etc/dhcp6c.conf
interface eth0 { # #information-only; # send rapid-commit; # request prefix-delegation; # #request temp-address; };
/etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes IPV6_AUTOCONF=yes # IPV6ADDR=fd41:28b7:be11::33/64 DHCPV6C=yes
SLAAC(radvd)が動作さいていないときはIPV6_AUTOCONF=noを指定
# /sbin/ifconfig eth0 リンク方法:イーサネット ハードウェアアドレス 00:1D:72:B5:0B:13 inetアドレス:10.3.4.33 ブロードキャスト:10.255.255.255 マスク:255.0.0.0 inet6アドレス: fd41:28b7:be11::1d/64 範囲:グローバル <==割り振られたIP inet6アドレス: fd41:28b7:be11:0:21d:72ff:feb5:b13/64 範囲:グローバル inet6アドレス: fe80::21d:72ff:feb5:b13/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
サブネットプレフィックス fd41:28b7:be11:0000
これがゾーンになる。たとえば
インターフェイスID 0000:0000:0000:0054
の場合逆引きは
fd41:28b7:be11::54 fd41:28b7:be11:0000:0000:0000:0000:0054 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 e b 7 b 8 2 1 4 d f <------------------------------><-----------------------------> インターフェイスID サブネットプレフィックス
のように考える
/etc/named.conf
acl "localnet" { 10.0.0.0/8; 127.0.0.1; fd41:28b7:be11::/64; //(同一サブネットプレフィックスを指定) }; options { directory "/var/named"; auth-nxdomain no; listen-on-v6{ //IPv6からの問い合わせに答えるため必要 any; }; }; (略) zone "0.0.0.0.1.1.e.b.7.b.8.2.1.4.d.f.ip6.arpa"{ type master; file "named.rev6"; };
/var/named/named.hosts
; ; IPV6 Test /var/named/named.hosts ; $TTL 1D @ IN SOA d5270-47.mie-chukyo-u.ac.jp. root.d5270-47.mie-chukyo-u.ac.jp. ( 3 ; Serial 10800 ; Refresh 1800 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS d5270-47.mie-chukyo-u.ac.jp. ; IN MX 10 atom.ism21.net. d5270-33 IN A 10.3.4.33 d5270-47 IN A 10.3.4.47 d5270-54 IN A 10.3.4.54 d5270-47 IN AAAA fd41:28b7:be11::47 d5270-54 IN AAAA fd41:28b7:be11::54
/var/named/named.rev6
; ; IPv6 TEST /var/named/named.rev6 ; $TTL 1D @ IN SOA d5270-47.mie-chukyo-u.ac.jp. root.d5270-47.mie-chukyo-u.ac.jp. ( 11 ; Serial 10800 ; Refresh 1800 ; Retry 3600000 ; Expire 86400 ) ; Minimum @ NS d5270-47.mie-chukyo-u.ac.jp. 3.3.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR d5270-33.mie-chukyo-u.ac.jp. 7.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR d5270-47.mie-chukyo-u.ac.jp. 4.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR d5270-54.mie-chukyo-u.ac.jp.
/etc/resolv.conf
search mie-chukyo-u.ac.jp nameserver fd41:28b7:be11::47
# host d5270-54 d5270-54.mie-chukyo-u.ac.jp has address 10.3.4.54 d5270-54.mie-chukyo-u.ac.jp has IPv6 address fd41:28b7:be11::54
# host fd41:28b7:be11::54 4.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.1.e.b.7.b.8.2.1.4.d.f.ip6.arpa domain name pointer d5270-54.mie-chukyo-u.ac.jp.
# dig d5270-54.mie-chukyo-u.ac.jp. AAAA ; <<>> DiG 9.6-ESV-R2 <<>> d5270-54.mie-chukyo-u.ac.jp. AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8893 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; QUESTION SECTION: ;d5270-54.mie-chukyo-u.ac.jp. IN AAAA ;; ANSWER SECTION: d5270-54.mie-chukyo-u.ac.jp. 86400 IN AAAA fd41:28b7:be11::54 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ここ ;; AUTHORITY SECTION: mie-chukyo-u.ac.jp. 86400 IN NS d5270-47.mie-chukyo-u.ac.jp. ;; ADDITIONAL SECTION: d5270-47.mie-chukyo-u.ac.jp. 86400 IN A 10.3.4.47 d5270-47.mie-chukyo-u.ac.jp. 86400 IN AAAA fd41:28b7:be11::47 ;; Query time: 0 msec ;; SERVER: fd41:28b7:be11::47#53(fd41:28b7:be11::47) ;; WHEN: Tue Aug 9 15:03:28 2011 ;; MSG SIZE rcvd: 140