IPv6をスタックするには? - The NeGi project

Download Report

Transcript IPv6をスタックするには? - The NeGi project

NeGi project 2010 presents
にIPv6をスタックしよう
(on Hyper-V)
Powerd by
Kunitaka Namba
※Solaris10とは手順に互換性があります。
1
目 的・概 要
(1)IPv6のスタック手順を把握する。
(2)IPv6関連のコマンドを抑える。
(3)IPv6への抵抗を無くす。(簡単)
(4)IPv6へのやる気もスタックする。
2
補 足・構 成
(1)OpenSolaris b134 on Hyper-V
もしかすると、前例の無い構成かも・・・
WindowsServer2008R2のHyper-Vに載ってます。
b134だとGUIが動きました。
(2)ストレージはNexentaStor3
10GBASE-TでiSCSI接続しています。
元をたどればコレもOpenSolaris b134だったり・・・
NexentaStor
http://www.nexentastor.org/projects/site/wiki/CommunityEdition
3
IPv6に対応させるには?
安心して下さい、OpenSolarisは
IPv6 Ready です。
動かすだけなら、Solaris8から対応
しています。
\ Solaris9でも使ってるよ!/
4
IPv6をスタックするには?
OpenSolaris(Solarisも同じ)ですが、
IPv4とは別のIPインタフェイス扱いに
なります。
ざっくりいうとVLANみたいなモノです。
#解りにくい人にはスミマセン
5
IPv6をスタックするには?
スタックしたいNICに、IPv6が
スタックされているか?
# ifconfig -a6
スタックされていなければ、plumb
しましょう。
# ifconfig dnet0 inet6 plumb up
6
IPv6をスタックするには?
勝手にリンクローカルアドレスが
スタックされます。
# ifconfig dnet0 inet6
dnet0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
inet6 fe80::0123:4567:89ab:cdef/10
※リンクローカルアドレス(fe80::/10)
7
IPv6をスタックするには?
Q.リンクローカルアドレスってなに!?
とりあえずキモいんだけど!
A.IPv6の仕様です。我慢して下さい。
IPv6のお勉強会ではないのでサラッ
と流します。
8
IPv6をスタックするには?
任意のIPv6アドレスをスタックしたい
場合、論理インタフェイスとします。
# ifconfig dnet0 inet6 addif \
2001:db8:dead::beef/64 up
Created new logical interface dnet0:1 と応答があれば成功しています。
削除したい場合は、# ifconfig dnet0:1 inet6 unplumb です。
9
IPv6をスタックするには?
ifconfig -a6の表示例です。
$ ifconfig -a6
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
inet6 ::1/128
dnet0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 3
inet6 fe80::0123:4567:89ab:cdef/10
dnet0:1: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 3
inet6 2001:db8:dead::beef/64
フィジカルインタフェイス(=dnet0)は
必ずリンクローカルになります。
10
IPv6をスタックするには?
設定ファイルに記録する。
/etc/hostname6.dnet0
addif 2001:db8:dead::beef/64 up
これで再起動しても大丈夫!!
複数行書いてもいい。
addif 2001:db8:dead::beef/64 up
addif 2001:db8:3939::cafe/64 up
11
IPv6をスタックするには?
dnet0
inet
192.168.39.39/24
リンクローカルアドレス
inet6
fe80::0123:4567:89ab:cdef/10
dnet0:1
\ イメージだとこんな感じ!/ 2001:db8:dead::beef/64
12
IPv6でIPMPを使うには?
IPMPもIPv6 Readyになっています。
ただし、検知IPは必要なくなりました。
検知にはリンクローカルアドレスを使うからです。
※デュアルスタックで使用すると、IPv6のIPMP
フェールオーバでIPv4側も切り替わります。
これはIPv6が優先される為で、仕様です。
# 実運用だと同一NICへのデュアルスタックを
# 避けたりしています。
13
IPv6でIPMPを使うには?
IPMP設定方法
/etc/hostname6.dnet0
-failover group GRP-NAME addif 2001:db8:dead::beef/64 up
/etc/hostname6.dnet1
-failover group GRP-NAME standby up
# リンクベースで検知する方は試していません。
# VM上なので動きが怪しいです・・・
14
IPv6のルーティング
routeコマンドのinet6オプションで
対応しています。
# route add -inet6 {Dst} {Nexthop}
デフォルトルートの例
# route add -inet6 default 2001:db8:dead::134
スタティックルートの例
# route add -inet6 2001:db8:feed::/48 2001:db8:dead::134
\ ここのinet6はハイフン要るよ!/
15
IPv6のルーティング
netstatコマンドもIPv6拡張されて
います。
-f inet/inet6指定しないと全経路を表示します。
# netstat -rn -f inet6
(IPv6の全経路を表示)
#またオプション違わね?とか言わないように・・・
16
IPv6のルーティング
Q.デフォルトルートの設定ファイルは
ないの?/etc/defaultrouter相当の。
A./etc/inet/static_routesですが、
手動での編集は推奨されていません。
route -p add -inet6 して下さい。
参照 http://blogs.sun.com/yappri/entry/static_routes
17
IPv6の名前解決
デフォルトの設定のままだと、AAAA
レコードを使ってくれない・・・
/etc/nsswitch.conf の修正を
忘れずに!!
ipnodes:
files dns
←ここに”DNS”を
18
IPv6の名前解決
/etc/resolv.conf も IPv6 Ready
になっています。
こんな書き方をしても大丈夫です。
nameserver 2001:db8:dead::beef
nameserver 192.168.39.39
19
IPv6の名前解決
hostsファイルはもちろん IPv6 Ready
です。(ipnodesは忘れてあげて・・・
2001:db8:dead::beef ipv6-hoge hoge
192.168.39.39 ipv4-hoge hoge
※/etc/hostsも/etc/inet/ipnodesも/etc/inet/hostsに
シンボリックリンクされてます。
20
IPv6の名前解決
hostsファイルは書く順番によって
動作が変わります。(IPv6⇒IPv4)
2001:db8:dead::beef ipv6-hoge hoge
192.168.39.39 ipv4-hoge hoge
↑だとhogeはIPv6/IPv4で引けます。
※ただし指定が無い場合はIPv6優先
21
IPv6の名前解決
hostsファイルは書く順番によって
動作が変わります。(IPv6⇒IPv4)
192.168.39.39 ipv4-hoge hoge
2001:db8:dead::beef ipv6-hoge hoge
↑だとhogeはIPv4だけになります。
22
IPv6の疎通確認とか
おなじみのpingから。
Linuxとかにあるping6コマンド
はありません。間違えないように。
# ping 2001:240:6b0::10
とか
# ping negi.ipv6labs.jp
です。
23
IPv6の疎通確認とか
tracerouteも同じです。
Linuxとかにあるtraceroute6コマンド
はありません。間違えないように。
# traceroute 2001:240:6b0::10
とか
# traceroute negi.ipv6labs.jp
です。
24
IPv6の疎通確認とか
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
25
IPv6の疎通確認とか
snoopもIPv6 Readyになっています。
ip6という条件を渡すと、IPv6の
パケットだけを見ることが出来ます。
# snoop –d dnet0 ip6
26
IPv6の疎通確認とか
telnetにはinet/inet6オプションの
様なものがありませんでした・・・
面倒ですが
# telnet 2001:db8:dead::beef
と
# telnet 192.168.39.39
を使い分ける必要があります。
27
IPv6のサービス
inetdからtftpをIPv6対応させてみる。
/etc/inet/inetd.conf
tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /var/tftp
UDPはudp6、TCPはtcp6を指定する。
デュアルスタックで待ち受ける。
# tftp 2001:db8:dead::beef で繋がります。後はお好きに。
28
IPv6のサービス
UDP/69のListen状態を確認するには。
# netstat -an -P udp -f inet -f inet6
これでSocket無し、IPv4/IPv6両方を
一度に確認できます。
# netstat -sP ip6 なんかもあります。
29
IPv6のサービス
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
30
IPv6のサービス
/etc/hosts.allowの記述は以下の
様になります。[]で囲む必要がある。
ssh: [2001:db8::1] [2001:db8:aaaa:bbbb::/64]
[]で囲まないと、正しく動作しません。
# TCP-WrapperのALL:ALLはIPv6も包括しています。
# IPv6対応ソフトで、Wrapper対応しているものも同様です。
31
IPv6のサービス
sendmail(submit.cf)のスマート
リレーホストにもIPv6の設定は可能。
/etc/mail/submit.cf
D{MTAHost}[2001:db8::1][2001:db8::2]
# 当然ですが、IPv4アドレスやFQDN混在も可能です。
# mailx -s “IPv6 Relay” [email protected] < /dev/null
32
IPv6のサービス
NET-SNMP 5.5でIPv6に完全対応?
こんなOIDが増えています!
IP-MIB::ipSystemStatsInOctets.ipv4
IP-MIB::ipSystemStatsInOctets.ipv6
IP-MIB::ipSystemStatsHCInOctets.ipv4
IP-MIB::ipSystemStatsHCInOctets.ipv6
33
IPv6のまとめ
普通に動きます。
IPv6を使って不便なのは、経路が不安定
だったり、帯域が不足しているから。
鶏か卵か待っているだけではダメ。
使える人からどんどん使ってみよう!!
34
質疑応答
\ 質問!/
35