作者 | Carla Schroder
譯者 | qhwdw ? ? ? ? ? 共計翻譯:105 篇 貢獻時間:177 天
在這個兩篇的系列當中,我們將學習關於 IPv6 私有地址的知識,以及如何在 KVM 中配置測試網路。
要理解 IPv6 地址是如何工作的,沒有比親自動手去實踐更好的方法了,在 KVM 中配置一個小的測試實驗室非常容易 —— 也很有趣。這個系列的文章共有兩個部分,我們將學習關於 IPv6 私有地址的知識,以及如何在 KVM 中配置測試網路。
QEMU/KVM/虛擬機器管理器
我們先來瞭解什麼是 KVM。在這裡,我將使用 KVM 來表示 QEMU、KVM、以及虛擬機器管理器的一個組合,虛擬機器管理器在 Linux 發行版中一般都內建了。簡單解釋就是,QEMU 模擬硬體,而 KVM 是一個核心模組,它在你的 CPU 上建立一個 “訪客領地”,並去管理它們對記憶體和 CPU 的訪問。虛擬機器管理器是一個涵蓋虛擬化和管理程式的圖形工具。
但是你不能被圖形介面下 “點選” 操作的方式 “纏住” ,因為,它們也有命令列工具可以使用 —— 比如 virsh
和 virt-install
。
如果你在使用 KVM 方面沒有什麼經驗,你可以從 在 KVM 中建立虛擬機器:第 1 部分[1] 和 在 KVM 中建立虛擬機器:第 2 部分 – 網路[2] 開始學起。
IPv6 唯一本地地址
在 KVM 中配置 IPv6 網路與配置 IPv4 網路很類似。它們的主要不同在於這些怪異的長地址。上一次[3],我們討論了 IPv6 地址的不同型別。其中有一個 IPv6 單播地址類,fc00::/7
(詳細情況請查閱 RFC 4193[4]),它類似於 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 地址生成器[5]。你可以線上找到許多這樣很酷的工具。你可以使用它來為你建立一個新地址,或者使用它在你的現有全域性 ID 下為你建立子網。
下週我們將講解如何在 KVM 中配置這些 IPv6 的地址,並現場測試它們。
透過來自 Linux 基金會和 edX 的免費線上課程 “Linux 入門”[6] 學習更多的 Linux 知識。
via: https://www.linux.com/learn/intro-to-linux/2017/11/testing-ipv6-networking-kvm-part-1
作者:Carla Schroder[8] 譯者:qhwdw 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出