在 KVM 中測試 IPv6 網路(第 1 部分)
要理解 IPv6 地址是如何工作的,沒有比親自動手去實踐更好的方法了,在 KVM 中配置一個小的測試實驗室非常容易 —— 也很有趣。這個系列的文章共有兩個部分,我們將學習關於 IPv6 私有地址的知識,以及如何在 KVM 中配置測試網路。
QEMU/KVM/虛擬機管理器
我們先來了解什麼是 KVM。在這裡,我將使用 KVM 來表示 QEMU、KVM、以及虛擬機管理器的一個組合,虛擬機管理器在 Linux 發行版中一般都內置了。簡單解釋就是,QEMU 模擬硬體,而 KVM 是一個內核模塊,它在你的 CPU 上創建一個 「訪客領地」,並去管理它們對內存和 CPU 的訪問。虛擬機管理器是一個涵蓋虛擬化和管理程序的圖形工具。
但是你不能被圖形界面下 「點擊」 操作的方式 「纏住」 ,因為,它們也有命令行工具可以使用 —— 比如 virsh
和 virt-install
。
如果你在使用 KVM 方面沒有什麼經驗,你可以從 在 KVM 中創建虛擬機:第 1 部分 和 在 KVM 中創建虛擬機:第 2 部分 - 網路 開始學起。
IPv6 唯一本地地址
在 KVM 中配置 IPv6 網路與配置 IPv4 網路很類似。它們的主要不同在於這些怪異的長地址。上一次,我們討論了 IPv6 地址的不同類型。其中有一個 IPv6 單播地址類,fc00::/7
(詳細情況請查閱 RFC 4193),它類似於 IPv4 中的私有地址 —— 10.0.0.0/8
、172.16.0.0/12
、和 192.168.0.0/16
。
下圖解釋了這個唯一本地地址空間的結構。前 48 位定義了前綴和全局 ID,隨後的 16 位是子網,剩餘的 64 位是介面 ID:
| 7 bits |1| 40 bits | 16 bits | 64 bits |
+--------+-+------------+-----------+----------------------------+
| Prefix |L| Global ID | Subnet ID | Interface ID |
+--------+-+------------+-----------+----------------------------+
下面是另外一種表示方法,它可能更有助於你理解這些地址是如何管理的:
| Prefix | Global ID | Subnet ID | Interface ID |
+--------+--------------+-------------+----------------------+
| fd | 00:0000:0000 | 0000 | 0000:0000:0000:0000 |
+--------+--------------+-------------+----------------------+
fc00::/7
共分成兩個 /8
地址塊,fc00::/8
和 fd00::/8
。fc00::/8
是為以後使用保留的。因此,唯一本地地址通常都是以 fd
開頭的,而剩餘部分是由你使用的。L
位,也就是第八位,它總是設置為 1
,這樣它可以表示為 fd00::/8
。設置為 0
時,它就表示為 fc00::/8
。你可以使用 subnetcalc
來看到這些東西:
$ subnetcalc fd00::/8 -n
Address = fd00::
fd00 = 11111101 00000000
$ subnetcalc fc00::/8 -n
Address = fc00::
fc00 = 11111100 00000000
RFC 4193 要求地址必須隨機產生。你可以用你選擇的任何方法來造出個地址,只要它們以 fd
打頭就可以,因為 IPv6 範圍非常大,它不會因為地址耗盡而無法使用。當然,最佳實踐還是按 RFC 的要求來做。地址不能按順序分配或者使用眾所周知的數字。RFC 4193 包含一個構建偽隨機地址生成器的演算法,或者你可以找到各種在線生成器。
唯一本地地址不像全局單播地址(它由你的網際網路服務提供商分配)那樣進行中心化管理,即使如此,發生地址衝突的可能性也是非常低的。當你需要去合併一些本地網路或者想去在不相關的私有網路之間路由時,這是一個非常好的優勢。
在同一個子網中,你可以混用唯一本地地址和全局單播地址。唯一本地地址是可路由的,並且它並不會因此要求對路由器做任何調整。但是,你應該在你的邊界路由器和防火牆上配置為不允許它們離開你的網路,除非是在不同位置的兩個私有網路之間。
RFC4193 建議,不要混用全局單播地址的 AAAA 和 PTR 記錄,因為雖然它們重複的機率非常低,但是並不能保證它們就是獨一無二的。就像我們使用的 IPv4 地址一樣,要保持你本地的私有名稱服務和公共名稱服務的獨立。將本地名稱服務使用的 Dnsmasq 和公共名稱服務使用的 BIND 組合起來,是一個在 IPv4 網路上經過實戰檢驗的可靠組合,這個組合也同樣適用於 IPv6 網路。
偽隨機地址生成器
在線地址生成器的一個示例是 本地 IPv6 地址生成器。你可以在線找到許多這樣很酷的工具。你可以使用它來為你創建一個新地址,或者使用它在你的現有全局 ID 下為你創建子網。
下周我們將講解如何在 KVM 中配置這些 IPv6 的地址,並現場測試它們。
通過來自 Linux 基金會和 edX 的免費在線課程 「Linux 入門」 學習更多的 Linux 知識。
via: https://www.linux.com/learn/intro-to-linux/2017/11/testing-ipv6-networking-kvm-part-1
作者:Carla Schroder 譯者:qhwdw 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive