Linux局域網(wǎng)路由新手指南:第2部分
上周 我們學(xué)習(xí)了 IPv4 地址 和如何使用管理員不可或缺的工具 —— ipcalc
,今天我們繼續(xù)學(xué)習(xí)更精彩的內(nèi)容:局域網(wǎng)路由器。
VirtualBox 和 KVM 是測(cè)試路由的好工具,在本文中的所有示例都是在 KVM 中執(zhí)行的。如果你喜歡使用物理硬件去做測(cè)試,那么你需要三臺(tái)計(jì)算機(jī):一臺(tái)用作路由器,另外兩臺(tái)用于表示兩個(gè)不同的網(wǎng)絡(luò)。你也需要兩臺(tái)以太網(wǎng)交換機(jī)和相應(yīng)的線纜。
我們假設(shè)這個(gè)示例是一個(gè)有線以太局域網(wǎng),為了更符合真實(shí)使用場(chǎng)景,我們將假設(shè)有一些橋接的無(wú)線接入點(diǎn),當(dāng)然我并不會(huì)使用這些無(wú)線接入點(diǎn)做任何事情。(我也不會(huì)去嘗試所有的無(wú)線路由器,以及使用一個(gè)移動(dòng)寬帶設(shè)備連接到以太網(wǎng)的局域網(wǎng)口進(jìn)行混合組網(wǎng),因?yàn)樗鼈冃枰M(jìn)一步的安裝和設(shè)置)
網(wǎng)段
最簡(jiǎn)單的網(wǎng)段是兩臺(tái)計(jì)算機(jī)連接在同一個(gè)交換機(jī)上的相同地址空間中。這樣兩臺(tái)計(jì)算機(jī)不需要路由器就可以相互通訊。這就是我們常說(shuō)的術(shù)語(yǔ) —— “廣播域”,它表示所有在相同的網(wǎng)絡(luò)中的一組主機(jī)。它們可能連接到一臺(tái)單個(gè)的以太網(wǎng)交換機(jī)上,也可能是連接到多臺(tái)交換機(jī)上。一個(gè)廣播域可以包括通過(guò)以太網(wǎng)橋連接的兩個(gè)不同的網(wǎng)絡(luò),通過(guò)網(wǎng)橋可以讓兩個(gè)網(wǎng)絡(luò)像一個(gè)單個(gè)網(wǎng)絡(luò)一樣運(yùn)轉(zhuǎn)。無(wú)線訪問(wèn)點(diǎn)一般是橋接到有線以太網(wǎng)上。
一個(gè)廣播域僅當(dāng)在它們通過(guò)一臺(tái)網(wǎng)絡(luò)路由器連接的情況下,才可以與不同的廣播域進(jìn)行通訊。
簡(jiǎn)單的網(wǎng)絡(luò)
以下示例的命令并不是***生效的,重啟之后你所做的改變將會(huì)消失。
一個(gè)廣播域需要一臺(tái)路由器才可以與其它廣播域通訊。我們使用兩臺(tái)計(jì)算機(jī)和 ip
命令來(lái)解釋這些。我們的兩臺(tái)計(jì)算機(jī)是 192.168.110.125 和 192.168.110.126,它們都插入到同一臺(tái)以太網(wǎng)交換機(jī)上。在 VirtualBox 或 KVM 中,當(dāng)你配置一個(gè)新網(wǎng)絡(luò)的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè)虛擬交換機(jī),因此,當(dāng)你分配一個(gè)網(wǎng)絡(luò)到虛擬虛擬機(jī)上時(shí),就像是插入一個(gè)交換機(jī)一樣。使用 ip addr show
去查看你的地址和網(wǎng)絡(luò)接口名字?,F(xiàn)在,這兩臺(tái)主機(jī)可以互 ping 成功。
現(xiàn)在,給其中一臺(tái)主機(jī)添加一個(gè)不同網(wǎng)絡(luò)的地址:
# ip addr add 192.168.120.125/24 dev ens3
你可以指定一個(gè)網(wǎng)絡(luò)接口名字,在示例中它的名字是 ens3
。這不需要去添加一個(gè)網(wǎng)絡(luò)前綴,在本案例中,它是 /24
,但是顯式地添加它并沒(méi)有什么壞處。你可以使用 ip
命令去檢查你的配置。下面的示例輸出為了清晰其見(jiàn)進(jìn)行了刪減:
$ ip addr show
ens3:
inet 192.168.110.125/24 brd 192.168.110.255 scope global dynamic ens3
valid_lft 875sec preferred_lft 875sec
inet 192.168.120.125/24 scope global ens3
valid_lft forever preferred_lft forever
主機(jī)在 192.168.120.125 上可以 ping 它自己(ping 192.168.120.125
),這是對(duì)你的配置是否正確的一個(gè)基本校驗(yàn),這個(gè)時(shí)候第二臺(tái)計(jì)算機(jī)就已經(jīng)不能 ping 通那個(gè)地址了。
現(xiàn)在我們需要做一些網(wǎng)絡(luò)變更。添加第三臺(tái)主機(jī)作為路由器。它需要兩個(gè)虛擬網(wǎng)絡(luò)接口并添加第二個(gè)虛擬網(wǎng)絡(luò)。在現(xiàn)實(shí)中,你的路由器必須使用一個(gè)靜態(tài) IP 地址,但是現(xiàn)在,我們可以讓 KVM 的 DHCP 服務(wù)器去為它分配地址,所以,你僅需要兩個(gè)虛擬網(wǎng)絡(luò):
- ***個(gè)網(wǎng)絡(luò):192.168.110.0/24
- 第二個(gè)網(wǎng)絡(luò):192.168.120.0/24
接下來(lái)你的路由器必須配置去轉(zhuǎn)發(fā)數(shù)據(jù)包。數(shù)據(jù)包轉(zhuǎn)發(fā)默認(rèn)是禁用的,你可以使用 sysctl
命令去檢查它的配置:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
0
意味著禁用,使用如下的命令去啟用它:
# echo 1 > /proc/sys/net/ipv4/ip_forward
接下來(lái)配置你的另一臺(tái)主機(jī)做為第二個(gè)網(wǎng)絡(luò)的一部分,你可以通過(guò)將原來(lái)在 192.168.110.0/24 的網(wǎng)絡(luò)中的一臺(tái)主機(jī)分配到 192.168.120.0/24 虛擬網(wǎng)絡(luò)中,然后重新啟動(dòng)兩個(gè) “連網(wǎng)的” 主機(jī),注意不是路由器。(或者重啟動(dòng)主機(jī)上的網(wǎng)絡(luò)服務(wù);我年齡大了還有點(diǎn)懶,我記不住那些重啟服務(wù)的奇怪命令,還不如重啟主機(jī)來(lái)得干脆。)重啟后各臺(tái)機(jī)器的地址應(yīng)該如下所示:
- 主機(jī) 1: 192.168.110.125
- 主機(jī) 2: 192.168.120.135
- 路由器: 192.168.110.126 和 192.168.120.136
現(xiàn)在可以去隨意 ping 它們,可以從任何一臺(tái)計(jì)算機(jī)上 ping 到任何一臺(tái)其它計(jì)算機(jī)上。使用虛擬機(jī)和各種 Linux 發(fā)行版做這些事時(shí),可能會(huì)產(chǎn)生一些意想不到的問(wèn)題,因此,有時(shí)候 ping 的通,有時(shí)候 ping 不通。不成功也是一件好事,這意味著你需要?jiǎng)邮秩?chuàng)建一條靜態(tài)路由。首先,查看已經(jīng)存在的路由表。主機(jī) 1 和主機(jī) 2 的路由表如下所示:
$ ip route show
default via 192.168.110.1 dev ens3 proto static metric 100
192.168.110.0/24 dev ens3 proto kernel scope link src 192.168.110.164 metric 100
$ ip route show
default via 192.168.110.1 dev ens3 proto static metric 100
default via 192.168.120.1 dev ens3 proto static metric 101
169.254.0.0/16 dev ens3 scope link metric 1000
192.168.110.0/24 dev ens3 proto kernel scope link
src 192.168.110.126 metric 100
192.168.120.0/24 dev ens9 proto kernel scope link
src 192.168.120.136 metric 100
這顯示了我們使用的由 KVM 分配的缺省路由。169.* 地址是自動(dòng)鏈接的本地地址,我們不去管它。接下來(lái)我們看兩條路由,這兩條路由指向到我們的路由器。你可以有多條路由,在這個(gè)示例中我們將展示如何在主機(jī) 1 上添加一個(gè)非默認(rèn)路由:
# ip route add 192.168.120.0/24 via 192.168.110.126 dev ens3
這意味著主機(jī) 1 可以通過(guò)路由器接口 192.168.110.126 去訪問(wèn) 192.168.110.0/24 網(wǎng)絡(luò)。看一下它們是如何工作的?主機(jī) 1 和路由器需要連接到相同的地址空間,然后路由器轉(zhuǎn)發(fā)到其它的網(wǎng)絡(luò)。
以下的命令去刪除一條路由:
# ip route del 192.168.120.0/24
在真實(shí)的案例中,你不需要像這樣手動(dòng)配置一臺(tái)路由器,而是使用一個(gè)路由器守護(hù)程序,并通過(guò) DHCP 做路由器通告,但是理解基本原理很重要。接下來(lái)我們將學(xué)習(xí)如何去配置一個(gè)易于使用的路由器守護(hù)程序來(lái)為你做這些事情。