IPv6オペレータ育成プログラム

本資料は2009年12月17‐18日に開催されたIPv4アドレス枯渇対応タスクフォ ス主催のアドレス枯渇対応タスクフォース主催のIPv6ハンズオンセミナー「iDC/ISP/CATV サーバ編」(講師：國武功サーバ編」(講師：國武功一氏)を氏)を元にし、公開用に資料を編集したものである。
IPv4アドレス枯渇対応タスクフォース
http://www.kokatsu.jp/
1© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

ハンズオン用資料
株式会社ビーコンエヌシー
株式会社ビコンエヌシ
國武 功一

22
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

IPv6ハンズオン物理構成図
ンズオン物理構成図
講師席

sylsog、SNMP、DNS

受講者席①②⑨⑩③④⑪⑫⑤⑥⑬⑭⑦⑧⑮⑯© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

IPv6ハンズオン論理構成図
ンズオン論理構成図IPv4 192
192.168.242.0/27
168 242 0/27
IPv6 2001:db8:2000::/64

sylsog、SNMP、DNS
.30
::30

© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

サーバへのログイン• デスクトップにあるショートカットのTeraTermを使用し、シリアル経由でログインする。
• アカウント情報（ID/Pw)– ****/****– ****/****/※必要でしたら作業内容を保存し、USBメモリに移すなどして、お5持ち帰りください。
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

セッション26© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

IPv4/IPv6アドレスの設定• このセグメントには– “192.168.242.0/27”– “2001:db8:2000::/64”
2001:db8:2000::/64が割り当てられています。

• 各自の利用アドレスとして– 192.168.242.x– 2001:db8:2000::xを使ってください（xは 受講番号です）
を使ってください（xは、受講番号です）
7© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

IPv6アドレス重複時の挙動• 重複したアドレスを割り当てた際の、挙動を確認してください。
– 2001:db8:2000::17• Syslogに、DADのメッセージが出ていることを確認し くださを確認してください。

8© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

IPv4/IPv6経路設定• Default gw は下記の通りです。
– 192.168.242.30/27– 2001:db8:2000::30/64• DNSキャッシュサーバは、下記の通りです。
DNSキ
シ サ バは 下記の通りです– 2001:db8:2000::250• 設定は、設定ファイルに反映させて下さい• 設定後、疎通確認をお願いします。
設定後 疎通確認をお願いします# traceroute6 ipv6.google.co.jp# tracepath6 www.nic.ad.jp

9© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: DAD確認# ipp addr add 2001:db8:2000::17/64 deveth0# ip addr show dev eth0

# tail /var/log/messages|grepgg |gdetect
10© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: アドレス経路設定
アドレス設定# ipi link
li k sett eth0
th0 ddown && iip lilink
k sett eth0
th0 up# ip addr add 192.168.242.x/27 dev eth0
# ip addr add 2001:db8:2000::x/64 dev eth0
経路設定
# ip route add 0.0.0.0/0 via 192.168.242.30 dev eth0
# ip route add ::/0 via 2001:db8:2000::30 dev eth0

11
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: resolv.conf設定/etc/resolv.conf
search example.jp
nameserver 2001:db8:2000:ffff::250
2001 db8 2000 ffff 250

実際の確認$ dig ipv6.google.co.jp AAAA

12
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

アドレス自動設定のOFF• アドレス自動設定をOFFにした後に、サーバをrebootし、自身が明示的につけたアドレスしかついていないことを確認します。

13© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: アドレス自動設定OFF/etc/sysconfig/networkyg
IPV6_AUTOCONF=no有効化# //etc/init.d/network/i i d/k restart
14© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

参考((Advanced))

15© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Bondingの設定• 一通りの設定が終わったら、eth0/eth1 を用いて、bondingを組んでみてください。
• Defualt gwにping6を打ち続けgwにping6を打ち続け、ケーブルをケーブルを抜き差ししてみてください。

16© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:Bonding設定例
ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6ADDR=xxx:xxx:xxx::x/64/IPADDR=xx.xx.xx
NETWORK=xx.xx.xx
NETMASK 255 255 255 0
NETMASK=255.255.255.0

ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yesy
MASTER=bond0
SLAVE=yes
ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0SLAVE
SLAVE=yes
17© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:Bonding設定/etc/modprobe.conf
alias bond0 bonding
options bond0 mode=1 miimon=200

有効化# /etc/init.d/network restart

18© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

セッション419© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Apache設定• RHEL5/CentOS5系では、すでに標準で、IPv6 Ready. 適当なコンテンツを設置して、ブラウザでアクセスしてみてください。
– アドレスバーに
アドレスバ に http://[2001:db8:2000::x]/
http //[2001 db8 2000 ]/• アクセスした時に、ログがどうなっているか、確認してみてください。

20© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

VirtualHost設定• IPアドレスベースのVirtualHostの設定を施し、IPv4とIPv6のコンテンツを変えてみましょう。

21© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Apache ACL設定• 隣同士、アクセスを確認した後、アクセスログから、アドレスを特定して、ACLでアクセス拒否の設定を入れてみてください。

22© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: Apache設定/etc/httpd/conf/httpd.conf に下記を追記<VirtualHost 192.168.242.17:80>
192 168 242 17:80>
DocumentRoot /var/www/html/ipv4</VirtualHost><VirtualHost [2001:db8:2000::17]:80>
DocumentRoot /var/www/html/ipv6</VirtualHost>※※/var/www/html/{ipv4|ipv6}に適当なコンテンツを置いてください。
適当なを置
くださ
23
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: Apache設定確認$ /usr/sbin/httpdp –S$ ttelnet
l t 192.168.242.17
192 168 242 17 80
GET /index.html$ telnet
l2001
2001:db8:2000::17
db8 2000 17 80
GET /index.html
24© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

メールサーバ• ホスト名を適切に設定し、/etc/hostsに記載してください。
• 起動したメールサーバにtelnetでメールを送信してみてください。
• 送信した後、メールのログを確認してみてください。

25© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:postfix設定/etc/postfix/main.cf
myhostname = dns.17-handson.example.jp
mydomain = 17-handson.example.jp
inet_interfaces = allmydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/

送信先ユーザの作成# useradd user1
26© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

メール送信例$ telnet fe80::aaa:dead:beaf%bond0 ｓｍｔｐ
Trying fe80::aaa:dead:beaf%bond0...
Connected to fe80
fe80::aaa:dead:beaf%bond0.
aaa dead beaf%bond0
Escape character is '^]'.
220 asteroid ESMTP Postfix (Ubuntu)
HELO foo
250 asteroid
MAIL FROM: kunitake@example.jp
250 2.1.0 Ok
RCPT TO: user1@17-handson.example.jp
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: kunitake@example.jp
Subject: from handson!
Hello IPv6 world.
250 2.0.0 Ok: queued as 22945DD71
QUIT
221 2
2.0.0
0 0 ByeConnection closed by foreign host.

27© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

NTPサーバ• 上流のNTPサーバに– 2001:3a0:0:2001::27:123– 2001:db8:2000::x(隣の方のアドレス）を設定する。

• ntpqで同期を確認する。

28© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

NTPサーバによるACL
server 2001:3a0:0:2001::27:123
server 2001:db8:2000::X#restrict default ignore
restrict -4 default nomodify notrap
restrict -6 default nomodify notrap• restrictのどちらかを外したり、つけたりして、t i tのどちらかを外したり つけたりしてIPv4とIPv6のACLの設定が別々になっていることを確認してみてください。
29© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

DNSサーバ• IPv6 transportに対応した、DNSキャッシュサー
pバを作成する。
• 作成したDNSキャッシュサーバを、隣の席の人作成したDNSキャッシュサーバを 隣の席の人同士で、使ってみる# dig @2001:db8:2000::x ipv6.google.co.jp AAAA

• アクセスできることを確認ののち、ACLで、隣の人からのクエリを拒否してみる。
30© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:DNSキャッシュサーバ# cd /var/named/chroot/etc# wgett ftp://ftp.rs.internic.net/domain/named.root
ft //fti t it/di /dt/var/named/chroot/etc/named.conf
acl handson-net {2001:db8::/32;};
options {directory “/etc”;
version “”;
alllow-query { handson-net; 127.0.0.1; ::1; };listen-on-v6 {any; };};zone “.” {type hint;
file “/etc/named.root”;};
31© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: DNSサーバ
確認方法# didig @@::1
1 iipv6.google.co.jp
6lj AAAA

32© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

ZONEの登録• “x-handson.example.jp”
p jp のゾーンを追加し、そこに自身のサーバ名のA および AAAA RRを登録してみてください（ｘは受講番号）33© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:DNSキャッシュサーバ/var/named/chroot/etc/named.conf// 下記を追記
zone “17-handson.example.jp” {type master;
file “master/examole.jp”;
allow-transfer
allowtransfer { localhost; handson
handson-net;};net;};
allow-query { any ;};};34© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: DNS権威サーバ/var/named/chroot/etc/master/example.jp;;$TTL 3600@IN(dnsdnsSOA17-handson.example.jp.

root.example.jp.

2009082601
7200
1800
60480086400); Serial; Refresh 2hrs
; Retry 30mins; Expire 1 weeks; Minimum 1 daysININNSMX

dns.17-handson.example.jp.
dns.17-handson.example.jp.

ININ

A
AAAA

10192.168.242.17
2001:db8:2000::17

確認$ dig @::1 17-handson.example.jp SOA

35© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

tcp_wrappers• sshdへのアクセスに制限が掛っています。本ネットワークからのみ、制限を解除し、隣の方からサ バへアクセスしてもらってください。
からサーバへアクセスしてもらってください。

36© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try: tcp_wrappers/etc/hosts.deny
ALL: ALL/etc/hosts.allow
sshd: 192.168.242.
92 68 2 2 [2001:db8:2000:ffff::]/64200
8 2000/6• Nagiosで、「SSH」がグリーンになっているこ
N i で 「SSH がグリ ンにな ていることを確認してください。
37© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

パケットフィルタ
• ip6tablesを用いて、実際に、CERTが例示しpているフィルタを設定し、その効果を確認します（別紙：ip6tables rules txt)
す（別紙：ip6tables_rules.txt)

38© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

入力# Allow some ICMPv6 types in the INPUT chaing ICMPv6 typeyp names to be clear.
# Using
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 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 ACCEPTPath MTU Discoveryなど、正常な動作に必要な受け取るべきICMPを指定。
また、hoplimitが255でないとおかしいパケットなどは、明示的にhoplimitを指定。
39© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

入力（Cont)# Allow some other types in the INPUT chain, but rate limit.
p-A INPUT -pp icmpv6
p --icmpv6-type
pyp echo-request
q-m limit --limit 900/min -jj ACCEPT
ip6tables
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -m limit --limit 900/min -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
dropped ICMPv6"
ICMPv6
ip6tables -A INPUT -p icmpv6 -j DROP

Echo/replyに制限を掛け、パケットのドロップを記録する。

40© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

出力# Allow ICMPv6 types that should be sent through the Internet.
p-A OUTPUT -p
p icmpv6
p --icmpv6-typep
yp destination-unreachable -jj ACCEPT
ip6tables
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 ACCEPTPath MTU Discoveryなど、正常な動作に必要なICMPを指定。
また、hoplimitが255でないとおかしいパケットなどは、明示的にhoplimitを指定。
41© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

出力（Cont)# 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
A OUTPUT -pp icmpv6 --icmpv6-type
icmpv6 type router-advertisement
router advertisement -jj 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

ルータとして設定していた際に役に立つ設定。

42© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

サービスポートの設定等# Enough ICMPv6! :-D# Some sample TCP rules. <These are for example purposes only.># The REJECT is for politeness on the local network.
i 6t bl -A
ip6tables
A INPUT -m multiport
lti t -p tcpt --dport
d t $bl$blocked_tcp_ports
k d tt -m hl --hl-eqhl255 -jj REJECT
ip6tables -A OUTPUT -m multiport -p tcp --dport $blocked_tcp_ports -m hl --hl-eq 255 -j REJECT
ip6tables -A INPUT -m multiport -p tcp --dport $blocked_tcp_ports -m hl --hl-lt 255 -j DROP
ip6tables -AA OUTPUT -mm multiport -pp tcp --dport
dport $blocked_tcp_ports$blocked tcp ports -mm hl --hl-lthl lt 255 -jj DROP
# Stateful matching to allow requested traffic in.
ip6tables -A OUTPUT -p tcp -j ACCEPT
ip6tables -A OUTPUT -p udp -j ACCEPT
ip6tables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT# Drop NEW,INVALID probably not needed due to the default drop policy.
ip6tables -A INPUT -m state --state NEW,INVALID -j DROP

43
© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

ＰＯＰサーバの設定• 受信したメールを構築したＰＯＰサーバを用いて受信してみる。

44© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Dovecotのインストール• Yumを用いて、dovecotをインストール# yum install dovecot• /etc/dovecot.confの設定

45© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:Dovecot設定/etc/dovecot.conf
protocols = imap pop3
protocol lda {postmaster_address = root@17-handson.example.jp}
ssl_disable = yesauth default {passdb passwd-file {args = /etc/dovecot.passwd}
userdb passwd-file {args = /etc/dovecot.passwd}}

46© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

Try:Dovecot設定/etc/dovecot.passwd
user1:{plain}user1:501:501::/home/user1::userdb_mail=maildir:/home/user1/Maildir

47© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.

IPv6オペレータ育成プログラム

メール受信例
受信例$ telnet 2001:db8:2000::17 p
pop3p
Trying 2001:db8:2000::17...
Connected to 2001:db8:2000::17.
Escape character is '^]'.
+OK Dovecot ready.
USER user1+OKPASS user1+OK Logged in.
LIST+OK 1 messages:
1 554.
RETR 1+OK 554 octets
Return-Path: <kunitake@example.jp>
X-Original-To: user1@17-handson.example.jp
Delivered-To: user1@17-handson.example.jp
Received: from fo (localhost.localdomain [127.0.0.1])
by dnsdns.17-handson.example.jp
17-handson example jp (Postfix) with SMTP id 092E862C109
for <user1@17-handson.example.jp>; Wed, 16 Dec 2009 15:29:12 +0900 (JST)
From: kunitake@example.jp
Subject: test mailMessage-Id: <20091216062926.092E862C109@dns.17-handson.example.jp>
Date: Wed, 16 Dec 2009 1
15:29:12
29 12 +0900
0900 ((JST)S )To: undisclosed-recipients:;
Hello48© Task Force on IPv4 Address Exhaustion, Japan ALL RIGHT RESERVED.