に ipv6 を スタック しよう ( on vmware esxi4.1/hypervisor )
DESCRIPTION
NeGi project 2010 presents. に IPv6 を スタック しよう ( on VMware ESXi4.1/Hypervisor ). Kunitaka Namba. ※OpenSolaris とは手順に互換性があります。 ( Solaris8 ~ 10 にもだいたい使えます). 目 的・概 要. ( 1 ) IPv6 の スタック 手順を把握 する。 ( 2 ) IPv6 関連の コマンド を抑える。 ( 3 ) IPv6 への 抵抗を無くす 。(簡単) ( 4 ) IPv6 への やる気もスタック する。. - PowerPoint PPT PresentationTRANSCRIPT
1
に IPv6 をスタックしよう( on VMware ESXi4.1/Hypervisor )
NeGi project 2010 presents
Kunitaka Namba
※OpenSolaris とは手順に互換性があります。 ( Solaris8 ~ 10 にもだいたい使えます)
2
目 的・概 要( 1 ) IPv6 のスタック手順を把握する。
( 2 ) IPv6 関連のコマンドを抑える。
( 3 ) IPv6 への抵抗を無くす。(簡単)
( 4 ) IPv6 へのやる気もスタックする。※ 手順は Solaris10/OpenSolaris とほぼ同じです
3
補 足・構 成(1)IPv6 アドレス表記は RFC5952 に“たぶん” 準じています。(細かいツッコミは無しで・・・ わざとフルアドレスで書いてる所もあります)
(2)OpenIndiana b147 on ESXi4.1 ( 2 台) ・ CPU 動的割り当て /PhenomII X4 ・ MEM 1024MB ・ HDD 20GB ・ NIC e1000g x5
# 面白くない構成でゴメンナサイ
4
IPv6 に対応させるには? (1)
安心して下さい、” OpenIndiana” はIPv6 Ready です。
動かすだけなら、 Solaris8 から対応しています。
\ Solaris9 でも使ってるよ!/
5
IPv6 に対応させるには? (2)
大嘘
大嘘!!!!
# EthernetFrame さえ流せればメディアの制限はない
LAN ケーブルの買い替えは不要
6
IPv6 をスタックするには?(1)
OpenIndiana ( Solaris も同じ)ですが、
IPv4 とは別の IP インタフェイス扱いになります。
IPv4=inetIPv6=inet6
7
IPv6 をスタックするには?(2)
スタックしたい NIC に、 IPv6 がスタックされているか?# ifconfig -a6
スタックされていなければ、plumb しましょう。# ifconfig e1000g2 inet6 plumb up
8
IPv6 をスタックするには? (3)
自動的にリンクローカルアドレス※ 1 がスタックされます。( EUI-64 形式※ 2 )
# ifconfig e1000g2 inet6e1000g2: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
inet6 fe80::20c:29ff:fe13:952b/10※1 リンクローカルアドレス( fe80::/10 )※2 EUI-64 形式(次ページで図解)参考:原文 ftp://ftp.rfc-editor.org/in-notes/rfc4291.txt和訳 http://srgia.com/docs/rfc4291j.html
9
IPv6 をスタックするには?(4)
00
ベンダー ID ( 8bit x3 ) ベンダーユニーク番号( 8bit x3 )
MAC アドレス 0:c:29:13:95:2b 0c 29 13 95 2b
13 95 2bff fe ++0c 29
0 0 0 0 0 0 0 0
最初の 8bit ( 1byte )
0 0 0 0 0 0 1 0
U/L ビットを反転
02 +
952b:fe13:29ff020c :::fe80 /10
リンクローカルアドレス ( RFC4291=IPv6 アドレス体系)
64bit64bit
リンクローカルアドレスEUI-64 形式 図解
10
IPv6 をスタックするには? (5)
任意の IPv6 アドレスをスタックしたい場合、インタフェイスに addif します。
# ifconfig e1000g2 inet6 addif \2001:db8:3:dead::b147/64 upCreated new logical interface e1000g2:1 と応答があれば成功していま
す。
削除したい場合は、 # ifconfig e1000g2:1 inet6 unplumb です。
11
IPv6 をスタックするには? (6)
nwam に要注意
nwam が動作していると、 inet6 addif しても任意の IPv6アドレスが付きません。無効化しましょう。( OpenSolaris 、 OpenIndiana は必要、 Solaris は不要)
# svcadm disable physical:nwam# svcadm enable physical:default# Created new logical interface… を返す(リターンコード 0 )くせに、# nwam が logical interface を勝手に外します。
12
IPv6 をスタックするには? (7)
nwam の停止を確認する。これで大丈夫!
# svcs physicalSTATE STIME FMRIdisabled 12:21:45 svc:/network/physical:nwamonline 12:21:50 svc:/network/physical:default
13
IPv6 をスタックするには?(8)
ifconfig -a6 の表示例です。$ ifconfig -a6lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
inet6 ::1/128e1000g2: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 6
inet6 fe80::20c:29ff:fe13:952b/10 ether 0:c:29:13:95:2be1000g2:1: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 6
inet6 2001:db8:3:dead::b147/64
inet6 のフィジカルインタフェイス( =e1000g2 など)は必ずリンクローカルになります。
14
IPv6 をスタックするには?(9)
設定ファイルに記録する。
/etc/hostname6.e1000g2addif 2001:db8:3:dead::b147/64
up
これで再起動しても大丈夫!!複数行書いてもいい。addif 2001:db8:dead::beef/64 upaddif 2001:db8:3939::cafe/64 up
15
IPv6 をスタックするには?(10)
e1000g2
inet
inet6 fe80::20c:29ff:fe13:952b/10
2001:db8:3:dead::b147/64
リンクローカルアドレス
192.168.39.39/24
e1000g2:1
\ イメージだとこんな感じ!/
16
IPv6 で IPMP を使うには?(1)
IPMP も IPv6 Ready になっています。ただし、検知 IP は必要なくなりました。検知にはリンクローカルアドレスを使うからです。
※ デュアルスタックで使用すると、 IPv6 の IPMPフェールオーバ動作で IPv4 側も切り替わります。
これは IPv6 が優先される為で、仕様です。
# 実運用だと同一 NIC へのデュアルスタックを# 避けたりしています。
17
IPv6 で IPMP を使うには?(2)
IPMP 設定方法
/etc/hostname6.e1000g2-failover group {IPMP_Grp} addif 2001:db8:3:dead::b147/64
up
/etc/hostname6.e1000g3-failover group {IPMP_Grp} standby up
# リンクベースで検知する方は試していません。# 出来ないかも??
18
IPv6 のルーティングは? (1)
route コマンドの -inet6 オプションで対応しています。# route add -inet6 {Destination} {Nexthop}
デフォルトルートの例# route add -inet6 default 2001:db8:3:dead::b147
スタティックルートの例# route add -inet6 2001:db8:feed::/48
2001:db8:3:dead::b147
\ ここの inet6 はハイフン要るよ!/
19
IPv6 のルーティングは? (2)
netstat コマンドも IPv6 拡張されています。-f inet/inet6 指定しないと全経路を表示します。
# netstat -rn -f inet6 (IPv6 の全経路を表示)
# またオプション違わね?とか言わないように・・・#address “f”amily の” f” らしいです。(ヘルプ)
20
IPv6 のルーティングは? (3)
静的なルーティングを登録するには、route -p add -inet6 コマンドを使用します。
/etc/inet/static_routes が編集され、再起動後も設定が維持されます。
参照 http://blogs.sun.com/yappri/entry/static_routes
21
IPv6 のルーティングは? (4)
デフォルトルートの場合は、以下のコマンドになります。
# route -p add -inet6 default fe80::1234
22
IPv6 のルーティングは? (5)
ルータからの RA (ルータ広告=Router Advertisement )
を無視するには、以下の対応が必要です。
/etc/inet/ndpd.conf:e1000g2 StatelessAddrConf falsee1000g3 StatelessAddrConf false
# svcadm disable ndp# svcadm enable ndp
23
IPv6 の名前解決について (1)
デフォルトの設定のままだと、 AAAAレコードを使ってくれない・・・(かも/etc/nsswitch.conf の修正を忘れずに!!
ipnodes: files dns ←ここに” dns” を#AAAA は「クワッドエー」と読みます。
24
IPv6 の名前解決について (2)
/etc/resolv.conf も IPv6 Readyになっています。こんな書き方をしても大丈夫です。
nameserver 2001:db8:3:dead::b147nameserver 192.168.3.147
25
IPv6 の名前解決について (3)
hosts ファイルはもちろん IPv6 Readyです。( ipnodes は忘れてあげて・・・
2001:db8:3:dead::b147 ipv6-hoge hoge192.168.39.39 ipv4-hoge hoge
※/etc/hosts も /etc/inet/ipnodes も /etc/inet/hosts に シンボリックリンクされてます。
26
IPv6 の名前解決について (4)
hosts ファイルは書く順番によって動作が変わります。( IPv6⇒IPv4 )
2001:db8:3:dead::b147 ipv6-hoge hoge192.168.39.39 ipv4-hoge hoge
↑だと hoge は IPv6/IPv4 で引けます。 ※ただし指定が無い場合は IPv6 優先
27
IPv6 の名前解決について (5)
hosts ファイルは書く順番によって動作が変わります。( IPv6⇒IPv4 )
192.168.39.39 ipv4-hoge hoge2001:db8:3:dead::b147 ipv6-hoge
hoge
↑だと hoge は IPv4 だけになります。
28
IPv6 の疎通確認について (1)
おなじみの ping から。Linux とかにある ping6 コマンドはありません。間違えないように。# ping 2001:240:6b0::10とか# ping negi.ipv6labs.jpです。
29
IPv6 の疎通確認について (2)
traceroute も同じです。Linux とかにある traceroute6 コマンドはありません。間違えないように。# traceroute -I 2001:240:6b0::10とか# traceroute -I negi.ipv6labs.jpです。
30
IPv6 の疎通確認について (3)
ping/traceroute の小技集
1. A レコード結果だけ使いたい# { ping | traceroute } -A inet negi.ipv6labs.jp
2. AAAA レコード結果だけ使いたい# { ping | traceroute } -A inet6 negi.ipv6labs.jp
3. A/AAAA レコード結果の両方を使いたい# { ping | traceroute } -a negi.ipv6labs.jp
31
IPv6 の疎通確認について (4)
snoop も IPv6 Ready になっています。ip6 という条件を渡すと、 IPv6 のパケットだけを見ることが出来ます。
# snoop -d e1000g2 ip6
32
IPv6 の疎通確認について (5)
telnet には inet/inet6 オプションの様なものがありませんでした・・・面倒ですが# telnet 2001:db8:3:dead::b147と# telnet 192.168.39.39を使い分ける必要があります。
33
inetd の IPv6 対応状況
inetd から tftp を IPv6 対応してみる。/etc/inet/inetd.conftftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftp
UDP は udp6 、 TCP は tcp6 を指定する。デュアルスタックで待ち受ける。
# tftp 2001:db8:3:dead::b147 で繋がります。後はお好きに。
34
IPv6 のポート解放状態
UDP の Listen状態を確認するには。
# netstat -an -P udp -f inet -f inet6
これで Socket 無し、 IPv4/IPv6両方を一度に確認できます。
# netstat -sP ip6 なんかもあります。
35
IPv6 の IP フィルタリング
TCP-Wrapper も IPv6 Ready です。
※ TCP-Wrapper はデフォルトが無効、以下の手順で有効に。
# inetadm -p | grep "^tcp_wrappers"tcp_wrappers=FALSE
# inetadm -M tcp_wrappers=TRUE
# inetadm -p | grep "^tcp_wrappers"tcp_wrappers=TRUE
36
IPv6 の IP フィルタリング
/etc/hosts.allow の記述は以下の様になります。 [] で囲む必要がある。
ssh: [2001:db8::1] [2001:db8:aaaa:bbbb::/64]
[] で囲まないと、正しく動作しません。
# TCP-Wrapper の ALL:ALL は IPv6 も包括しています。# IPv6 対応ソフトで、 Wrapper 対応しているものも同様です。
37
IPv6 での SMTP
sendmail ( submit.cf )のスマートリレーホストにも IPv6 の設定は可能。
/etc/mail/submit.cfD{MTAHost}[2001:db8::1][2001:db8::2]
# 当然ですが、 IPv4 アドレスや FQDN混在も可能です。# mailx -s “IPv6 Relay” [email protected] < /dev/null
38
IPv6 の SNMP
NET-SNMP 5.5 で IPv6 に完全対応?
こんな OID が増えています!
IP-MIB::ipSystemStatsInOctets.ipv4IP-MIB::ipSystemStatsInOctets.ipv6IP-MIB::ipSystemStatsHCInOctets.ipv4IP-MIB::ipSystemStatsHCInOctets.ipv6
39
SunOS での IPv6 のまとめ
普通に動きます。
IPv6 を使って不便なのは、経路が不安定だったり、帯域が不足しているから。
鶏か卵か待っているだけではダメ。使える人からどんどん使ってみよう!!
40
質 疑 応 答
\ 質問!/