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