IPv6の導入 ~導入編
Download
Report
Transcript IPv6の導入 ~導入編
hbstudy #20
明日から始めるIPv6
~やる気は枯渇していないか?大丈夫だ、問題ない~
Kunitaka Namba
TwitterID: @ipv6labs
1
自己紹介
氏名:難波 邦考(Kunitaka Namba)
よく“孝”とか、Na”n”baに間違えらて公的処理等が止まる・・・
所属:いんたーのっと(個人参加)
役職無し、部下無し、資格無し・・・IPv6の仕事無し。orz
主な分野:
・“Sun” Solaris + OSSなインフラ構築~運用
BIND、Apache、Postfix、sendmail、ENMA、Nagios、etc…
・サーバ、ネットワークの監視設計
・セキュリティ、イレギュラー対応
2
留意事項
※1. IPv6導入をしていたのは約3年~半年前です。
古い情報があるかもしれません
※2. 現在の業務とIPv6は全然関係ありません。
ExcelとPowerPointがお友達、Terminal開かない日も多い・・・
※3. CCNAの賞味期限がとっくに切れています。
感性でネットワークを触るので、いい加減です。パケットを感じるんだ!
※4. 時々変な事を呟いていますが無視して下さい。
精神崩壊を防ぐためです。皆様にはご迷惑をおかけしております
3
主 旨・目 的
(1) IPv4枯渇とIPv6導入について考える。
もう(APNIC配下は)“来年になったら本気出す“だと間に合わない
(2) IPv6対応について手法や失敗ネタを共有する。
IPv6はIPv4へ影響しないよね?は誤り、混ぜるな危険
(3) 参加者のIPv6対応のやる気を枯渇させない。
2000年頃IPv6を使っていた人はやる気が枯渇した人が多いという噂
(4) IPv6 Readyなエンジニアを増やす。
機材が対応していてもエンジニアが IPv6 not Ready とか格好悪い
4
IPv4枯渇の現状
IPv6「IPv4が枯渇したようだな」
ASN「ククク・・・奴は我ら四天王の中でも最小の空間」
MAC「枯渇に陥るとは、四天王の面汚しよ・・・」
2011/02/03
IANAのIPv4アドレスがついに枯渇
IPv4 Address Report
http://www.potaroo.net/tools/ipv4/index.html
5
IPv4枯渇の現状
「来年から本気出す」
でも間に合うのでは!?
残り1年弱
IPv4 Address Report
http://www.potaroo.net/tools/ipv4/index.html
6
IPv4枯渇の現状
APNICのIPv4アドレスの枯渇は
3~6ヵ月後(2011年05~11月)
と予想されている。
「来年から本気出す」
では間に合わない!!
IPv4 Address Report
http://www.potaroo.net/tools/ipv4/index.html
7
IPv6の導入 ~設計編~
設計編:
IPv6なネットワークを設計する
際に発生した課題とその対処など
についてのお話
もうExcelシート捨てたい・・・
8
IPv6の導入 ~設計編~
IPv6導入により複雑化するネットワーク
構成によっては、IPv4プライベートアドレスとIPv6グローバル
アドレスが混在する混沌としたネットワークになる。
⇒その時のアドレスの管理は!?
DualStack環境となると1つのVLANに2つのIPversionが混在する
ようになる。
しかしそのVLAN内の全てが、DualStackとも限らない。
⇒その時のネットワーク構成図は!?
9
IPv6の導入 ~設計編~
Q. IPv6アドレス空間をそのままExcelシートで
管理できるのか?
A. 無理、IPv4アドレス空間の管理手法では
収まらない。
IPv4アドレスの第3オクテットをワークシート名に~ というよく
見かける管理手法では、Excelシートには収まらない可能性が高い。
/56であれば256シートで済むが、/48になると65535シートが
必要になり、Excelが65531シート※までしか扱えない。
※重すぎて使い物になりません。
10
IPv6の導入 ~設計編~
どうしてもExcelシートで管理してみたい方は、
以下に65531枚のシートを生成したExcelファイルを
置いています。ご自由にどうぞ。
http://negi.ipv6labs.jp/data/tmp/Sheet65531.xls
マクロサンプル
Sub Macro1()
Do While (Sheets.Count < 65536)
Sheets.Add
Application.Wait [NOW()+"0:00:00.001"]
Loop
End Sub
11
IPv6の導入 ~設計編~
Q. IPv6アドレスを使用して意図的なアドレス生成
したい。例:2001:db8:dead::beef
A. DualStack環境の場合は、意図的なアドレスを
生成して使用するべきではない。
IPv4側のアドレス体系との因果が無くなり、運用管理に大きな
負担が生じてしまう。
イベント用やテストベッド用ならともかく、実運用では堅実な
アドレス体系=既にあるIPv4の体系に沿った形に近づける
のが無難です。
12
IPv6の導入 ~設計編~
DualStackの設計においては、以下となる可能性が高い。
利用される
IPv4アドレス > IPv6アドレス
利用される
IPv4アドレス ≒ IPv6アドレス
※リンクローカルアドレスは除いたIPv4プライベート/グローバル
アドレス:IPv6グローバルアドレスの場合
13
IPv6の導入 ~設計編~
IPアドレス設計
既設のIPv4設計
DualStack化されてゆく部分
IPv4のみ使用する部分
追加されるIPv6設計
実験用程度
で十分な領域
IPv6のみ使用する部分
14
IPv6の導入 ~設計編~
設計の基点はIPv4アドレスで行ってみた。
・IPv4の管理ポリシーを引き継ぐことができる。
⇒Excelシート大好きNEは歓喜するに違いない。
・IPv6のアドレス設計/割当に悩まなくていい。
⇒更に ::dead:beef とか cafe とか ace とか fee1 とか
醜い命名規則と、命名権?の取り合いを防ぐことが可能。
15
IPv6の導入 ~設計編~
Excelっぽく表現
IPv4
ObjectGroup:
10.22.33.0/24
IPv6
=
=
=
=
=
=
ObjectGroup:
10.22.33.123
Object:
10.22.33.123
Object:
2001:db8:22:33::123
ここの変換規約を
定義すれば生成可能
16
IPv6の導入 ~設計編~
MyDualStack.xls
Sheet11-1
IPv4
Sheet11-3
Sheet11-2
IPv6
10.11.1.0/24
2001:db8:11:1::/64
IPv4
IPv6
10.11.2.0/24
2001:db8:11:2::/64
IPv4
IPv6
10.11.3.0/24
2001:db8:11:3::/64
17
IPv6の導入 ~設計編~
IPv4アドレスからIPv6アドレスを生成する例
(現実的にはほぼ不可能、中小へは/48割当)
Oct.1
Oct.2
Oct.3
Oct.4
010 . 123 . 123 . 123 /24
2001 : 0db8 : 0123 : 0123 : : 0123 /64
1~32bit
33~48bit
49~64bit
65~128bit
18
IPv6の導入 ~設計編~
IPv6/48にIPv4/8をマッピングするには
10進数は諦め、16進数変換させるしか・・・
Oct.1
Oct.2
Oct.3
Oct.4
010 . 123 . 123 . 123 /24
2001 : 0db8 : 0db8 : 7b 7b : : 0123 /64
1~48bit
49~56bit
57~64bit
65~128bit
19
IPv6の導入 ~設計編~
設計の基点はIPv4アドレスで行う場合の欠点
・IPv4/8をIPv6/48に格納するには、/8内が全てが
クラスCのクラスフル以上での割当を行って
いないと、格納幅(16bit)が不足する。
・IPv4/8をIPv6/48に格納しようとすると、
10進数から16進数に変換しないと収まらない。
オペレータの視認性は良くない。
20
IPv6の導入 ~設計編~
IPv4/16+CIDR構成からのIPv6アドレス
生成した例(IPv6/48を想定)
Oct.1
Oct.2
Oct.3
Oct.4
192 . 168 . 0~255 . 123 /24
2001 : 0db8 : 0db8 : 0~ff 0~ff : : 0123 /64
1~48bit
49~56bit
クラスフル識別用
57~64bit
クラスレス用
65~128bit
21
IPv6の導入 ~設計編~
IPv4/IPv6アドレス管理のまとめ
・IPv4を基点として管理すると楽そう
・IPv4を基点として管理出来ないものは
どうしても存在する
・ IPv4を基点として管理する以上、
IPv4の設計(不良債権)に影響を受ける。
22
IPv6の導入 ~設計編~
DualStackのネットワーク図はどうするのか?
全てがDualStackであれば、下記の図は成立するが・・・
10.55.60.0/24
2001:db8:55:60::/64
10.55.61.0/24
2001:db8:55:61::/64
23
IPv6の導入 ~設計編~
既出のIPv4ネットワーク図にIPv6を加えると、
下記のように複雑なネットワーク図へと変化してしまう。
.1
::1
2001:db8:55:60::/64
10.55.60.0/24
.10
::9
.9
混ぜるな危険!!
しかしDualStackでは
避けては通れない。
::a1
.255
::ff
.255
2001:db8:55:61::/64 ::ff
.15
::f
10.55.61.0/24
24
IPv6の導入 ~導入編~
導入編:
IPv6を導入する際に発生する
問題とその対処などについての話
被害経験ありです・・・
25
IPv6の導入 ~導入編~
Q. IPv6はMTUブラックホールが起こりやすい?
A. IPv6の仕様や現在の構成上MTUブラックホールが
起こりやすい条件が整っている。
・IPv6は中継機器でのパケット分割が許可されない。
・IPIPトンネル(IPv6 over IPv4)接続している所は、
MTU=1280で繋がっているところが多い。
・エンドツーエンドが使用できるパケットサイズはICMPv6
で(サイズ超過していないか)知ることができるが、
ICMPv6がフィルタリングされていることが多い。
ICMPv6 Type2(Packet too Big)/ RFC 1981
26
IPv6の導入 ~導入編~
各NIC(B点)でMTUを設定すると面倒なので、ゲートウェイとなる
ルータのインタフェイス(A点)でMTU=1280などに固定すると楽である。
※MTU=1500が使える内向きルーティング(があった場合)も1280になる点は注意する。
MTU Black Hole
A
ex)MTU=1280
B
B
Target host
MTU=1500
27
IPv6の導入 ~導入編~
これだけは覚えて帰ろう 其の壱
困ったらMTU=1280、
MTU=1280はIPv6のおまじない。
28
IPv6の導入 ~導入編~
Q. IPv6のRA(Router Advertisement)は
積極的に活用すべき?(RAを信頼すべき?)
A. 基本的に使わない方が良い。
・適切でないRAが流れてくることが多く、経路ハイジャック
される可能性が高い。
IPv6関係の設定を入れると勝手にRAを送出してしまうような
ネットワーク機器もある・・・
・デフォルトゲートウェイは通知できるが、IPv6 DNSリカーシブ
サーバは通知出来ない。(DHCPv6が必要)
※RAでDNSリカーシブサーバの通知をさせてしまおう という話もある
“DNSサーバ“と言うと某S先生に怒られそうです。(’A`;)
29
IPv6の導入 ~導入編~
C社製内部ルータにIPv6設定追加というシチュエーションである。
“ipv6 nd ra suppress”を設定していない状態でIPv6をスタック
させると、RAを送出してしまう。(※IPv4の野良DHCPに似た問題)
Core Router
2001:db8:2::1
Default Gateway
RA
悪意無きルータとは限らない
これがBSDやLinuxの悪意ある
ルータならば・・・
↓
2001:db8:2::f
Internal Router
Node
デフォルトゲートウェイは
2001:db8:2::fに変更される
IPv6設定追加
30
IPv6の導入 ~導入編~
内部ネットワークにIPv6ルータを適当に置くと、RAで“不達となるIP経
路を優先する問題(IPv6 brokennessというらしい)”を誘発してしまう。
特にクライアントはIPv6が自動構成になっていることが多いので注意する。
上流への経路が無い
IPv4 Router
IPv4 Default Gateway
IPv6 Router
RA
IPv6 Default Gateway(※RAにより自動構成)
DualStack Node
RAに誘発されて IPv6 brokenness が
発生、IPv4 fallback によるサービス
遅延が・・・
31
IPv6の導入 ~導入編~
各レイヤの担当はIPv6導入の際には十分な体制で。
■サーバ担当者:
各サーバのIPv6構成は無効になっているか、または手動設定
になっているか(RA/DHCPv6を無視するか)確認しておく。
■ネットワーク担当者:
各NW機器のIPv6スタック時の挙動(デフォルトでのRA送出
など)を把握しておく。
IPv6をスタックできる機器の全てはIPv4のみで運用している
時点からRAを送受信しない設定を行っておくこと。
32
IPv6の導入 ~導入編~
でもグループポリシーが見当たらない・・・
対エンドユーザとなるとRA無視となる
グループポリシー@ActiveDirectoryが欲しい所ではあるが、
過去に探してみたところ、見つからない・・・
PowerShellでRA無効化のバッチを作ってみたので、
これをログインスクリプトに登録すれば大丈夫?
http://negi.ipv6labs.jp/data/tmp/winnt6_ra-disable.ps1.txt
作成協力:Twitterのフォロワーな皆さん
MSさん作ってくれないかなぁ・・・ポリシー
33
IPv6の導入 ~導入編~
これだけは覚えて帰ろう 其の弐
(特にサーバセグメントでは)RAは
信じない、出さない、受け取らない。
RAを信じる者は救われない と思ってる。
34
IPv6の導入 ~導入編~
Q. そのAnyにIPv6は含まれますか?
A. 機器やソフトの実装によって異なります。
IPv6導入時に必ずポリシーの挙動はIPv6側も
見ましょう。
TCP_Wrapper :AnyはIPv6/IPv4を包括しています。
C社のACL
:IPv4、IPv6それぞれにACLがあります。
未定義のIPversion側のACLはAnyの許可になります。
35
IPv6の導入 ~導入編~
IPv6のACLを未定義なままIPv6導入を進めると、下記のようなケース
が発生してしまう。
LAN側で発生する分についてはまだマシではあるが、FW手前の
WANルータで発生すると非常に危険である。
ACL:Permit
〇
Router:
管理VLANのIPv4のみ
ACLでtelnet/sshを
許可している
ACL:Permit
(※ACL未設定状態)
IPv4 telnet/ssh
Administrative VLAN
ACL:Deny
×
〇
Network Administrator
IPv4 telnet/ssh
IPv6 telnet/ssh
ex)fe80::● ● ● ●
DualStack Node
36
IPv6の導入 ~導入編~
IPv4での検証時にIPv6側も試す位の実行力が、
これからは必要と思ふ。
当然、設定のベストプラクティスは変化する。
⇒少なくとも推奨設定ではIPv6のACLはALL:Denyを
慣例化しないと危険そうである。
変化に強いのはスペシャリストよりも、
ジェネラリストなのは自然の常。
⇒ペーパーNPを量産した組織は痛い目を見ると思う。
真のスペシャリストはジェネラリストなので問題ない筈。
37
IPv6の導入 ~導入編~
これだけは覚えて帰ろう 其の参
IPv4側で行ったことは、
IPv6側でも行ってみる。
IPv4隠してIPv6隠さず にならないよう・・・
(ピンチはチャンスだ!)
38
IPv6の導入 ~導入編~
Q. IPv6のFWやIPフィルタは本当に必要なの?
(攻撃をするような輩はまだいないよね?)
A. IPv6のFWやIPフィルタは必須です。
・IPv4はNAPT配下となる(ある程度安全な)ネットワークでも
IPv6の場合は、エンドツーエンドの直接通信となってしまう。
(対インターネットからの)逆止弁はIPv6は期待できない。
・DMZなどに導入するFWはIPv4同等以上のポリシーを定義する
必要性があります。(以上 となるのはIPv6の特性の差異)
・IPv4向きのExploit Codeも少し直すだけでIPv6対応になります。
※IPv6になっても苦労は減らない。
39
IPv6の導入 ~導入編~
IPv4はNAPT配下から通信を開始しないと通信は成立しないが、
IPv6は双方向が直接通信するため、通信の開始の主導権が相手にもある。
NAPTの為、内向にポートマッピング
されてないポートには通信できない
DualStack Node(A)
IPv4 Internet
×
IPv4 Router
NAPT(IPマスカレード)
IPv6 Internet
IPv6 Router
ex)IPIP Tunnel
IPv6は直接接続可能
IPv4 Private Network
IPv6 MyNetwork
(※Global IPv6 Address)
DualStack Node(B)
40
IPv6の導入 ~導入編~
FWの導入における対策ポイント(1)
ICMPv6は必ず許可すべき。
⇒透過させない場合は、手前でMTU=1280を返すような構成にすること。
ICMPv6はMTU-Path-Discovery機能があるため、
無応答にするとMTUブラックホールの要因となる。
(※同様のテクニック/バッドノウハウはロードバランサ等でも)
IPv6 Network(A)
MTU=1280
×
ICMPv6
IPv6 Network(B)
MTU=1280
41
IPv6の導入 ~導入編~
FWの導入における対策ポイント(2)
DualStack環境のポリシーはIPv4ポリシーに
準拠させるべき。
⇒導入・運用コストを少しでも抑える。(はずだが・・・
しかし私が知っているFW製品はIPv4かIPv6でObjectが
分離してしまう。
もちろん、IPv4とIPv6のポリシーテーブルも別である。
42
IPv6の導入 ~導入編~
鏡写しで設定できるとしても、FW自体に自動生成機能があるわけでは
無いので、3倍以上の工数になってしまう。
(IPv4/IPv6設定と突き合わせ、さらにはイリーガルパターン)
FW
IPv4ポリシーテーブル
DNS_Server(Group)
IPv6ポリシーテーブル
DNS_Server(Group)
ns1(192.168.0.10)
ns1(2001:bd8::10)
ns2(192.168.0.11)
ns2(2001:bd8::11)
43
IPv6の導入 ~導入編~
Object/Object Groupの管理領域が分離してない?ようなFWもあり、
Object/Object Groupの重複が認められないことも・・・
FW
IPv4ポリシーテーブル
V4_DNS_Server(Group)
重複の考慮
が必要
IPv6ポリシーテーブル
v6_DNS_Server(Group)
v4_ns1(192.168.0.10)
v6_ns1(2001:bd8::10)
v4_ns2(192.168.0.11)
v6_ns2(2001:bd8::11)
44
IPv6の導入 ~導入編~
下のようなObjectを作成出来る日までインフラエンジニアの苦悩は
続きそうである。(監視系でも同じ悩みがある・・・)
DNS_Server(Group)
WWW_Server(Group)
ObjectName:ns1
IPv4 Addr(192.168.0.10)
IPv6 Addr(2001:db8::10)
ObjectName:www1
IPv4 Addr(192.168.0.80)
IPv6 Addr(2001:db8::80)
ObjectName:ns2
IPv4 Addr(192.168.0.11)
IPv6 Addr(2001:db8::11)
ObjectName:www2
IPv4 Addr(192.168.0.81)
IPv6 Addr(2001:db8::81)
45
IPv6の導入 ~導入編~
(L2)FWの導入における対策ポイント(3)
IPv6マルチキャストは透過させなければいけない。
(※EyherType:0x86ddの許可も忘れずに)
⇒隣接探索=ICMPv6 Type135 NS(Neighbor Solicitation)
がIPv6マルチキャスト(ff00::/8)宛にパケットを送信します。
フィルタすると、Neighbor テーブルが作れない事態に。
L2FW
Node(A)
NS
Router
Node(B)
46
IPv6の導入 ~導入編~
とあるExploit Code(例:Perl)をIPv6 Readyに。
use IO::Socket::INET;
↓
use IO::Socket::INET6;
qpstudy向き過ぎます・・・ 3分ってレベルじゃねーぞ!
(入ってなければCPANへどうぞ)
47
IPv6の導入 ~導入編~
queryなどのIPレイヤ以上の脆弱性はIPv4もIPv6も変わらない。
以下のような構成だとIPv4なIDSは当然役に立たない・・・
DualStack Node(A)
IPv4 Attack
IPv6 Attack
IPv4 Network(A)
IPv6 Network(A)
IPv4 Network(B)
IPv6 Netwrork(B)
IPv4 IDS
DualStack Node(B)
48
IPv6の導入 ~導入編~
実際に攻撃してみると・・・
落ちた!
DualStackのApacheが止まってしまった。
当然IPv4でもアクセス出来ない。
※自己資産でないサーバを攻撃する行為は犯罪とみなされる
ことがあります。
良い子のみんなは slowloris とか検索しないように。
49
IPv6の導入 ~導入編~
最後にこれだけは覚えて帰ろう
IPv6で失敗しても
怒られないのは今だけ。
50
IPv6の導入 ~おまけ~
ここからはおまけ(小ネタ)です。
ノンクレームノンリターンで
お願いします。
51
IPv6の導入 ~体験編~
IPv6 brokenness による IPv4 fallback を
体験してみよう。
http://v6unreachable.ipv6labs.jp/
※DNSの不達AAAAレコードで、Aレコードへの
IPv4 fallback を発生させています。
簡単な仕掛けですが、IPv4 fallback の挙動を見るには便利です。
52
IPv6の導入 ~幻想編~
(^o^) 三
(\\ 三
< \三
ヘ(^o^)ヘ いいぜ
|∧
/ /
(^o^)/ IPv6が128bit全てを
/( ) 利用出来るってなら・・・
/ />
\
(/o^)
(/
/ く まずはそのふざけた
幻想をぶち殺す
Prefix
30/32
IPv4
Prefix
64/128
IPv6
53
IPv6の導入 ~契約編~
\ボクと契約してIPv6ユーザになってよ!/
54