idc/isp/catv サーバ 編 株 式 会 社 BeaconNC データセンター 事 業 部 國 武 功 一
ここで 取 り 上 げること IPv6オペレータ 育 成 プログラム 目 的 Linuxを 用 い IPv6 環 境 下 でのサーバ 運 用 を 行 う 上 での 必 要 な 知 識 を 身 につける ( 注 )ディストリビューションに 依 存 する 部 分 については CentOS(RedHat 系 )とGNU/Debianを 取 り 上 げます
IPv6の 主 な 特 徴 Overview IPv6オペレータ 育 成 プログラム LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
IPv6の の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
IPv6の 主 な 特 徴 IPv6オペレータ 育 成 プログラム 広 大 なアドレス 空 間 (32bitから128bitへ) アドレスの 自 動 設 定 管 理 コストの 低 減 を 目 指 す IPsec 標 準 装 備 MobileIP IPv4でのMobileIPを もっと 洗 練 されたものへ その 他 :Headerの 簡 略 化 途 中 経 路 でのフラグメントの 禁 止 拡 張 ヘッダの 導 入 など
IPv6の 広 大 なアドレス 空 間 IPv4のアドレス 空 間 を1とすると IPv6は 79228162514264337593543950336 全 世 界 の 人 に 現 行 のIPv4アドレスをひとりずつ 配 ってもまだまだ 余 る! 但 し ネットマスクの 考 え 方 の 違 いから 上 の 例 ほど 単 純 には 比 較 できない
IPv6の 広 大 なアドレス 空 間 (Cont) IPv4/IPv6でアドレス 個 数 を 比 較 することは 無 意 味 だが 十 分 に 広 いと 言 える 構 築 可 能 なセグメント 数 は?( ) IPv4 : 1073741824 IPv6 : 18446744073709551616 ( )IPv4は 全 アドレス 帯 を/30で 分 割 した 場 合 IPv6は /64で 分 割 した 場 合 すべてがグ ローバルアドレスとして 利 用 できるわけではないので あくまでも 目 安
アドレスの 自 動 設 定 IPv6オペレータ 育 成 プログラム IPv6では 予 想 される 莫 大 な 数 のデバイス に 対 応 するため アドレスの 自 動 設 定 が 標 準 機 能 として 用 意 されている DHCPV6を 利 用 することも 可 能 RA RS RS
Router Solicitation/Router Advertisement RSの 宛 先 アドレスはFF02::2 Hop Limitは255 RAの 宛 先 アドレスはFF02::1かRS 内 の 始 点 アドレス Hop Limitは255 RA 内 のCurrent Hop Limitフィールドでノードが 用 いるホップ 制 限 を 設 定 M flagが0ならステートレスアドレス が テ ト ド 自 動 設 定 1ならDHCPv6によるアドレス 設 定 O flagが1ならアドレス 以 外 の 情 報 をDHCPv6により 取 得 Router Lifetimeはデフォルトルータのみが1 以 上 (65535 以 下 )を 指 定 DRP(Default ltrouter Preference:RFC4191)によってデフォルトルータの 優 先 度 の 通 知 が 可 能 High(01) Medium(00) Low(11) ノード ルータ 双 方 がサポートしている 必 要 がある FE80::1 1Router Solicitation Src=FE80::1 Dst=FF02::2 FE80::2 2 Router Advertisement Src=FE80::2 Dst=FF02::1 (or FE80::1) Data=Subnet prefix, lifetime, current hop limit Flag (management, other), preference 9
IPv6アドレスの 状 態 アドレスのlifetime tentative address インタフェースに 付 与 されていないアドレスでNDメッセージにしか 使 用 できない この 時 点 でアドレスの 一 意 性 をDADで 確 認 する preferred address インタフェースに 付 与 されたアドレス アドレスが 一 意 で 通 信 可 能 な 状 態 deprecated address 有 効 ではあるが 新 規 通 信 への 使 用 をしないことが 望 まれる valid address Preferredとdeprecatedのアドレスの 双 方 を 指 す Invalid address 有 効 アドレスの 有 効 期 間 が 過 ぎるとこの 無 効 アドレスになる アドレスの 有 効 期 間 と 状 態 変 移 Valid address preferred address deprecated address Invalid address t1:preferred lifetime t2:valid lifetime 0 t1 t2 10
fe80::211:22ff:fe33:4455 2001:db8::211:22ff:fe33:4455 MAC:00:11:22:33:44:55 リンクローカル アドレス 確 定 グローバル アドレス 確 定 IPv6オペレータ 育 成 プログラム ステートレス 自 動 アドレス 設 定 の 流 れ fe80::211:22ff:fe66:7788 2001:db8::211:22ff:fe66:7788 MAC:00:11:22:66:77:88 1 近 隣 要 請 (NS) 近 隣 広 告 がなければ ターゲットアドレス の 利 用 が 可 能 < 重 複 アドレス 検 出 > 要 請 ノードマルチキャスト Src MAC 00:11:22:33:44:55 Dst MAC 33:33:FF:33:44:55 Src IPv6 ::( 未 定 義 アドレス) Dst IPv6 ff02::1:ff33:4455 ICMPv6 Type 135 Target fe80::211:22ff:fe33:4455 1 Src MAC 00:11:22:33:44:55 2ルータ 要 請 (RS) Dst MAC 33:33:00:00:00:02 全 ルータマルチキャスト Src IPv6 fe80::211:22ff:fe33:4455 (ff02::2) 宛 に 送 信 Dst IPv6 ff02::2 2 3 4 3ルータ 広 告 (RA) 全 ノードマルチキャスト (ff02::1) 宛 に 送 信 取 得 プレフィックス を 用 いてグローバル アドレスを 生 成 4 近 隣 要 請 近 隣 広 告 がなければ ターゲットアドレス の 利 用 が 可 能 応 答 があるとアドレス を 再 構 成 する 必 要 あり < 重 複 アドレス 検 出 > ICMPv6 Type 133 Src MAC 00:11:22:66:77:88 Dst MAC 33:33:00:00:00:01 Src IPv6 fe80::211:22ff:fe66:7788 Dst IPv6 ff02::1 ICMPv6 Type 134 Prefix 2001:db8:: Src MAC 00:11:22:33:44:55 Dst MAC 33:33:FF:33:44:55 Src IPv6 ::( 未 定 義 アドレス) Dst IPv6 ff02::1:ff33:4455 ICMPv6 Type 135 Target 2001:db8::211:22ff:fe33:4455 11
fe80::211:22ff:fe33:4455 2001:db8::211:22ff:fe33:4455 MAC:00:11:22:33:44:55 IPv6オペレータ 育 成 プログラム リンクレイヤアドレスの 解 決 の 流 れ fe80::211:22ff:fe66:7788 2001:db8::211:22ff:fe66:7788 MAC:00:11:22:66:77:88 MACアドレス 取 得 完 了 1 2 3 1 近 隣 要 請 (NS) 通 信 相 手 のMACアドレ スを 探 索 近 隣 広 告 がない 場 合 は オンリンクでないと 判 断 2 近 隣 広 告 (NA) ターゲットアドレスを 持 つノードが 回 答 ただし 誰 でもこの 応 答 は 可 能 3 通 信 開 始 Src MAC 00:11:22:33:44:55 Dst MAC 33:33:FF:66:77:88 Src IPv6 fe80::211:22ff:fe33:4455 Dst IPv6 ff02::1:ff66:7788 ICMPv6 Type 135 Target 2001:db8::211:22ff:fe66:7788 Src MAC 00:11:22:66:77:88 Dst MAC 00:11:22:33:44:55 Src IPv6 fe80::211:22ff:fe66:7788 Dst IPv6 fe80::211:22ff:fe33:4455 ICMPv6 Type 136 Target 2001:db8::211:22ff:fe66:7788 Target MAC 00:11:22:66:77:88 12
IPsec 標 準 装 備 IPレイヤで 通 信 を 保 護 アプリケーションの 改 造 が 必 要 ない IPv6オペレータ 育 成 プログラム The Internet
MobileIP ユビキタスとの 親 和 性 どこでも 同 じアドレスが 使 用 可 能 IPv6オペレータ 育 成 プログラム IPv4でのMobileIPを より 現 実 的 なものへ The Internet 移 動 しても 同 じアドレスが 使 用 可 能
LinuxでIPv6を 扱 うための 基 礎 知 識
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは
IPv6のアドレス 表 記 IPv6オペレータ 育 成 プログラム IPv4のアドレス 表 記 例 )192.0.2.1 10 進 数 で 表 した 数 字 を. で 区 切 って 表 記 IPv6のアドレス ア 表 記 例 )fe80:0000:0000:0000:02d0:b7ff:fea0:beea 16 進 数 で 表 した 数 字 を : で : 区 切 って 表 記
IPv6における 略 記 IPv6オペレータ 育 成 プログラム fe80:0000:0000:0000:02d0:b7ff:fea0:beea 各 パートの 先 頭 にある0は 省 略 可 能 fe80:0000:0000:0000:2d0:b7ff:fea0:beea 0000が 連 続 する 場 合 は 一 度 だけ :: で 省 略 可 能 fe80::02d0:b7ff:fea0:beea よって fe80::2d0:b7ff:fea9:beeaと 表 記 できることとなる
では 以 下 の 場 合 は? 2001:0db8:0000:0000:fff0:0000:0000:000f 2001:db8::fff0:0:0:f 00f または 2001:db8:0:0:fff0::f 注 )2001:db8::fff0::fとは 省 略 できない
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
IPv6のアドレス 体 系 IPv6オペレータ 育 成 プログラム IPv6アドレスの 分 類 ( 一 例 ) 挙 動 適 用 範 囲 (スコープ) 特 殊 アドレス
パケットの 挙 動 による 分 類 ユニキャストアドレス マルチキャストアドレス エニーキャストアドレス
ユニキャストアドレス IPv6オペレータ 育 成 プログラム 単 一 のインターフェースに 割 り 当 てられるアド レス 1 対 1の 通 信 に 使 用 される( 普 段 はこのアドレ スが 使 用 される)
ユニキャストアドレス
マルチキャストアドレス あるグループを 表 すアドレス あるマルチキャストアドレス 宛 てにパケットをなげ ると そのグループに 属 するすべてのインター フェースに 届 けられる IPv4におけるブロードキャストは ドキャストは マルチキャスト の1 種 として 取 り 扱 われる
マルチキャストアドレス 128bits 11111111 フラグ スコープ グループID 8 4 4 112 Bits T=0 永 久 的 なマルチキャストを 示 す T=1 一 時 的 なマルチキャストを 示 す マルチキャストスコープ:4ビットのマルチキャストの ト ト 力 が 及 ぶ 範 囲 は 下 記 のマルチキャストグループに 限 られている 0 予 約 1 ノードローカルスコープ 2 リンクローカルスコープ 3 (アンアサインド) 4 (アンアサインド) 5 サイトローカルスコープ 6 (アンアサインド) 7 (アンアサインド) 8 オーガニゼーションローカルスコープ 9 (アンアサインド) A (アンアサインド) B (アンアサインド) C (アンアサインド) D (アンアサインド) E グローバルスコープ F リザーブド
マルチキャストアドレス
エニーキャストアドレス マルチキャスト 同 様 あるグループを 表 すアド レス マルチキャストとは 違 い あるグループに 属 する インターフェース すべてに 配 送 されるわけでは なく どれか 一 つに 配 送 されると それ 以 上 は 配 送 されない
エニーキャストアドレス X
適 用 範 囲 による 分 類 IPv6オペレータ 育 成 プログラム グローバルアドレス サイトローカルアドレス( 廃 止 ) ユニークローカルアドレス(ULA)へ リンクローカルアドレス
グローバルアドレス IPv6オペレータ 育 成 プログラム IPv4でいうところのグローバルアドレスと 同 義 全 世 界 で 一 意 に 決 まる 識 別 子 128bits サブネットプレフィックス インターフェイス ID n 128-n Bits
サイトローカルアドレス( 廃 止 に) IPv4でいうところのプライベートアドレス このアドレスから 来 るパケットは 他 組 織 には 転 送 されない 問 題 点 が 多 く 廃 止 に(Unique Local IPv6 Unicast tadd Addressへ 受 け 継 がれる) 128bits 1111111011 0 サブネットID インターフェイスID 10 38 16 64 Bits Unique Local IPv6 Unicast(ULA)アドレスでは サイトローカルアドレスと は 異 なり プライベートアドレス 的 に 使 えるが ほぼ 他 組 織 と アドレスが 重 複 することがない
リンクローカルアドレス ノードが 直 接 繋 がっているリンク 内 のみで 有 効 なアドレス 近 隣 にRAを 投 げるルータがなくても 自 動 的 に 生 成 される よく 知 られたリンクローカルアドレス ff02::1 (マルチキャストアドレスでもある) 同 一 リンク 上 のすべてのノードが 参 加 している かならずスコープIDを 伴 って 利 用 する 必 要 がある 例 : ping6 I eth0 ff03::1, ssh fe80::dead:beaf%eth0
各 アドレスの 適 用 範 囲 IPv6オペレータ 育 成 プログラム グローバルアドレス ユニークローカル ユニークローカル ユニークローカル ユニークローカル リンクローカル
特 殊 なアドレス IPv6オペレータ 育 成 プログラム 未 指 定 アドレス ループバックアドレス IPv4 互 換 アドレス IPv4 射 影 アドレス
未 指 定 アドレス IPv6オペレータ 育 成 プログラム アドレスが 付 けられてないことを 示 します システムの 初 期 化 中 でまだアドレスがつい てないホストがソースアドレスとして 使 うこ とがある 0000:0000:0000:0000:0000:0000:0000:0000 ::
ループバックアドレス IPv6オペレータ 育 成 プログラム IPv4での127.0.0.1と 同 じく ノードがパ ケットを 自 分 自 身 に 送 る 場 合 に 用 いられる 0000:0000:0000:0000:0000:0000:0000:0001 ::1
IPv4 互 換 アドレス( 廃 止 へ) IPv4ネットワークにしかつながっていないIPv6 ノード 同 士 が 通 信 する 際 に 使 用 されるアドレス 利 便 性 を 考 え IPv4アドレス 部 は10 進 数 表 記 のま まとされている 例 ) 192.168.0.1 => ::192.168.0.1 128bits 0000 0000 0000 IPv4アドレス 80 16 32 Bits
IPv4 射 影 アドレス IPv6オペレータ 育 成 プログラム IPv6ノードが IPv4しかサポートしていないノ ノードと 通 信 する 際 に 使 用 するアドレス 利 便 性 を 考 え IPv4アドレス 部 は10 進 数 表 記 の ままとされている 例 ) 192.168.0.1 => ::ffff:192.168.0.1 128bits 0000 0000 FFFF IPv4アドレス 80 16 32 Bits
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
Unique Local IPv6 Unicast Addresses Globally unique prefix Site boundariesで 簡 単 にfilter 外 部 (ISP 等 )との 接 続 なしに 使 用 できる 万 が 一 外 部 にアドレスを 漏 らしても 他 と 重 複 することがない アプリケーションはグローバルアドレスと 同 様 にこのアドレスを 取 り 扱 える
Format 7 41 16 64 IPv6オペレータ 育 成 プログラム Prefix Global ID Subnet ID Interface ID Prefix : 例 (FC00::/7) Global ID :Global Identifier Subnet ID :サイト 内 部 で 使 用 できるsubnet 用 ID Interface ID
Global ID IPv6オペレータ 育 成 プログラム MD5 based pseudo-random algorithm 使 用 2つのPrefixを 想 定 FC00::/8 Centrally assigned FD00::/8 Locally assigned Centrally assigned Locally assigned
Centrally assigned IPv6オペレータ 育 成 プログラム 割 り 当 て 組 織 が アドレスの 衝 突 がないことを 保 証 する 定 期 的 な 使 用 料 を 払 うことなく 永 続 的 に 使 用 できる 但 し1 回 の 割 り 当 てで 10ユーロ( 払 い 戻 し 不 可 )の 手 数 料 が 必 要 というようなことが 検 討 されています(まだ 未 決 定 )
Locally assigned IPv6オペレータ 育 成 プログラム Pseudo-random algorithmによってglobal ID が 生 成 される 割 り 当 て 組 織 やISPに 申 請 等 の 必 要 無 し ULAを 自 分 で 作 成 するには? ULA Generatorが 便 利 http://www.kame.net/~suz/gen-ula.html
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
ヘッダ 情 報 について IPv6オペレータ 育 成 プログラム ヘッダフォーマットが 簡 略 化 40バイトの 固 定 長 に( 拡 張 ヘッダを 使 用 ) チェックサムの 廃 止 UDPのチェックサムは 必 須
IPv4ヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits バージョン IHL TOS 全 パケット 長 識 別 子 フラグ フラグメントオフセット TTL プロトコル ヘッダチェックサム 送 信 元 アドレス 宛 先 アドレス オプション+パディング
IPv6ヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits バージョン トラフィッククラス フローラベル ペイロード 長 次 ヘッダ 番 号 ホップリミット 送 信 元 アドレス 宛 先 アドレス IPv4に 比 べ 簡 略 化 されている オプションが 廃 止 された 代 わりに 拡 張 ヘッダが 用 意 されている
拡 張 ヘッダ IPv6オペレータ 育 成 プログラム 中 継 オプションヘッダ パケットの 配 送 経 路 上 のすべてのノードにおいて 参 照 される 必 要 がある 情 報 が 含 まれる 終 点 オプションヘッダ 終 点 ノードでのみ 参 照 されるオプションが 含 まれる 経 路 制 御 ヘッダ 支 店 から 終 点 へパケットが 伝 送 される 際 に 訪 れるべき 中 継 ノードの 一 覧 が 含 まれ る 断 片 ヘッダ パケットが 分 割 されていることを 示 す IPv4とは 違 い 途 中 ルータでパケッ トが 分 割 されることはない 認 証 ヘッダ 暗 号 ペイロードヘッダ この2つはIPレベルでセキュアな 通 信 を 行 うためにIPsecにおいて 使 われ る
数 珠 繋 ぎ 構 造 の 拡 張 ヘッダ IPv6 ヘッダ TCP ヘッダ アプリケーションデータ 次 のヘッダ = TCP IPv6 ヘッダ ルーティング ヘッダ TCP ヘッダ アプリケーションデータ 次 のヘッダ = ルーティング 次 のヘッダ = TCP IPv6 ヘッダ ルーティング ヘッダ フラグメント ヘッダ TCP ヘッダ アプリケーションデータ (フラグメント) 次 のヘッダ = ルーティング 次 のヘッダ = フラグメント 次 のヘッダ = TCP
拡 張 ヘッダ 詳 細 IPv6オペレータ 育 成 プログラム 基 本 型 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits オプションタイプ Opt Data Len オプションデータ
中 継 点 オプションヘッダ 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits 次 のヘッダ Hdr Ext Len オプション IPパケットが 通 過 する すべてのノードにおいて 処 理 されるオプション
終 点 オプションヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits 次 のヘッダ Hdr Ext Len オプション 終 点 ノードでのみ 処 理 されるオプション
経 路 制 御 ヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits Next Header Hdr Ext Len ルーティングタイプ Segment Left Reserved アドレス[1] [] アドレス[2] アドレス[n] 通 過 すべきノードを 明 示 的 に 指 定 する 場 合 に 使 用 するオプション
断 片 ヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits 次 のヘッダ Reserved フラグメントオフセット Res M Identification
認 証 ヘッダ IPv6オペレータ 育 成 プログラム 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits 次 ヘッダ 番 号 ペイロード 長 Reserved セキュリティパラメーターインデックス (SPI) シーケンスナンバー 認 証 データ 通 信 相 手 を 認 証 するためのオプション(IPsecで 使 用 される)
暗 号 化 ペイロード 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Bits セキュリティパラメーターズインデックス(SPI) シーケンスナンバー ペイロードデータ(バリエイブル) パディング(0-255octets) パッド 長 次 ヘッダ 番 号 オーセンティケーションデータ 通 信 相 手 と 暗 号 化 されたデータ 通 信 を 行 う 際 に 使 用 されるオプション(IPsecにおいて 使 用 される)
推 奨 される 拡 張 ヘッダの 順 序 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 バージョン トラフィッククラス フローラベル ペイロード 長 次 ヘッダ 番 号 ホップリミット 送 信 元 アドレス 宛 先 アドレス Bits IPv6 ヘッ ッダ Hop-by-Hop オプションヘッダ ルーティングヘッダ フラグメントヘッダ 終 点 オプションヘッダ 認 証 ヘッダ 拡 張 ヘッダ 暗 号 ペイロードヘッダ 終 点 オプションヘッダ 上 位 層 ヘッダ
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
デュアルスタックということ ノードは IPv6/IPv4の 両 方 のアドレスを 持 ち そのどちらでも 通 信 が 可 能 www.example.com. IN A 192.0.2.1 mail.example.com. IN A 192.0.2.1 2 1 IN AAAA 2001:db8::1 AAAAってなに? な DNSのレコードのひとつで IPv6アドレスが 格 納 さ れる
TCPコネクション 確 立 1アドレスを 引 く 2AAAA RR, A RRが 返 る 3IPv6で 接 続 4IPv6で 接 続 できないと IPv4へフォールバック The Internet 12 34 IPv6ノード ド AAAA/Aを を 持 つサイト
プログラムからその 挙 動 を 見 てみる #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> int sock,err; struct addrinfo hints, *res0, *res; memset(&hints, 0, sizeof(hints)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; /* getaddrinfo で AAAAおよびAレコードを 取 得 */ err = getaddrinfo("www.linux-ipv6.org", ipv6 org" "http", &hints, &res0); if (err) { fprintf(stderr, "error : %s", gai_strerror(err)); freeaddrinfo(res0); exit(1); } /* getaddrinfoの 結 果 を 利 用 し 接 続 が 成 功 するまで 試 行 する */ for (res = res0; res; res = res->ai_next) { sock = socket (res->ai_family, res->ai_socktype, res->ai_protocol); if (sock < 0) continue; IPv6 対 応 とは アドレスファミリ 独 立 なネット ワークプログラミ ングをするのと 同 義 if (connect(sock, res->ai_addr, res->ai_addrlen) < 0) { close (sock); continue; } break; } freeaddrinfo(res0);
IPv6の 主 な 特 徴 LinuxでIPv6を 扱 うための 基 礎 知 識 IPv6のアドレス 表 記 IPv6のアドレス 体 系 ULAについて ヘッダ 情 報 について デュアルスタックとは DNSのIPv6 対 応 とは
DNSのIPv6 対 応 とは 保 持 できるRRの 対 応 AAAAを 返 す 逆 引 きは 同 じくPTRだが in-addr.arpa に に 対 して ipv6.arpa を 利 用 ipv6.arpaではなく ipv6.int が 使 われていたこともあった が いまは 使 われない bind8.4 以 上 またはbind9で 対 応 IPv6 6ta transportへの spot の 対 応 クエリの 送 受 信 をIPv6プロトコルを 用 いて 行 う 自 身 のFQDNに AAAAが 登 録 される AAAAは IPv4ネットワークを 通 じて 返 信 することも 可 能 なので DNSサーバがIPv6に 対 応 し ました!というのは 上 記 のどちらの 話 なのか(もしくは 両 方 なのか) に 留 意 する 必 要 がある
DNSクエリに 関 するOSの 対 応 DNSリゾルバの 改 良 (IPv4 通 信 の 品 質 を 保 つため) Aレコード ド 解 決 を 優 先 する(FreeBSD Windows d Vista) ) IPv6が 優 勢 になった 時 に 問 題 になる 可 能 性 あり Aレコード 解 決 時 にNXDOMAINならAAAAレコード 解 決 をし ない(Windows Vista) Aレコードのレスポンス 時 間 によりAAAAレコードの 処 理 待 ち 時 間 を 決 定 (FreeBSD Windows Vista) AAAAレコードがない 場 合 のタイムアウト 時 間 を 小 さくするため AAAAレコード 解 決 の 抑 制 グローバルIPv6アドレスが 付 与 されない 限 りAAAAクエリに よる 名 前 解 決 は 実 施 しない(Windows Vista) 66
DNSクエリの 順 序 クエリ 順 序 はOSで 異 なる FreeBSD 5.5R IPv4の 名 前 解 決 とIPv6の 名 前 解 決 を 交 互 に 繰 り 返 し 名 前 解 決 ができた 時 点 で 終 了 Windows XP SP2 まずIPv6の 名 前 解 決 を 全 て 実 施 し 次 にIPv4の 名 前 解 決 を 全 て 実 施 Windows Vista まずIPv4の 名 前 解 決 を 全 て 実 施 し 次 にNXDOMAINが 返 されたもの 以 外 の 全 てに 関 してIPv6の 名 前 解 決 を 実 施 67
LinuxにおけるIPv6 設 定 およびその 確 認 ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
LinuxにおけるIPv6 設 定 およびその 確 認 ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
ネットワーク 設 定 の 基 礎 インターネットでは データはIPパケット( 小 包 )に 包 まれて 目 的 地 までバケツリレーで で 配 送 されて いく 宛 先 差 出 人 に 書 く 住 所 が IPアドレス IPアドレス
パケットが 転 送 される 仕 組 み Application Layer Transport Layer Application Layer Transport Layer Network Layer Data Link Layer L3 Layer L2 Layer L3 Layer L2 Layer Network Layer Data Link Layer Physical Layer L1 Layer L1 Layer Physical Layer Router Router
従 来 はIPアドレスはクラスに 分 けられていた クラスフルな 世 界 IPv6オペレータ 育 成 プログラム IP Address Range netmask length クラスA 1.0.0.0 0 0-126.255.255.255255 255 255 255.0.0.0 0 0 /8 クラスB 128.0.0.0-191.255.255.255.255 255.255.0.0 /16 クラスC 192.0.0.0-223.255.255.255 255.255.255.0 /24 例 :クラスB 128.2.0.0/16 128.2. 0. 0 ネットワークアドレス ホストアドレス 2^16-2 =65534 台 分 のアドレス
例 :クラスB サブネットの 登 場 128.2. 0. 0 ネットワークアドレス ホストアドレス 例 :サブネットの 仕 組 みを 使 ってネットワーク 部 分 を 拡 張 128.2.100. 0 length Sb Sub netmask ホスト 数 /16 255.255.0.0 65534 /17 255.255.128.0 32766 /18 255.255.192.0 16382 /19 255.255.224.0 8190 /20 255.255.240.0 4094 /21 255.255.248.0 2046 /22 255.255.252.0 1022 /23 255.255.254.0 510 /24 255.255.255.0 254 /25 255.255.255.128 126 /26 255.255.255.192 62. /27 255.255.255.224 30 /28 255.255.255.240 14 ネットワークアドレス ホストアドレス /29 255.255.255.248 6 /30 255.255.255.252 2 2^8-2=254 台 分 のホストアドレスが 利 用 可 能
IPv6では? IPv6オペレータ 育 成 プログラム もちろんクラスレス Netmaskに 関 しては サーバとして 利 用 する 限 りは /64 固 定 と 考 えてよい 128bits サブネットプレフィックス インターフェイス ID 64bit 64bit Bits
ルーティングの 基 礎 の 基 礎 ここで 取 り 扱 うのは 静 的 経 路 ルーティングはlongest prefix match 一 般 的 に 動 的 経 路 より 静 的 経 路 の 方 が 強 い 一 般 的 に 静 的 経 路 より 直 接 接 続 の 方 が 強 い 間 違 ったネットワーク 図 :この 場 合 どうなる? eth0: 192021 192.0.2.1 192.0.2.254 192.0.2.0/24 2 0/24 192.0.0.0/8 eth1 network Next hop Metirc Interface 0.0.0.0/0 192.0.2.254 0 eth0 192.0.2.0/24 2 0/24 0000 0.0.0.0 0 eth0 192.0.0.0/8 0.0.0.0 0 eth1
ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
IPアドレスの 設 定 IPv6オペレータ 育 成 プログラム IPアドレスを ド 設 定 するには 以 下 のコマンドが 知 られている ifconfig ip 書 式 : ifconfig interface [aftype] options address 書 式 :ip i [OPTIONS] OBJECT { COMMAND help }
IPv4アドレスの 設 定 ifconfig - IPv4アドレスの 設 定 例 IPv4 アドレスの 設 定 # ifconfig eth0 192.0.2.1 netmask 255.255.255.0 設 定 確 認 # ifconfig eth0 eth0 Link encap:ethernet HWaddr 00:00:XX:XX:XX:XX inet addr:192.0.2.1 Bcast:192.0.2.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:169 インタフェースを 上 げる # ifconfig eth0 up インタフェースを 落 とす # ifconfig eth0 down
IPv6アドレスの 設 定 ifconfig - IPv6アドレスの 設 定 例 IPv6 アドレスの 設 定 ( 事 前 にinterfaceを upしておく 必 要 がある) # ifconfig eth0 add 2001:db8::80/64 IPv6アドレスの 削 除 # ifconfig eth0 del 2001:db8::80/64 設 定 確 認 # ifconfig eth0 eth0 Link encap:ethernet HWaddr 00:XX:XX:XX:XX:XX inet addr:192.0.2.1 Bcast:192.0.2.255 Mask:255.255.255.0 inet6 addr: 2001:db8::80/64 Scope:Global inet6 addr: fe80::2d0:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:169 インタフェースを 落 とす(IPv6の 場 合 は 落 とすとグローバルアドレスが 消 える) # ifconfig eth0 down
IPv4/IPv6アドレスの 設 定 ipコマンド IPv4/IPv6アドレスの 設 定 # ip addr add 192.0.2.1/24 dev eth0 # ip addr add 2001:db8::80/64 dev eth0 設 定 確 認 # ip addr show dev eth0 3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.0.2.1/24 brd 192.0.2.255 scope global eth0 inet6 fe80::202:xxx:xxx:xxx:xxx/64 scope link valid_lft forever preferred_lft forever inet6 2001:db8::80/64 scope global valid_lft forever preferred_lft forever インタフェースを 上 げる # ip link set eth0 up インタフェースを 落 とす # ip link set eth0 down
IPv4/IPv6アドレスの 設 定 / lifetime # ip addr show dev eth0 3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.0.2.1/24 brd 192.0.2.255 scope global eth0 inet6 fe80::202:xxx:xxx:xxx:xxx/64 scope link valid_lft forever preferred_lft forever inet6 2001:db8::80/64 scope global valid_lft forever preferred_lft forever
IPv4/IPv6 L2アドレスの 確 認 IPv4の 場 合 :ARPコマンドの 代 わりに # ip -4 neigh show 192.0.2.1 dev eth0 lladdr 00:00:XX:00:XX:XX REACHABLE IPv6の 場 合 : # ip -6 neigh show 2001:db8:0:1::dead:beaf dev eth0 lladdr 00:00:XX:XX:XX:XX router REACHABLE fe80::xxx:xxxx:xxxx:xxxx dev eth0 lladdr 00:00:XX:XX:XX:XX router REACHABLE
routeコマンドによる 経 路 の 設 定 および 確 認 Default 経 路 の 設 定 # route add A inet default gw 192.0.2.254 dev eth0 # route add A inet6 default gw fe80:x:x:x:x:x dev eth0 ネットワーク 別 経 路 の 設 定 # route add net 192.0.2.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0 # route add A inet6 2001:db8::/64 gw fe80::2d0:b7ff:fea0:beea dev eth0 経 路 の 確 認 # route -n A inet6 # route n A inet
ipコマンドによる 経 路 の 設 定 および 確 認 Default 経 路 の 設 定 # ip route add default via 10.0.0.1 dev eth0 # ip route add default via fe80::202:b3ff:fe32:faa2 f 32 f 2 dev eth0 ネットワーク 別 経 路 の 設 定 # ip route add 192.0.2.0/24 via 10.0.0.1 dev eth0 # ip route add 2001:db8::/48 via fe80::202:b3ff:fe32:faa2 dev eth0 経 路 の 確 認 # ip -4 route show # ip -6 route show
ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
bonding IPv6オペレータ 育 成 プログラム ネットワークの 冗 長 化 などで 利 用 される IPv6でも 特 に 動 作 に 問 題 はない Active-backupで 冗 長 化 した 例 /etc/modprobe.d/bondingd/bonding alias bond0 bondingoptions bond0 miimon=100 mode=1 eth0 eth1 bond0 確 認 $ cat /proc/net/bonding/bond0
ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
設 定 ファイルについて( 共 通 ) 名 前 解 決 に 関 するファイル /etc hosts - IPアドレスとホスト ア ホ 名 の 対 応 表 resolv.conf リゾルバ 設 定 ファイル host.conf リゾルバ 設 定 ファイル 127.0.0.1 hoge.example.jp localhost hoge # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts search example.jp nameserver 192.0.2.254 order hosts,bind multi on
設 定 ファイルについて( 共 通 ) サービス 名 などの 解 決 に 関 するファイル /etc services : ネットワークサービスリスト protocols : プロトコル 定 義 ファイル tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol ip 0 IP # internet protocol, pseudo protocol number msp #hopopt 18/udp 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] chargen icmp 19/tcp 1 ICMP ttytst source # internet control message protocol chargen igmp 19/udp 2 IGMP ttytst source # Internet Group Management ftp-data ggp 20/tcp 3 GGP # gateway-gateway protocol ftp ipencap 21/tcp 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') fsp st 21/udp 5 ST fspd # ST datagram mode ssh 22/tcp # SSH Remote Login Protocol tcp 6 TCP # transmission control protocol ssh 22/udp egp 8 EGP # exterior gateway protocol ~ 省 略 ~
CentOS /etc Debian /etc 設 定 ファイルについて sysconfig network : ネットワークオプション 設 定 など network-scripts ifcfg-{dev} : ネットワークインターフェース 設 定 network options : ネットワークオプション 設 定 interfaces : ネットワークインターフェース 設 定 1 最 近 のDebian/Ubuntuでは network-managerパッケージがインストールされていると 設 定 が 反 映 されない
/etc/sysconfig/network IPv6オペレータ 育 成 プログラム CentOSのネットワーク 設 定 HOSTNAME=hoge.example.jp # IPv4 NETWORKING=yes GATEWAY=192.0.2.254 #IPv6 NETWORKING_IPV6=yes IPV6_DEFAULTGW=fe80::xxxx%eth0 #IPV6_AUTOCONF=no #IPV6FORWARDING=no HOSTNAME FQDNを 記 述 NETWORKING yes: rcスクリプトである network を 実 行 GATEWAY IPv4ネットワークのdefault gatewayを 指 定 NETWORKING_IPV6 yes: IPv6ネットワークを ネ ト 有 効 化 IPV6_DEFAULTGW IPv6ネットワークのdefault gatewayを 指 定
CentOSのネットワーク 設 定 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETWORK=192.0.2.0 NETMASK=255.255.255.0 IPADDR=192.0.2.1 IPV6INIT=yes #IPV6_AUTOCONF=no IPV6ADDR=2001:db8::80/64 ETHTOOL_OPTS="autoneg off speed 100 duplex full" DEVICE 物 理 インタフェース 名 BOOTPROTO none : 使 用 しない bootp: BOOTPを 使 用 dhcp : DHCPを 使 用 ONBOOT yes : 起 動 時 に 有 効 no : 起 動 時 には 無 効 IPADDR yes : 起 動 時 に 有 効 no : 起 動 時 には 無 効 NETWORK ネットワークアドレスを 指 定 NETMASK ネットマスクを 指 定 IPV6INIT yes: IPv6の 初 期 化 を 有 効 No : IPv6の 初 期 化 を 無 効 IPV6ADDR IPv6アドレス/ネットマスク ETHTOOL_OPTS ethtoolへのオプションを 指 定
Debianのネットワーク 設 定 ( 廃 止 ) /etc/network/options ip_forward=no spoofprotect=yes syncookies=no ip_forward yes: LinuxをRouterとして 利 用 する 際 に 設 定 spoofprotect yes: Reverse Pathが 検 証 される Stub networkにつながっている 場 合 は 設 定 を 推 奨 syncookies yes: TCP syn flooding attack 対 策 のため cookieを 発 行 する ようになる /etc/network/optionsは 廃 止 になったため これらは /etc/sysctl.conf に 記 述 /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1
/etc/network/interface Debianのネットワーク 設 定 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.0.2.1 2 1 netmask 255.255.255.0 gateway 192.0.2.254 # dns-serarch example.jp # dns-nameservers 192.0.2.254 2 254 up ethtool -s eth0 autoneg off speed 100 duplex full iface eth0 inet6 static address 2001:db8::80 80 netmask 64 gateway fe80::xxx%eth0 pre-up インタフェースをupさせる 前 に 実 行 するコマンド up インタフェースをupしたときに 実 行 するコマンド post-up インタフェースをupした 後 に 実 行 するコマンド Also See man interfaces pre-down インタフェースをdownさせる 前 に 実 行 するコマンド down インタフェースをdownした 時 に 実 行 するコマンド post-down インタフェースをdownした 後 に 実 行 するコマンド
ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
トンネリングについて トンネルはpoint-to-point 接 続 IPv6オペレータ 育 成 プログラム 自 分 宛 てじゃなければ 相 手 側 のアドレスだと 普 通 は 判 断 する ネットワークには /64を 割 り 振 ることが 基 本 ということは? 下 のネットワークに 2001:db8:20:1000::3のパケットが 投 げられると 2001:db8:20:1000::/64 2001:db8:20:1000::1 2001:db8:20:1000::2
ネットワーク 設 定 の 基 礎 ルーティングの 基 礎 の 基 礎 IPv4/IPv6アドレスの 設 定 確 認 IPv4/IPv6 経 路 の 確 認 Bondingについて 各 種 設 定 ファイルについて トンネリングについて 稼 働 状 況 の 確 認 方 法
接 続 確 認 簡 単 な 接 続 確 認 方 法 pingを 用 いた 疎 通 確 認 tracerouteを 用 いた 疎 通 確 認 tracerouteでわかるのは 行 きの 経 路 だけ IPv6オペレータ 育 成 プログラム 行 きと 帰 りで 経 路 が 違 うことも
Ping(ICMP)による 疎 通 確 認 Default gatewayに 対 してpingを 打 ってみる IPv4 経 路 の 疎 通 性 確 認 $ ping -c 10 192.0.2.254 2 254 PING 192.0.2.254 (192.0.2.254) 56(84) bytes of data. 64 bytes from 192.0.2.254: icmp_seq=1 ttl=255 time=2.09 ms 64 bytes from 192.0.2.254: icmp_ seq=2 ttl=255 time=2.04 ms 64 bytes from 192.0.2.254: icmp_seq=3 ttl=255 time=4.30 ms 64 bytes from 192.0.2.254: icmp_seq=4 ttl=255 time=2.00 ms 64 bytes from 192.0.2.254: icmp_seq=5 ttl=255 time=2.01 ms 64 bytes from 192.0.2.254: 2 254 icmp_seq=6 ttl=255 time=2.02 ms 64 bytes from 192.0.2.254: icmp_seq=7 ttl=255 time=2.03 ms 64 bytes from 192.0.2.254: icmp_seq=8 ttl=255 time=2.62 ms 64 bytes from 192.0.2.254: icmp_ seq=9 ttl=255 time=3.84 ms 64 bytes from 192.0.2.254: icmp_seq=10 ttl=255 time=4.77 ms --- 192.0.2.254 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9036ms rtt min/avg/max/mdev = 2.009/2.776/4.774/1.038 ms
Ping(ICMP)による 疎 通 確 認 Default gatewayに 対 してpingを 打 ってみる IPv6 経 路 の 疎 通 性 を 確 認 $ ping6 -c 10 fe80::2000:1 -I eth0 PING fe80::2000:1(fe80::2000:1) 1) from fe80::2d0:b7ff:fea0:beea f 0 b eth1: 56 data bytes 64 bytes from fe80::2000:1: icmp_seq=1 ttl=64 time=2.38 ms 64 bytes from fe80::2000:1: icmp_ seq=2 ttl=64 time=7.71 ms 64 bytes from fe80::2000:1: icmp_seq=3 ttl=64 time=7.47 ms 64 bytes from fe80::2000:1: icmp_seq=4 ttl=64 time=2.41 ms 64 bytes from fe80::2000:1: icmp_seq=5 ttl=64 time=2.39 ms 64 bytes from fe80::2000:1: icmp_seq=6 ttl=64 time=3.91 ms 64 bytes from fe80::2000:1: icmp_seq=7 ttl=64 time=5.00 ms 64 bytes from fe80::2000:1: icmp_seq=8 ttl=64 time=2.29 ms 64 bytes from fe80::2000:1: icmp_ seq=9 ttl=64 time=2.30 ms 64 bytes from fe80::2000:1: icmp_seq=10 ttl=64 time=2.32 ms --- fe80::2000:1 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9036ms rtt min/avg/max/mdev = 2.292/3.822/7.711/2.069 ms
速 度 がでない? IPv6オペレータ 育 成 プログラム そんなときには Ethernet t Cardがちゃんと Full Duplex( 全 二 重 通 信 )になっているか を 確 認 現 在 の 設 定 確 認 # ethtool eth0 Full-duplex 固 定 に 設 定 # ethtool -s eth0 autoneg off speed 100 duplex full 現 在 の 設 定 確 認 # mii-tool eth0 Full-duplex 固 定 に 設 定 # mii-tool -F 100baseTx-FD eth1
sysctlによる 制 御 IPv6オペレータ 育 成 プログラム IPv6の 自 動 設 定 については インター フェースがUPした 時 に 実 行 されるので 不 要 な 場 合 は 事 前 に 無 効 化 しておく # sysctl w net.ipv6.conf.eth0.accept_ra=0 TCP Syn flooding attack 対 策 # sysctl w net.ipv4.tcp_syncookies=1 Broadcast 宛 のICMPを 無 視 # sysctl w net.ipv4.icmp_echo_ignore_broadcasts i i t
稼 動 状 況 確 認
サーバの 稼 動 状 況 確 認 どんなプログラムが 起 動 しているのか? psコマンド # ps aux less どんなポートをListenしているのか? netstat fuser
サーバの 稼 働 状 況 確 認 (netstat) Netstatを t tを 用 いて サーバのListenポートを t 表 示 させる オプション 例 -l, --listening 接 続 待 ち 状 態 にあるソケットのみを 表 示 する -p, --program 各 ソケットが 属 しているプログラムのPIDと 名 前 が 表 示 される -n, --numeric ホスト ポート ユーザなどの 名 前 を 解 決 せずに 数 字 のアドレスで 表 示 する -t,--tcp tcpに 関 する 情 報 を 表 示 -u,--udp udpに 関 する 情 報 を 表 示
サーバの 稼 働 状 況 確 認 (netstat) 実 行 例 # netstat -ltupn Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:993 0.0.0.0:* LISTEN 3785/famd tcp 0 0 127.0.0.1:111 0.0.0.0:* LISTEN 3175/portmap tcp 0 0 192.0.2.1:53 0.0.0.0:* LISTEN 3380/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3380/named tcp 0 0 0.0.0.0:54320 0 0:5432 0.0.0.0:* 0 0 0:* LISTEN 3619/postmaster tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3596/master tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3380/named tcp6 0 0 :::80 :::* LISTEN 11254/apache2 tcp6 0 0 :::53 :::* LISTEN 3380/named tcp6 0 0 :::22 :::* LISTEN 3659/sshd tcp6 0 0 :::5432 :::* LISTEN 3619/postmaster udp 0 0 0.0.0.0:32768 0.0.0.0:* 3380/named udp 0 0 127.0.0.1:161 0.0.0.0:* 3653/snmpd udp 0 0 192.0.2.1:53 0.0.0.0:* 3380/named udp 0 0 127.0.0.1:53 0.0.0.0:* 3380/named udp 0 0 127.0.0.1:111 0.0.0.0:* 3175/portmap udp6 0 0 :::32769 :::* 3380/named udp6 0 0 :::53 :::* 3380/named -A でアドレスファミリーを 指 定 することも 可 能 (inet or inet6)
netstatによる 注 意 点 IPv6オペレータ 育 成 プログラム netstat で 表 示 される 文 字 幅 の 制 限 から IPv6アドレスが 一 定 長 を 超 えると 表 示 され なくなる( 丸 められる) Debianパッケージの net-tool_1.60-22 以 降 であれば -W/--wide オプションで オプシ 対 応 可 能
ssで 稼 働 状 況 確 認 IPv6オペレータ 育 成 プログラム ほぼ 引 数 は netstatと 同 様 だが IPv6アドレ スが 丸 められることはない $ ss -ltun Netid Recv-Q Send-Q Local Address:Port Peer Address:Port tcp 0 50 127.0.0.1:3306 *:* tcp 0 128 *:111 *:* tcp 0 128 :::80 :::* tcp 0 5 127.0.0.1:33843 0 1 *:** tcp 0 3 192.0.2.136:53 *:* tcp 0 3 127.0.0.1:53 *:* tcp 0 3 :::53 :::* tcp 0 128 127.0.0.1:631 *:* tcp 0 128 127.0.0.1:5432 *:* tcp 0 128 ::1:953 :::* tcp 0 128 127.0.0.1:953 *:* tcp 0 100 :::25 :::* tcp 0 100 *:25 *:* tcp 0 3 *:1723 *:*
サーバの 稼 働 状 況 確 認 (fuser) fuserを 用 いてサーバのListenポートから Listenしているプロセスを 特 定 する # fuser -vn tcp 80 USER PID ACCESS COMMAND 80/tcp: root 4699 F... apache www-data 4706 F... apache www-data 4707 F... apache www-data 4708 F... apache www-data 4709 F... apache www-data 4710 F... apache www-data 8407 F... apache www-data 8408 F... apache www-data 8409 F... apache
基 礎 サービスの 設 定 について DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
DNS IPv6オペレータ 育 成 プログラム BIND9のIPv6 transportを 有 効 にするには listen-on-v6を 指 定 する options { directory "/var/named"; listen-on-v6 { any; };...
DNS IPv6オペレータ 育 成 プログラム ACL 設 定 例 IPv4と 同 様 に 生 アドレスが 記 載 可 能 acl slaves { 192.0.2.1; // slave server 2001:db8::53; // slave server 127.0.0.1; // for debug ::1; // for debug };
DNS IPv6オペレータ 育 成 プログラム AAAA RR 登 録 例 ;; Server ;; example.jp www IN A 192.0.2.1 www IN AAAA 2001:db8::1 AAAA RR 確 認 $ dig www.example.jp AAAA
IPv6の 逆 引 き 設 定 DNS ;; IPv6 PTR for 2001:db8::/64 zone 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ipv6.arpa { type master; file 2001.0db8.0000.000.reverse ; allow-transfer { slaves; }; allow-query { any }; } IPv6オペレータ 育 成 プログラム 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR www.example.jp. IPv6の 逆 引 き 設 定 確 認 $ dig x 2001:db8::1
DNS:リゾルバでの 指 定 IPv4と 同 様 /etc/resolv.conに 直 接 IPv6ア ドレスを 記 述 する search example.jp nameserver 192.0.2.254 nameserver 2001:db8::53
DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
postfixをipv6 対 応 に IPv6オペレータ 育 成 プログラム /etc/postfix/main.cf # inet_protocols = ipv4 # inet_protocols = ipv4, ipv6 # allと 等 価 です # inet_protocols t = ipv6 inet_protocols = all これだけ
Listenするアドレスを 制 限 /etc/postfix/main.cf # inet_interfaces = alll # inet_interfaces = loopback-only inet_interfaces = 127.0.0.1, [::1], [2001:db8::25]
送 信 時 のアドレスを 固 定 /etc/postfix/main.cf smtp_bind_address6 = 2001:db8::25 master.cfでも 利 用 可 能 です
[]で 囲 む 必 要 のあるもの mynetworksやdebug_peer_listのように _ Postfixマッチリストを 設 定 する 場 合 type:table 形 式 と 混 乱 しないためにも IPv6 アドレスは []で 囲 う 必 要 があります # mynetworks = hash:/etc/postfix/network_table mynetworks = 127.0.0.0/8 0 0/8 [::1]/128
DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
DovecotのIPv6 化 IPv6オペレータ 育 成 プログラム 特 別 な 設 定 は 不 要 CentOS5 系 に 付 属 の Dovecotでは Listenアドレスの 指 定 に 関 して あまり 複 雑 な 指 定 はできない /etc/dovecot.conf # * を 指 定 すると すべてのインタフェースのIPv4アドレスを # Listenする #Listen = * # # [::] を 指 定 すると すべてのインタフェースのIPv6アドレスを # Listenする OSによっては すべてのインタふぇすのIPv4も # Listenする #Listen = [::]
DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
Apacheの 設 定 IPv6オペレータ 育 成 プログラム 実 は 特 別 なことはなにもない Apache2.0 系 からIPv6に 対 応 以 降 は IPv6 依 存 部 分 について 言 及
Listen IPv6オペレータ 育 成 プログラム アドレスは IPv4の 場 合 と 異 なり [] で 括 る 必 要 がある Listen [2001:db8::a00:20ff:fea7:ccea]:80
ACL / アドレスによるアクセス 制 御 2001:db8:0:1000/64とはできないので 注 意 き ちんとネットワークアドレスを 指 定 してやる 必 要 が ある AuthName Staff Only AuthType Basic AuthUserFile e /var/www/www.example.jp/.htpasswd / / a e.jp/. Require valid-user Order Deny,Allow Deny from all Allow from 192.168.1.1 Allow from 2001:db8:0:1000::/64 Satisfy Any
アドレスベースのVirtualHost Listenと 同 様 に アドレスは IPv4の 場 合 と 異 なり [] で 括 る 必 要 がある #<VirtualHost *:80> <VirtualHost [2001:db8:0:1000::80]:80> ServerName www.example.co.jp... </VirtualHost>
アクセスログ IPv6オペレータ 育 成 プログラム 下 記 は 一 般 的 な 出 力 ログの 例 2001:db8:0:1000:211:24ff:dead:beaf - - [04/Nov/2008:09:30:59 +0900] "GET /favicon.ico HTTP/1.1" 404 272 192.0.2.1 2 1 --[04/Nov/2008:09:35:59 /2008 09 59 +0900] "GET /favicon.ico i HTTP/1.1" 1" 404 272 LinuxでApacheを 動 かすと IPv6のsocketが IPv4 接 続 も 処 理 し ているが ログにでるIPv4アドレスは ::ffff:192.0.2.1ではなく 192021となっている 192.0.2.1となっている
設 定 ファイルなどのレイアウト 例 サーバ 設 定 ファイル /etc/apache httpd.conf データファイル /var/www/www.example.com/ htdocs conf cgi-bin error icons logs Includeで 下 記 で 設 定 される VirtualHostの 設 定 を 読 み 込 む 立 てるサーバのFQDNを ディレクトリに 指 定 メリット たとえ 運 用 するVirtualHostが 増 減 してもディレクトリレイアウトが 崩 れない VirtualHost 毎 のフルバックアップもディレクトリ 指 定 でOK デメリット ト 標 準 構 成 から 崩 れるため logrorateなどを 使 う 場 合 は 別 途 見 直 しも 必 要
DNS(bind9) SMTP(postfix) POPサーバ(dovecot) Apache NTP
NTP IPv6オペレータ 育 成 プログラム 上 位 NTPサーバの 指 定 FQDNおよびIPv6アドレスでの 指 定 が 可 能 server server ntp1.v6.mfeed.ad.jp 2001:3a0:0:2005::57:123
NTP IPv6オペレータ 育 成 プログラム クエリの 制 限 restrictコマンドでは IPv4/IPv6アドレスが 扱 える が -4, 4, -6 で 明 示 的 に 指 定 することが 推 奨 さ れている #restrict -4 default kod notrap nomodify nopeer noquery #restrict -6 default kod notrap nomodify nopeer noquery #restrict 127.0.0.1 #restrict ::1 restrict -4 192.0.2.0 mask 255.255.255.0 knod notrap nomodify nopeer noquery restrict -6 2001:db8:: mask ffff:ffff:ffff:ffff:: knod notrap nomodify nopeer #restrict 192.168.123.0 mask 255.255.255.0 notrust
NTP IPv6オペレータ 育 成 プログラム 同 期 確 認 は IPv4と 同 様 ntpqコマンドを 用 いる(ただし 表 示 が 丸 められる) $ ntp -pn remote refid st t when poll reach delay offset jitter ============================================================================== 2001:3a0:0:2001 210.173.160.86 2 u 57 64 1 3.195 9.845 0.002 2001:3a0:0:2005 210.173.160.56 2 u 56 64 1 3.173 9.871 0.002 $ ntp pn remote refid st t when poll reach delay offset jitter ============================================================================== 2001:3a0:0:2001 210.173.160.56 2 u 29 64 77 3.130 5.788 2.341 *2001:3a0:0:2005 210.173.160.86 2 u 33 64 77 3.173 9.871 4.693
IPv6トラフィックの 測 定 (MRTG) IPv6 対 応 ツールの 紹 介 Smokeping Nagios
MRTGによるトラフィック 取 得 下 記 のPerlモジュールがインストール 済 みな ら MRTGは IPv6でデータの 取 得 が 可 能 ( cfgmakerもipv6 対 応 ) Socket6 IO::Socket::INET6 INET6 IPv6でのデータ 取 得 の 際 には 下 記 の 設 定 をわすれないこと EnableIPv6: yes
IPv6トラフィックの 計 測 通 常 のMIBでは IPv6のみのトラフィックは 取 れないため 工 夫 が 必 要 ip6tablesを 利 用 し パケットを 測 定 する 方 法 で 取 得 は 可 能
MRTGの 設 定 IPv6オペレータ 育 成 プログラム MRTGでは SNMP 以 外 に 外 部 スクリプトを 用 いてもデータをグラフ 化 できる Target[Linux]: `/usr/local/bin/v6counter.pl`
ip6tablesを 用 いる 方 法 #!/usr/bin/perl # for IPv6 traffic counting # use strict; use warnings; ######################################## # Edit following values. ######################################## my $ip6tables_cmd = '/sbin/ip6tables'; my $head_cmd = '/usr/bin/head'; ######################################## # Main Routine # my $input; my $output; { foreach my $TARGET qw/input OUTPUT/ { chomp(my $data = `$ip6tables _ cmd -vnx -L $TARGET --line-number $head_ cmd -1`); my @counter = split(/ s+/, $data); if ($data =~ /INPUT/) { $input = $counter[6]; } else { $output = $counter[6]; } } print "$input n$output n"; }
IPv6トラフィックの 測 定 (MRTG) IPv6 対 応 ツールの 紹 介 Smokeping Nagios
smokeping IPv6オペレータ 育 成 プログラム ネットワークのlatencyを y 計 測 できる Probeの 追 加 で ICMPだけでなく Port 監 視 も 可 能 Site http://oss.oetiker.ch/smokeping/
SmokepingのIPv6 対 応 Probeにfping6を 指 定 + FPing6 binary = /usr/sbin/fping6 Probeに 設 定 したFping6を 指 定 する 標 準 のProbeにFping6を 利 用 する 場 合 標 準 のProbeはFpingの 場 合 probe = FPing6 menu = Top title = Network Latency Grapher + Servers menu= Server title = Server ++ server1 menu = server1 title= server1 host = www.example.jp ++ server1 probe=fping6 menu = server1 title= server1 host = www.example.jp
Nagios IPv6オペレータ 育 成 プログラム 統 合 監 視 ツール Pluginにより ICMPだけでけでなく 柔 軟 な 監 視 が 可 能 Site http://www.nagios.org/
NagiosのIPv6 対 応 IPv6オペレータ 育 成 プログラム ほとんどのpluginは l i 既 にIPv6に 対 応 しており IPv6アドレスを$HOSTADDRESS$に 指 定 してやればよい 但 しFQDNを 利 用 する 場 合 には 別 途 commandを 定 義 する define command { command_name check_ping6 command_line $USER1$/check_ping H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5-6 } define command { command_name check_ping4 command_line $USER1$/check_ping H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5-4 }
パケットフィルタ セキュリティ Path MTU Discovery 拡 張 ヘッダについて ip6tables 概 要 ip6tables 設 定 ACL tcp_wrappers Mapped_address FQDN IPv6オペレータ 育 成 プログラム
パケットフィルタ Path MTU Discovery 拡 張 ヘッダについて ip6tables 概 要 ip6tables 設 定 ACL tcp_wrappers mapped_address FQDN
パケットフィルタについて IPv4と 違 い IPv6ではICMPをすべて 止 めて しまうと 通 信 ができない 場 合 があるので 注 意 が 必 要 ICMPv6が 必 須 の 理 由 IPv6では 途 中 ルータの 負 荷 低 減 のために 途 中 経 路 でのフラグメントが 禁 止 されている この ため Path MTU Discoveryの 動 作 が 必 要 となる (この 動 作 に ICMPv6が 必 須 )
Path MTU Discovery IPv6オペレータ 育 成 プログラム 送 信 元 ホストは 送 出 先 リンクのMTUをパスMTUと 仮 定 経 由 するルータ 上 でパケットを 転 送 できない 場 合 ルータはそのパケットを 破 棄 し てPacket Too Big(ICMPv6 type2)を 送 信 元 に 返 信 する( 次 ホップへのリンクのMTU 情 報 を 盛 り 込 む) IPv6の 最 小 MTUは1280バイト マルチキャストでも 同 様 宛 先 全 体 の 最 小 MTUとなる L2SWのMTUに 引 っかかった 場 合 には 破 棄 される client MTU1500 MTU1454 MTU1500 MTU1280 MTU1500 Size=1500 Server Packet Too Big (MTU=1454) Size=1454 Packet Too Big (MTU=1280) Size=1280 148
パケットフィルタの 基 本 end to endの 通 信 を 想 定 しているため 端 末 側 でしっかり 守 る 必 要 がある IPv6での 注 意 点 ICMPv6はとめない 特 にtype2(Packet Too Big) EDNS0やTCP53も 通 す IPv6ではDNS 回 答 パケットが 大 きくなりがちなためほぼ 必 須 拡 張 ヘッダへの 対 応 単 純 なパケットフィルタでは 対 応 が 難 しいものもある RH0 フラグメントヘッダ 等 ファイアウォールでの 検 討 も 必 要 149
パケットフィルタ 1( 参 考 ) IPv6オペレータ 育 成 プログラム 必 須 Ingress [1] 全 ICMPv6をaccept [2] 以 下 がSourceアドレスとなっているパケットをreject 予 約 済 みアドレス ::/8 元 サイトローカルアドレス fec0::/10 ユニークローカルアドレス fc00::/7 マルチキャストアドレス ff00::/8 ドキュメントアドレス 2001:db8::/32 [3] 自 ASで 持 っているprefixがSourceアドレスに なっているパケットをreject(トランジット 接 続 ) [1] 境 界 インタフェース 宛 となっているICMPv6パケットの 制 限 をする 前 提 条 件 1. Neighbor Discovery で 使 われる ICMPv6 TYPEはaccept をする オ 2. Path MTU Discovery で 使 われる ICMPv6 TYPE =2 (Packet Too プ シ Big) は accept をする ョ ン 3. 速 やかな IPv6/IPv4 フォールバック の 為 に ICMPv6 TYPE = 1 (Destination Unreachable)は accept をする [2] 境 界 インタフェース 宛 となっている 上 記 以 外 のICMPv6をreject traceroute, pingの 確 認 ができなくなる [3]6bone 用 アドレス( 廃 止 )をreject 3FFE::/16 Egress 特 になし [1] 全 てのICMPv6をacceptする [2] 以 下 がSourceアドレスになっているパケットをreject 予 約 済 みアドレス ::/8 元 サイトローカルアドレス fec0::/10 ユニークローカルアドレス fc00::/7 マルチキャストアドレス ff00::/8 ドキュメントアドレス 2001:db8::/32 6bone 用 アドレス 3FFE::/16 参 考 : http://www.janog.gr.jp/doc/janog-comment/jc1006.txt 150
パケットフィルタ 2.1( 参 考 ) Recommendations for ICMPv6 Transit Traffic Traffic that Must Not be Dropped Traffic that Normally Should Not be Dropped Traffic That Will Be Dropped Anyway (All these messages should never be propagated beyond the link which they were initially transmitted) Traffic for Which a Policy Should Be Defined Destination Unreachable (Type 1) All codes Packet Too Big (Type 2) Time Exceeded (Type 3) Code 0 only Parameter Problem (Type 4) Codes 1 and 2 only Echo Request (Type 128) Echo Response (Type 129) Time Exceeded (Type 3) Code 1 Parameter Problem (Type 4) Code 0 Home Agent Address Discovery Request (Type 144) Home Agent Address Discovery Reply (Type 145) Mobile Prefix Solicitation (Type 146) Mobile Prefix Advertisement (Type 147) Router Solicitation (Type 133) Router Advertisement (Type 134) Neighbor Solicitation (Type 135) Neighbor Advertisement (Type 136) Redirect (Type 137) Inverse Neighbor Discovery Solicitation (Type 141) Inverse Neighbor Discovery Advertisement (Type 142) Listener Query (Type 130) Listener Report (Type 131) Listener Done (Type 132) Listener Report v2 (yp (Type 143) Certificate Path Solicitation (Type 148) Certificate Path Advertisement (Type 149) Multicast Router Advertisement (Type 151) Multicast Router Solicitation (Type 152) Multicast Router Termination (Type 153) Seamoby Experimental (Type 150) Unallocated Error messages (Types 5 99 inclusive and 102 126 inclusive) Unallocated Informational messages (Types 154 199 inclusive and 202 254 inclusive) 参 考 : http://www.ietf.org/rfc/rfc4890.txt?number=4890 151
パケットフィルタ 2.2( 参 考 ) Recommendations for ICMPv6 Local Configuration Traffic Traffic that Must Not be Dropped Traffic that Normally Should Not be Dropped Traffic That Will Be Dropped Anyway (if the service is not implemented) Traffic for Which a Policy Should Be Defined Destination Unreachable (Type 1) All codes Packet Too Big (Type 2) Time Exceeded (Type 3) Code 0 only Parameter Problem (Type 4) Codes 1 and 2 only Echo Request (Type 128) Echo Response (Type 129) RouterSolicitation (Type 133) Router Advertisement (Type 134) Neighbor Solicitation (Type 135) Neighbor Advertisement (Type 136) Inverse Neighbor Discovery Solicitation (Type 141) Inverse Neighbor Discovery Advertisement (Type 142) Listener Query (Type 130) Listener Report (Type 131) Listener Done (Type 132) Listener Report v2 (Type 143) Certificate Path Solicitation (Type 148) Certificate Path Advertisement (Type 149) Multicast Router Advertisement (Type 151) Multicast Router Solicitation (Type 152) Multicast Router Termination (Type 153) Time Exceeded (Type 3) Code 1 Parameter Problem (Type 4) Code 0 Router Renumbering (Type 138) Home Agent Address Discovery Request (Type 144) Home Agent Address Discovery Reply (Type 145) Mobile Prefix Solicitation (Type 146) Mobile Prefix Advertisement (Type 147) Seamoby Experimental (Type 150) Redirect (Type 137) Node Information Query (Type 139) Node Information Response (Type 140) Unallocated Error messages (Types 5 99 inclusive and 102 126 inclusive) 参 考 : http://www.ietf.org/rfc/rfc4890.txt?number=4890 152
iptablesのipv6 版 ip6tables 概 要 IPv6オペレータ 育 成 プログラム カーネルのパケットフィルタルールの 設 定 などを 行 うことができる NATに 関 連 するもの 以 外 はほぼIPv4の 時 と 同 じ ただし ICMPとICMPv6に 互 換 性 はないので 注 意 が 必 要 RHEL5/CentOS5ではConnection tracking がサ ポートされないため 設 定 は 投 入 できるものの 期 待 した 挙 動 にはならない 例 : ip6tables -A TEST -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables 設 定 IPv6オペレータ 育 成 プログラム 各 ターゲットにルールを 定 義 する 入 力 ルーティング FORWARD 出 力 INPUT OUTPUT ローカルプロセス
ICMPv6 設 定 例 IPv6オペレータ 育 成 プログラム # Allow some ICMPv6 types in the INPUT chain # Using ICMPv6 type names to be clear. ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT # Allow some other types in the INPUT chain, but rate limit. ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m limit --limit 900/min -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -m limit --limit 900/min -j ACCEPT # Allow others ICMPv6 types but only if the hop limit field is 255. ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl--hl-eq 255 -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT ip6tables -A INPUT -p icmpv6 --icmpv6-type redirect -m hl --hl-eq 255 -j ACCEPT # When there isn't a match, the default policy (DROP) will be applied. # To be sure, drop all other ICMPv6 types. # We're dropping enough icmpv6 types to break RFC compliance. ip6tables -A INPUT -p icmpv6 -j LOG --log-prefix "dropped ICMPv6" ip6tables -A INPUT -p icmpv6 -j DROP
ICMPv6 設 定 例 (Cont) # Allow ICMPv6 types that t should be sent through h the Internet. t ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT ip6tables -A OUTPUT-p icmpv6 --icmpv6-type parameter-problem -j ACCEPT # Limit most NDP messages to the local network. ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT # If we're acting like a router, this could be a sign of problems. ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-advertisement -j LOG --log-prefix "ra ICMPv6 type" ip6tables -A OUTPUT -p icmpv6 --icmpv6-type redirect -j LOG --log-prefix "redirect ICMPv6 type" ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-advertisement -j REJECT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type redirect -j REJECT # Accept all other ICMPv6 types in the OUTPUT chain. ip6tables -A OUTPUT -p icmpv6 -j ACCEPT 参 考 : http://www.cert.org/downloads/ipv6/ip6tables_rules.txt
パケットフィルタ セキュリティ Path MTU Discovery 拡 張 ヘッダについて Ip6tables 概 要 Ip6tables 設 定 ACL tcp_wrappers Mapped_address FQDN IPv6オペレータ 育 成 プログラム
tcp_wrappers IPv6オペレータ 育 成 プログラム tcp_wrappersと pp 複 数 形 であることの 理 由 は ライブラリ 形 式 でも 提 供 されているから 多 く のディストリビューションのsshdが tcpdと 組 み 合 わせなくても /etc/hosts.allow /h t /etc/hosts.deny でコントロールできるのはそのため
tcp_wrappers 書 式 IPv6オペレータ 育 成 プログラム IPv6アドレス ネットワークアドレスは []で 囲 う ALL: [2001:db8:1000:2000::]/64 ) 個 別 にパッチが 出 ていた 時 と 書 式 が 異 なっていることもあるので 古 い 文 献 を 参 照 する 際 は 注 意 が 必 要
mapped address IPv6オペレータ 育 成 プログラム mapped addressを 用 いて IPv4ノードと 通 信 を 行 うIPv6ノードの 場 合 リモートアドレスが xx.xx.xx.xx という 形 式 にならないので 不 具 合 が 生 じる 可 能 性 がある
FQDN IPv6オペレータ 育 成 プログラム Apacheなど アクセス 元 のユーザのドメイン 名 で 許 可 不 許 可 を 決 めているものがあるが IPv6では クライアントの 逆 引 きが 設 定 されな いことが 多 いので 既 存 のサーバをIPv6に 対 応 させる 際 には 注 意 が 必 要
運 用 IPv6オペレータ 育 成 プログラム DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
DNS 逆 引 きについて IPv6オペレータ 育 成 プログラム クライアントのアドレスは プライバシー 拡 張 などを 用 いてアクセスされることなどを 考 える と DNSの 逆 引 きによるACLは 事 実 上 使 え ないと 思 ったほうがよい
DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
SMTP 問 題 IPv6オペレータ 育 成 プログラム MXにA RRおよびAAAA RRを 持 つサーバを 指 定 していると うまくフォールバックできない 実 装 がある(らしい)
対 処 方 法 SMTP 問 題 $ORIGIN example.jp. ; @ IN MX 10 mail ; mail IN A 192.0.2.1 IN AAAA 2001:db8::25 これを IPv6オペレータ 育 成 プログラム $ORIGIN example.jp. ; @ IN MX 10 mail MX 20 mail4 ; mail IN A 192.0.2.1 IN AAAA 2001:db8::25 ; Mail4 IN A 192.0.2.1
DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
ログ 形 式 について IPv6オペレータ 育 成 プログラム syslogなどで 記 録 されるアドレスは 決 まった 短 縮 法 が 適 用 されるわけではない 吐 き 出 す アプリケーションに 依 存 する このため grep などで 単 純 にアドレスをマッチさせることは できないことがある( 現 在 IETFで この 問 題 が 議 論 されている)
DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
アドレスの 自 動 設 定 について 多 くのクライアントノードを 管 理 する 管 理 者 の 作 業 低 減 の 目 的 があった しかしながら サーバ 用 途 では NICの 交 換 によ って アドレスが 変 わってしまうこともあるので 自 動 設 定 は 避 けたほうがよい アドレス 変 更 にともなう フィルタのルール 変 更 なども 必 要 なため
DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
障 害 の 切 り 分 け(FQDN) 監 視 ツールで FQDNでノードを 登 録 していた 場 合 IPv6/IPv4のフォールバックの 影 響 を 受 けないか 注 意 が 必 要
運 用 における 注 意 点 IPv6オペレータ 育 成 プログラム DNS 逆 引 きについて SMTP 問 題 ログ 形 式 について アドレス 自 動 設 定 について 障 害 の 切 り 分 け(FQDN) VLAN
VLAN IPv6オペレータ 育 成 プログラム ポートVLAN, tagged VLANなど 特 に 問 題 なし MACアドレスベースVLAN ISPなどではほとんど 使 われないだろうが 現 状 まともに 動 く 実 装 はない RAなど multicast 宛 てに 投 げられると 全 ユーザにア ドレスが 割 り 当 てられてしまう 利 用 しないほうが 無 難
Q&A?
付 録 IPv6オペレータ 育 成 プログラム IPv6の 接 続 性 を 得 るには? IPv6 用 語
IPv6の 接 続 性 を 得 るには? 上 流 ISPからIPv6のトランジットを 買 う 意 外 とあります IPv6 対 応 のiDCに 入 る 意 外 とあります Tunnel Brokerを 探 す Feel6(dtcp) OCN IPv6(L2TP) http://ipv6.blog.ocn.ne.jp/ipv6/2006/04/linuxocn_ipv62_5915. html
IPv6 用 語 IPv6オペレータ 育 成 プログラム ノード IPv6が 実 装 されている 機 器 ルータ 他 へIPv6パケットを 転 送 するノード ホスト ルータではないノード
IPv6 用 語 cont(2) IPv6オペレータ 育 成 プログラム 上 位 層 (upper layer) IPv6の 直 上 のプロトコル 層 (TCP,UDPなど) リンク IPv6の 直 下 の 層 を 指 す(Ethernet,PPPなど) 近 隣 (neighbors) 同 じリンクに 接 続 しているノード インターフェース ノードがリンクへ 接 続 するためのアタッチメント
IPv6 用 語 cont(3) IPv6オペレータ 育 成 プログラム パケット IPv6ヘッダを 含 むペイロード(データ 部 ) リンクMTU そのリンク 上 で 伝 送 させることのできるパケットの 最 大 の 伝 送 単 位 パスMTU 送 信 元 と 送 信 先 のノード 間 に 存 在 するすべてのリ ンクにおいて もっとも 小 さなリンクMTU