IPv6 on Debian GNU/Linux
At your own risk.
Jun 2007 (state: 6to4を使って外部接続可能に)
Table of Contents
やはりフィルタは必要と思うので設定。
ルータとなるマシンでの設定(とりえあずの設定)。
#
# ethx = device of subnetwork
#
#<<<<<<<<< FILTER >>>>>>>>>>#
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
#
##### INPUT ##############
### LOOPBACK
-A INPUT -i lo -j ACCEPT
-A INPUT -s ::1/128 -d ::1/128 -j ACCEPT
### SESSION CONNECTED(if support state)
#-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
### SESSION CONNECTED(if not support state)
-A INPUT -p tcp --tcp-flags ! FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN,ACK -j ACCEPT
### [POWER USER USE/TCP] 22(SSH)
-A INPUT -i sit0 -p tcp -m tcp --dport 22 -j ACCEPT
### SUB-NETWORK
-A INPUT -i ethx -j ACCEPT
### ICMP
-A INPUT -i ethx -p ipv6-icmp -j ACCEPT
-A INPUT -i sit0 -p ipv6-icmp -j ACCEPT
### LOG
-A INPUT -j LOG
#
##### FORWARD ############
### SESSION CONNECTED(if support state)
#-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
### SESSION CONNECTED(if not support state)
-A FORWARD -p tcp --tcp-flags ! FIN,SYN,RST,ACK SYN -j ACCEPT
-A FORWARD -p tcp --tcp-flags FIN,SYN,RST,ACK SYN,ACK -j ACCEPT
### [TWO WAY] 22,22(SSH)
-A FORWARD -i ethx -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -i ethx -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -i sit0 -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -i sit0 -p tcp -m tcp --dport 22 -j ACCEPT
### [TO OUTSIDE ONLY] ICMPv6, 20,21(FTP), 2401(CVS)
-A FORWARD -i ethx -p ipv6-icmp -j ACCEPT
-A FORWARD -i ethx -p tcp -m tcp --dport 20:21 -j ACCEPT
-A FORWARD -i ethx -p tcp -m tcp --dport 2401 -j ACCEPT
### [TO OUTSIDE ONLY] 80(HTTP), 433(HTTPS)
#-A FORWARD -i ethx -p tcp -m tcp --dport 80 -j ACCEPT
#-A FORWARD -i ethx -p tcp -m tcp --dport 443 -j ACCEPT
### LOG
-A FORWARD -j LOG
##### OUTPUT #############
### LOOPBACK
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s ::1/128 -d ::1/128 -j ACCEPT
### SESSION CONNECTED(if support state)
#-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
### SESSION CONNECTED(if not support state)
-A OUTPUT -p tcp --tcp-flags ! FIN,SYN,RST,ACK SYN -j ACCEPT
-A OUTPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN,ACK -j ACCEPT
### [POWER USER USE]22,22(SSH)
-A OUTPUT -o sit0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o sit0 -p tcp -m tcp --dport 22 -j ACCEPT
### [TO OUTSIDE ONLY] 20,21(FTP), 2401(CVS), 80(HTTP), 433(HTTPS)
-A OUTPUT -o sit0 -p tcp -m tcp --dport 20:21 -j ACCEPT
-A OUTPUT -o sit0 -p tcp -m tcp --dport 2401 -j ACCEPT
-A OUTPUT -o sit0 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o sit0 -p tcp -m tcp --dport 443 -j ACCEPT
### SUB-NETWORK
-A OUTPUT -o ethx -j ACCEPT
### ICMP
-A OUTPUT -o ethx -p ipv6-icmp -j ACCEPT
-A OUTPUT -o sit0 -p ipv6-icmp -j ACCEPT
### LOG
-A OUTPUT -j LOG
#
#
COMMIT
#
/etc/sysctrl.confに下記のように設定(ルータ設定)。
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.all.forwarding=1
RFC3056(Connection of IPv6 Domains via IPv4 Clouds),
RFC3068(An Anycast Prefix for 6to4 Relay Routers)と
Debian IPv6 -Debian Wiki
を参考に、トンネルの設定(/etc/network/interfaces)。
auto sit0
iface sit0 inet6 static
address 2002:xxxx:xxxx::1
netmask 64
gateway ::192.88.99.1
mtu 1434 # via NTT Flet's PPPoE(MTU 1454)
192.88.99.1は一番近くの6to4ルータに接続するための特別なエニーキャストアドレスだそうだ。
この設定を通すためのiptables(IPv4)の下記設定を追加
-A INPUT -p ipv6 -j ACCEPT
-A OUTPUT -p ipv6 -j ACCEPT
/etc/radvd.confを作って、radvdを起動させます。
interface ethx
{
AdvSendAdvert on;
prefix 2002:xxxx:xxxx:xxxx::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
現在あるdomain.jpの名前データベースに"AAAA"レーコードを追加。
アドレスは上位64bitが言わばネットワークアドレスで、
下位64bitがユニークなアドレス(EthernetではMACアドレスのEUI-48をEUI-64拡張したもの)。
v6host AAAA 2002:xxxx:xxxx:xxxx:yyyy:yyff:feyy:yyyy
逆引きデータを用意しよう。下位64bitを4bitづつ逆順に記述する。
@ IN SOA ns.domain.jp. root.domain.jp. (
200706071 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS ns.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR ns.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR gw.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR proxy.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR cvs.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR dns.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR nfs.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR ntp.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR www.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR mail.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR smtp.domain.jp.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR agate.domain.jp.
;;
y.y.y.y.y.y.e.f.f.f.y.y.y.y.y.y IN PTR v6host.domain.jp.
named.confに"arpa"および"int"に両対応する設定を記述。上位64bitの4bitづつ逆順をzoneに記述。
zone "x.x.x.x.x.x.x.x.x.x.x.x.2.0.0.2.ip6.arpa" {
type master;
file "/etc/bind/local/2002:xxxx:xxxx:xxxx";
};
zone "x.x.x.x.x.x.x.x.x.x.x.x.2.0.0.2.ip6.int" {
type master;
file "/etc/bind/local/2002:xxxx:xxxx:xxxx";
};
(EUI-48 to EUI-64変換)
- MACアドレス(EUI-48)の上位24bit(OUI)のbit17を反転してEUI-64の上位24bitとする。
- EUI-64の中位16bitをFFFEとする。
- MACアドレスの下位24bit(シリアル)をEUI-64の下位24bitとする。
EUI-48: OOOOOOOO OOOOOOOO OOOOOOOO SSSSSSSS SSSSSSSS SSSSSSSS
EUI-68: OOOOOONO OOOOOOOO OOOOOOOO 11111111 11111110 SSSSSSSS SSSSSSSS SSSSSSSS
Last modified: Mon Mar 2 17:52:10 JST 2009