ob2d 與 ipv6

前言
本篇文章為參加台南縣IPv6 入門與伺服環境建置研習之筆記
關於ipv6之詳細介紹請參考ols3主任之研習講義 http://news.ols3.net/techdoc/new/ipv6_intro/

測試電腦是否支援ipv6的方法
http://www.kame.net/  看那隻烏龜是否會動
http://ipv6.tnc.edu.tw/  看看有沒有ipv6的ip

IPV6介紹
IPV6位址共128bytes,分成8區以:隔開格式如下
2001:0288:75d8:0000:0222:15ff:fe5b:4525

其中每一個數字均為16進位(4位元),每一區為16位元
每一區塊前置的0可以省略,相連的0:0:0等不管幾個相連都可以簡寫為::
但::的寫法一個位址只能有一個(以相連的0最多的優先)

::1代表 localhost(lo)
:: 代表any(相當於ipv4的0.0.0.0
ff02::1 一般電腦的廣播位址
ff02::2 路由器廣播位址

例如
ping6 –I eth1 ff01::1     ping 一般PC有那些
ping6 –I eth1 ff02::1     ping 路由器有那些

prefix
ipv4的netmask在ipv6中稱為prefix
一個全域路由佔前48bit  而子網路識別佔16bit

任何全域的IPV6單點位址都是prefix 64,所以不用再設netmask了

換言之,配置 2001:288:7400::/48 的單位,可擁有 2^16 個子網路,每個子網路共有 2^64 個 IP。(目前各校皆是如此的配置方式),而每一個IP都是prefix 64

例如大橋國小
2001:288:75D8::/48

scope
1.Global scope 位址:

凡封包可以路由到整個 IPv6 網際網路的位址稱之為 Global scope。

2.Link-local scope 位址:
封包不能路由出去,只可在內部網路(subnet)流通,稱為 Link-local 位址。此種位址僅供 IPv6 內部運作機制使用。

多點位址
ff0開頭的位址為多點位址
例如
ff02::1 一般電腦的廣播位址
ff02::2 路由器廣播位址

全域單一位址
2001:開頭指全域單一位址(也就是isp分配到各用戶的位址)
換句話說目前所有電腦網卡所用的的ipv6 位址都是2001開頭

2001:db8:  文件說明用(寫講義用的假位址)
2001:0 則是teredo通道專用位址

例如
台南縣網轄下連線單位拿到的位址是:2001:288:7400::/39 (2001:288:7400--75FF)。

以教網中心為例:2001:288:7400::/48
以麻豆國中為例:2001:288:750B::/48
以大橋國小為例:2001:288:75D8::/48

Link-local 單點位址
主機平台的 IPv6 有啟用,則每一網路介面都會自動配得一個 Link-local 單點位址,此位址以 fe80::/64 開頭。
此ip位址可由網卡算出

算法
例如某一網卡mac 位址為
00-0F-EA-41-59-47

最左邊一定是00
寫成2進位變成0000 0000
再將由左邊算起第7個bit(稱為global bit一定是0)改成1
於是00就會變成02
於是變成
02:0f:ea:41:59:47

再將mac位址拆成2半,中間加入fffe
於是變成020f:eaff:fe41:5947
於是ipv6位址就會變成
fe80::20f:eaff:fe41:5947

即為網卡的local 單點位址
fe80::20f:eaff:fe41:5947%5

檢查LINUX的核心
uname -ra
只要核心>2.6均支援IPV6

lsmod 列出核心模組
列出與IPV6相關的核心模組
lsmod | grep ipv6
lsmod | grep tun  (tunnel相關模組)
lsmod |grep ip6

安裝IPV6測試相關套件
apt-get update

apt-get install iputils-ping iputils-tracepath iproute ipv6calc


ping 路由器IP
ping6 –I eth1 ff02::1


tcpdump 抓取封包紀錄
apt-get install tcpdump
tcpdump -t -n not port 22 and ip6 > log.cap
(不要時間戳計,不要反解,不要抓22,只要抓 ipv6)

namp 與 ipv6
nmap -6 ipv6位址

檢查Linux使用的編碼
export | grep LANG

echo $LANG

設定靜態IPV6的IP
vi /etc/network/interfaces
小技巧
vi的複製貼上
3Y Y大寫表示複製3行
p 表示貼上
加上
iface eth0 inet6 static

address 2001:288:75d8::1
netmask 64
gateway 2001:288:75d8::ff    (這行可不設,因為ipv6會自動尋找router)



接著執行
service netowking restart
 
使用ifconfig指令來設定/檢查 IPV6的 IP
ifconfig eth0 inet6 add ipv6/prefix

ifconfig eth0 inet6 del ipv6/prefix

ifconfig
ifconfig | grep inet6


使用ip 指令來設定/檢查ipv6的ip
增加ipv6ip
ip -6 addr add/del ipv6address/prefix dev eth0 
 
檢查ipv6的ip

ip -6 addr show
ip -6 addr show dev eth0
ip -6 addr show dev eth0 scope global

出現scope global dynamic 表示為動態分配到的IP
valid_lft(有效生命期,較長,時間到後該IP即無效)
preferred_lft(預設生命期較短,時間到後電腦會去延長生命週期)
 
路由相關指令
route

route -n

route -A inet6
route -6

ip -6 route show

手動設定路由

route -A inet6 add ::/0 gw ipv6路由器ip
route -A inet6 del ::/0 gw ipv6路由器ip

route -A inet6
ip -6 route add :::/0 via ipv6路由器ip

要永久有效則加入到防火牆的設定檔中
vi /etc/rc.local

加入
/sbin/ip -6 route add :::/0 via ipv6路由器ip

. /etc/init.d/rc.local     (加上. 表示立即生效)

自動分配IPV6位址
路由器分配IF的方法為前面64bit 為全域ip再加上後面64位元為interfaces ip
例如網卡為
00-0F-EA-41-59-47

於是變成
interfaces ip 變成
20f:eaff:fe41:5947

路由器分配IPV6位址變成(Global Local)
2001:288:75d8::20f:eaff:fe41:5947/64

而網卡自動產生的IP則為(Link Local)
fe80::20f:eaff:fe41:5947

找出網路上的芳鄰
ip -t neigh show
檢查 openssh 有沒有支援 ipv6
netstat -nltp | grep 22
n:不反解

l:listen
t:tcp
p:,;列出程式

ssh 的用法
ssh 電腦名稱(會先用IPV6連,再用IPv4連

ssh -4l 電腦名稱
-4 強迫用IPV4
-l 指定帳號

咦~~~,為何無法連上 IPv6 的 OpenSSH Server?


請別忘了修改 /etc/init.d/rc.local(B2D Server 適用)或 /etc/rc.local(OB2D 適用):

 # 加入貴校的 IPv6 來源網段或 IP

# /sbin/ip6tables -A INPUT -p tcp -s IPv6 來源網段或 IP --dport 22 -j ACCEPT

# 以下開放給教網中心全域皆可登入,其它地方則拒絕連線

/sbin/ip6tables -A INPUT -p tcp -s 2001:288:7400::/48 --dport 22 -j ACCEPT


把學校網段加入開放範圍
/sbin/ip6tables -A INPUT -p tcp -s 2001:288:75d8::/48 --dport 22 -j ACCEPT
/sbin/ip6tables -A INPUT -p tcp --dport 22 -j DROP

apache2
預設即支援ipv6
檢查

netstat -nltp | grep 80

vsftp 啟用IPV6
vi /etc/vsftpd.conf

#listen=YES
listen_ipv6=YES

service vsftpd restart


/etc/init.d/vsftpd restart

檢查
netstat -nltp|grep 21


Postfix
vi /etc/postfix/main.cf


加入以下設定:
inet_protocols = ipv4, ipv6

重新啟動 postfix 即可:
service postfix restart

/etc/init.d/postfix restart

查看:
netstat -nltp|grep 25

IPv6 POP3/IMAP
vi /etc/xinetd.d/pop3

service pop-3
{
disable = no
flags = IPv6 <--- 加入這一列
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.qpopper
server_args = -f /etc/qpopper.conf
}

service xinetd restart
查看:
netstat -nltp |grep 110
若有出現 tcp6,表示已有支援 IPv6 的 Qpopper POP3 Server 了。
tcp6 0 0 :::110 :::* LISTEN 20960/xinetd


也可以改換成 Dovecot 的 POP3 Server:
1. 安裝 Dovecot POP3 Server
apt-get update
apt-get install dovecot-pop3d
2. 修改 /etc/dovecot/dovecot.conf:
protocols = pop3
listen = [::]

查看:
netstat -nltp | grep 110
若有出現 tcp6,表示已有支援 IPv6 的 POP3 Server 了。
tcp6 0 0 :::110 :::* LISTEN 19576/dovecot

若欲架設 IMAP Server,可安裝 dovecot:
1. 安裝 Dovecot IMAP Server
apt-get update
apt-get install dovecot-imapd
2. 修改 /etc/dovecot/dovecot.conf:
protocols = imap
listen = [::]

IPv6 DNS Server
修改 /etc/bind/named.conf,加入以下設定:

options {
directory "/etc/bind";
allow-transfer {
192.168.1.187; // Secondary DNS
};
listen-on-v6 { any; }; <--- 加入這一列
};

重新啟動 bind9:
service bind9 restart

/etc/init.d/bind9 restart

查看:
netstat -nlap | grep 53

測試一下
正解
dig @163.26.174.1 ftp3.tnc.edu.tw AAAA

反解
dig @163.26.174.1 -x 2001:288:7400:7401::3 AAAA

維護 IPv6 DNS
主要設定檔部份範例內容如下:(以大橋國小為例)

options {
directory "/etc/bind";
allow-transfer {
163.26.174.2; // Secondary DNS
};
listen-on-v6 { any; };
};

// ::1 的反解檔

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{

type master;
file "rev.local6";
};

// 2001.288.75d8 的反解檔
zone "8.d.5.7.8.8.2.0.1.0.0.2.ip6.arpa." {
type master;
file "2001.288.75d8.rev";
};


維護正解檔

dns             IN      A       163.26.197.1 
IN      AAAA    2001:288:750b::1    //加入這一列
 

維護反解檔

2001.288.75d8.rev 部份範例內容如下:(以大橋國小為例)

$ORIGIN 8.b.5.7.8.8.2.0.1.0.0.2.ip6.arpa.
@ IN SOA dns.dc2es.tnc.edu.tw. admin.dns.dc2es.tnc.edu.tw. (1 15m 5m 30d 1h)
IN NS dns.dc2es.tnc.edu.tw.
;;
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR dns.dc2es.tnc.edu.tw.


rev.local6 檔: 「::1」 的反解檔

$TTL 86400
@ IN SOA dns.mdjh.tnc.edu.tw. admin.dns.mdjh.tnc.edu.tw. (1 15m 5m 30d 1h)
IN NS dns.mdjh.tnc.edu.tw.
;;
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. IN PTR localhost.


注意! (1 15m 5m 30d 1h) 中的 1 為序號,往後若有修改本檔,記得序號要加 1。

DNS 檢查測試


修改 zone files 之後,要做三件事:
重新啟動 bind9。
檢查是否有發生錯誤。
接著要測試查詢是否正常。


重新啟動:

service bind9 restart 或 /etc/init.d/bind9 restart

檢查:

tail /var/log/daemon.log


測試查詢功能:

1. 查正解:

dig dns.dc2es.tnc.edu.tw AAAA


2. 查反解:

dig -x 2001:288:75d8::1



3. 查 localhost:

dig localhost AAAA


4. 查 ::1 反解:
dig -x ::1


留言

這個網誌中的熱門文章

工作站與主要網域間的信任關係失敗解決方式