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