作者 | Carla Schroder
譯者 | qhwdw ? ? ? ? ? 共計翻譯:112 篇 貢獻時間:199 天
前面我們學習了 IPv6 路由[1]。現在我們繼續深入學習 Linux 中的 IPv4 路由的基礎知識。我們從硬體概述、作業系統和 IPv4 地址的基礎知識開始,下週我們將繼續學習它們如何配置,以及測試路由。
區域網路由器硬體
Linux 實際上是一個網路作業系統,一直都是,從一開始它就有內建的網路功能。要將你的區域網連入因特網,構建一個區域網路由器比起構建閘道器路由器要簡單的多。你不要太過於執念安全或者防火牆規則,對於處理網路地址轉換(NAT)它還是比較複雜的,NAT是 IPv4 的一個痛點。我們為什麼不放棄 IPv4 去轉到 IPv6 呢?這樣將使網路管理員的工作更加簡單。
有點跑題了。從理論上講,你的 Linux 路由器是一個至少有兩個網路介面的小型機器。Linux Gizmos 有一個很大的單板機名單:98 個開放規格、適於駭客的 SBC 的目錄[2]。你能夠使用一個很老的膝上型電腦或者臺式計算機。你也可以使用一個緊湊型計算機,像 ZaReason Zini 或者 System76 Meerkat 一樣,雖然這些有點貴,差不多要 $600。但是它們又結實又可靠,並且你不用在 Windows 許可證上浪費錢。
如果對路由器的要求不高,使用樹莓派 3 Model B 作為路由器是一個非常好的選擇。它有一個 10/100 乙太網埠,板載 2.4GHz 的 802.11n 無線網絡卡,並且它還有四個 USB 埠,因此你可以插入多個 USB 網絡卡。USB 2.0 和低速板載網絡卡可能會讓樹莓派變成你的網路上的瓶頸,但是,你不能對它期望太高(畢竟它只有 $35,既沒有儲存也沒有電源)。它支援很多種風格的 Linux,因此你可以選擇使用你喜歡的版本。基於 Debian 的樹莓派是我的最愛。
作業系統
你可以在你選擇的硬體上安裝將你喜歡的 Linux 的簡化版,因為定製的路由器作業系統,比如 OpenWRT、 Tomato、DD-WRT、Smoothwall、Pfsense 等等,都有它們自己的非標準介面。我的觀點是,沒有必要這麼麻煩,它們對你並沒有什麼幫助。儘量使用標準的 Linux 工具,因為你只需要學習它們一次就夠了。
Debian 的網路安裝映象大約有 300MB 大小,並且支援多種架構,包括 ARM、i386、amd64 和 armhf。Ubuntu 的伺服器網路安裝映象也小於 50MB,這樣你就可以控制你要安裝哪些包。Fedora、Mageia、和 openSUSE 都提供精簡的網路安裝映象。如果你需要創意,你可以瀏覽 Distrowatch[3]。
路由器能做什麼
我們需要網路路由器做什麼?一個路由器連線不同的網路。如果沒有路由,那麼每個網路都是相互隔離的,所有的悲傷和孤獨都沒有人與你分享,所有節點只能孤獨終老。假設你有一個 192.168.1.0/24 和一個 192.168.2.0/24 網路。如果沒有路由器,你的兩個網路之間不能相互溝通。這些都是 C 類的私有地址,它們每個都有 254 個可用網路地址。使用 ipcalc
可以非常容易地得到它們的這些資訊:
$ ipcalc 192.168.1.0/24
Address: 192.168.1.0 11000000.10101000.00000001. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.1.0/24 11000000.10101000.00000001. 00000000
HostMin: 192.168.1.1 11000000.10101000.00000001. 00000001
HostMax: 192.168.1.254 11000000.10101000.00000001. 11111110
Broadcast: 192.168.1.255 11000000.10101000.00000001. 11111111
Hosts/Net: 254 Class C, Private Internet
我喜歡 ipcalc
的二進位制輸出資訊,它更加可視地表示了掩碼是如何工作的。前三個八位組表示了網路地址,第四個八位組是主機地址,因此,當你分配主機地址時,你將 “掩蓋” 掉網路地址部分,只使用剩餘的主機部分。你的兩個網路有不同的網路地址,而這就是如果兩個網路之間沒有路由器它們就不能互相通訊的原因。
每個八位組一共有 256 位元組,但是它們並不能提供 256 個主機地址,因為第一個和最後一個值 ,也就是 0 和 255,是被保留的。0 是網路標識,而 255 是廣播地址,因此,只有 254 個主機地址。ipcalc
可以幫助你很容易地計算出這些。
當然,這並不意味著你不能有一個結尾是 0 或者 255 的主機地址。假設你有一個 16 位的字首:
$ ipcalc 192.168.0.0/16
Address: 192.168.0.0 11000000.10101000. 00000000.00000000
Netmask: 255.255.0.0 = 16 11111111.11111111. 00000000.00000000
Wildcard: 0.0.255.255 00000000.00000000. 11111111.11111111
=>
Network: 192.168.0.0/16 11000000.10101000. 00000000.00000000
HostMin: 192.168.0.1 11000000.10101000. 00000000.00000001
HostMax: 192.168.255.254 11000000.10101000. 11111111.11111110
Broadcast: 192.168.255.255 11000000.10101000. 11111111.11111111
Hosts/Net: 65534 Class C, Private Internet
ipcalc
列出了你的第一個和最後一個主機地址,它們是 192.168.0.1 和 192.168.255.254。你是可以有以 0 或者 255 結尾的主機地址的,例如,192.168.1.0 和 192.168.0.255,因為它們都在最小主機地址和最大主機地址之間。
不論你的地址塊是私有的還是公共的,這個原則同樣都是適用的。不要羞於使用 ipcalc
來幫你計算地址。
CIDR
CIDR(無類域間路由)就是透過可變長度的子網掩碼來擴充套件 IPv4 的。CIDR 允許對網路空間進行更精細地分割。我們使用 ipcalc
來演示一下:
$ ipcalc 192.168.1.0/22
Address: 192.168.1.0 11000000.10101000.000000 01.00000000
Netmask: 255.255.252.0 = 22 11111111.11111111.111111 00.00000000
Wildcard: 0.0.3.255 00000000.00000000.000000 11.11111111
=>
Network: 192.168.0.0/22 11000000.10101000.000000 00.00000000
HostMin: 192.168.0.1 11000000.10101000.000000 00.00000001
HostMax: 192.168.3.254 11000000.10101000.000000 11.11111110
Broadcast: 192.168.3.255 11000000.10101000.000000 11.11111111
Hosts/Net: 1022 Class C, Private Internet
網路掩碼並不侷限於整個八位組,它可以跨越第三和第四個八位組,並且子網部分的範圍可以是從 0 到 3,而不是非得從 0 到 255。可用主機地址的數量並不一定是 8 的倍數,因為它是由整個八位組定義的。
給你留一個家庭作業,複習 CIDR 和 IPv4 地址空間是如何在公共、私有和保留塊之間分配的,這個作業有助你更好地理解路由。一旦你掌握了地址的相關知識,配置路由器將不再是件複雜的事情了。
從 理解 IP 地址和 CIDR 圖表[4]、IPv4 私有地址空間和過濾[5]、以及 IANA IPv4 地址空間註冊[6] 開始。接下來的我們將學習如何建立和管理路由器。
透過來自 Linux 基金會和 edX 的免費課程 “Linux 入門”[7]學習更多 Linux 知識。
via: https://www.linux.com/learn/intro-to-linux/2018/2/linux-lan-routing-beginners-part-1
作者:Carla Schroder[9] 譯者:qhwdw 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出