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アドレスから生成されるのが、リンクローカルアドレス。
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 範囲:リンク (略)
$ echo d1d36334ad2007ddfe21d72fffeb50a9e | sha1sum 93ea4da110dd81775fa5b0d127dff21d4580ee8a - ^^^^^^^^^^ 40bitを使用する
Subnet IDを 00にし、インターフェイスIDを::1にすると アドレスは1d:45:80:ee:8a::1/64になる
IPアドレスはfd41:28b7:be11::47/64を設定
/etc/sysconfig
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
で確認
/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
# 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; }; };
/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
# /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::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 <------------------------------><----------------------------->
/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.
# 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.