測試環境為 Windows server 2016 x64 (虛擬機)
在設定 DHCP 前,需在 Control Panel\Network and Internet\Network and Sharing Center 設定好 Static IP (v4 與 v6)
- IPv4 – 192.6.1.1/24
- IPv6 – 3ffe:501:ffff:100::1/64
IPv6 使用 128Bit 的位址空間,其中的 3ffe:501:ffff:100::1 就是 IPv6 的簡寫,簡寫規則如下:- 每 32Bit 如開頭之4bit表示為0,即可省略,若32Bit全為0,則可簡寫為0
- 若連續完整之32Bit段落皆為 0000,則可全省略,簡寫為::,但以一次為限
而 “64” 就類似 IPV4 的 subnet mask.
設定好可以透過 ipconfig 來檢視一下.
C:\Users\Administrator>ipconfig Windows IP Configuration Ethernet adapter Ethernet0: Connection-specific DNS Suffix . : localdomain Link-local IPv6 Address . . . . . : fe80::dc:8a5e:2eee:5b0f%2 IPv4 Address. . . . . . . . . . . : 192.168.95.199 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.95.2 Ethernet adapter Ethernet1: Connection-specific DNS Suffix . : IPv6 Address. . . . . . . . . . . : 3ffe:501:ffff:100::1 Link-local IPv6 Address . . . . . : fe80::c054:2187:4d98:4840%6 IPv4 Address. . . . . . . . . . . : 192.6.1.1 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 0.0.0.0 Tunnel adapter isatap.localdomain: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Tunnel adapter isatap.{56095FF2-3CE5-43D7-AB57-A92397B456F8}: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :
於對於 IP v6 有興趣的請參考關於 IPv6 的位址指派 (address auto-configuration) ,可以區分為下列幾種.
- Link Local (預設值,不須設定)
IPv6 中每個網卡都會有屬於自己的 link-local address,這位址跟網卡的 MAC Address 是相關的.可以參考 https://benjr.tw/17341 - 透過 Router Advertisement (RA)
RA (Router Advertisement) 這功能通常是由 Router 來提供. - 透過 Dynamic Host Configuration Protocol v6 (DHCPv6)
不使用 RA 的方式,須透過 DHCPv6 來得到 IPv6 位址.接下來介紹.
安裝 DHCP
透過 Server Manager / Add roles and features / Role-based or feature-based installation 新增 DHCP Server
設定 DHCP IPv4
Server Manager / Servers / Server Name 右鍵 選擇 DHCP Manager 來新增 IPv4 scope
Exclusion , Router , DNS , WINS 就看需要.
那 Client 端是如何透過 DHCPv4 來獲得 IPv4 資訊呢!!
DHCP Client 向 DHCP Server 要求 IP 時主要的四個動作 ( DHCPDISCOVER , DHCPOFFER , DHCPREQUEST , DHCPACK ),如果能看到這四個動作,這就代表 Client 已經成功獲得 IP ,下面 Client 是正確透過 DHCP 獲取 IP 的過程.
15:42:31.013004 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:02:b3:af:b2:82, length 314 15:42:32.013978 IP 192.10.0.2.67 > 192.10.0.20.68: BOOTP/DHCP, Reply, length 300 15:42:32.014176 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:02:b3:af:b2:82, length 320 15:42:32.039599 IP 192.10.0.2.67 > 192.10.0.20.68: BOOTP/DHCP, Reply, length 300
主要 DHCP Client (Port 68 , 使用廣播封包 broadcast ) 與 DHCP Server (Port 67) 透過四個動作 ( DHCPDISCOVER , DHCPOFFER , DHCPREQUEST , DHCPACK ) 來獲得 IP (使用 UDP).
設定 DHCP IPv6
IPv6 的位址長度為 128 位元,是由兩部分的位址組成, 網路位址(Network Prefix) + 主機位址(Host ID),而這 Prefix 就類似於 IPv4 的 Netmask.以 Prefix 64 為例 (寫法為 /64 ) 就代表128位元的位址中,前 64 位元為網路位址(Network Prefix),前面設定的 Static IPv6 的 Prefix 為 64,所以這邊一樣為 /64 prefixes.
DHCP6 Range 為 3ffe:501:ffff:100:0:0:0:1 ~ 3ffe:501:ffff:100:FFFF:FFFF:FFFF:FFFF
那 Client 端是如何透過 DHCPv6 來獲得 IPv6 資訊呢!!
類似於 IPv4 的 DHCP ,客戶端主要使用 UDP port 546 而服務器端使用 UDP port 547 .雖類似於 DHCPv4 但不同的是 IPv6 已經不使用 Brocast 的方式.
假如 Server 的 link-local address 是 fe80::0011:22ff:fe33:5566/64
以及 client 的 link-local address 是 fe80::aabb:ccff:fedd:eeff/64
主要會透過下面的步驟讓 Client 得到 IP (v6).
過程中會使用 IPv6 multicast addresses
ff02::1:2 – All DHCP servers and relay agents on the local network segment (defined in RFC 3315)
|
這些資料都可以在 RFC 3315 / Dynamic Host Configuration Protocol for IPv6 (DHCPv6) 找到.