和其他機器通訊,就需要一個通訊地址凉倚,要給網(wǎng)卡配置這么一個地址。
1 配置IP地址
可以使用ifconfig嫂沉,也可以使用ip addr稽寒。設(shè)置好了以后,用這兩個命令趟章,將網(wǎng)卡up一下杏糙,就可以開始工作了。
1.1 net-tools
$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
1.2 iproute2
$ sudo ip addr add 10.0.0.1/24 dev eth1
$ sudo ip link set up eth1
如果配置的是一個和誰都不搭嘎的地址呢蚓土?
例如宏侍,旁邊的機器都是192.168.1.x,我非得配置一個16.158.23.6蜀漆,會出現(xiàn)什么現(xiàn)象呢谅河?
不會出現(xiàn)任何現(xiàn)象,就是包發(fā)不出去唄
為什么發(fā)不出去呢嗜愈?
192.168.1.6 就在你這臺機器的旁邊旧蛾,甚至在同一交換機莽龟,而你把機器的地址設(shè)為 16.158.23.6
在這臺機器上蠕嫁,你企圖去ping 192.168.1.6,覺得只要將包發(fā)出去毯盈,同一個交換機的另一臺機器馬上就能收到剃毒,是嘛?
可Linux不是這樣的搂赋,沒你想得那么智能
你用肉眼看到那臺機器就在旁邊赘阀,它則需要根據(jù)自己的邏輯處理
只要是在網(wǎng)絡(luò)上跑的包,都是完整的脑奠,可以有下層沒上層基公,絕對不可能有上層沒下層
所以,它有自己的源IP地址 16.158.23.6宋欺,也有目標(biāo)IP地址 192.168.1.6轰豆,但包發(fā)不出去,這是因為MAC層還沒填
自己的MAC地址自己知道,但目標(biāo)MAC填啥呢齿诞?
是不是填 192.168.1.6 機器的MAC地址呢酸休?
當(dāng)然不是!
Linux會判斷要去的這個地址和我是一個網(wǎng)段嗎,或者和我的一個網(wǎng)卡是同一網(wǎng)段嗎祷杈?
只有是一個網(wǎng)段的斑司,它才會發(fā)送ARP請求,獲取MAC地址
如果發(fā)現(xiàn)不是呢但汞?
Linux默認(rèn)的邏輯宿刮,如果這是一個跨網(wǎng)段的調(diào)用互站,它不會直接將包發(fā)送到網(wǎng)絡(luò)上,而是將包發(fā)送到網(wǎng)關(guān)
如果配置了網(wǎng)關(guān)僵缺,Linux會獲取網(wǎng)關(guān)的MAC地址云茸,然后將包發(fā)出去
對于 192.168.1.6 機器,雖然路過家門的這個包谤饭,目標(biāo)IP是它标捺,但是無奈MAC地址不是它的,所以它的網(wǎng)卡是不會把包收進(jìn)去的
如果沒有配置網(wǎng)關(guān)呢揉抵?
那包壓根就發(fā)不出去
如果將網(wǎng)關(guān)配置為 192.168.1.6 呢亡容?
不可能,Linux不會讓你配置成功
因為 網(wǎng)關(guān)要和當(dāng)前的網(wǎng)絡(luò)至少一個網(wǎng)卡是同一個網(wǎng)段
怎能允你16.158.23.6的網(wǎng)關(guān)是192.168.1.6呢冤今?
所以闺兢,當(dāng)你需要手動配置一臺機器的網(wǎng)絡(luò)IP時,一定要好好問問你的網(wǎng)管
如果在機房里面戏罢,要去網(wǎng)管那申請屋谭,讓他給你分配一段正確的IP地址
當(dāng)然,真正配置的時候龟糕,一定不是直接用命令配置的桐磁,而是放在一個配置文件里面
不同系統(tǒng)的配置文件格式不同,但是無非就是CIDR讲岁、子網(wǎng)掩碼我擂、廣播地址和網(wǎng)關(guān)地址
2 DHCP - 動態(tài)主機配置協(xié)議
配置IP后一般不能變,配置一個服務(wù)端的機器還可以缓艳,但如果是客戶端的機器呢校摩?
我抱著一臺筆記本電腦在公司里走來走去,或者白天來晚上走阶淘,每次使用都要配置IP地址衙吩,那可怎么辦?還有人事溪窒、行政等非技術(shù)人員坤塞,如果公司所有的電腦都需要IT人員配置,肯定忙不過來啊霉猛。
需要有一個自動配置的協(xié)議尺锚,即動態(tài)主機配置協(xié)議(Dynamic Host Configuration Protocol),簡稱DHCP
那網(wǎng)管就輕松多了惜浅。只需要配置一段共享的IP地址
每一臺新接入的機器都通過DHCP協(xié)議瘫辩,來這個共享的IP地址里申請,然后自動配置好就可
等用完了,還回去伐厌,這樣其他的機器也能用承绸。
**數(shù)據(jù)中心里面的服務(wù)器,IP一旦配置好挣轨,基本不會變
這就相當(dāng)于買房自己裝修军熏。DHCP的方式就相當(dāng)于租房。你不用裝修卷扮,都是幫你配置好的荡澎。你暫時用一下,用完退租就可以了晤锹。**
3 DHCP的工作方式
當(dāng)一臺機器新加入一個網(wǎng)絡(luò)的時候摩幔,肯定啥情況都不知道,只知道自己的MAC地址
怎么辦鞭铆?先吼一句或衡,我來啦,有人嗎车遂?這時候的溝通基本靠“吼”
這一步封断,我們稱為DHCP Discover。
新來的機器使用IP地址 0.0.0.0 發(fā)送了一個廣播包舶担,目的IP地址為 255.255.255.255
廣播包封裝了UDP坡疼,UDP封裝了BOOTP
其實DHCP是BOOTP的增強版,但是如果去抓包的話柄沮,很可能看到的名稱還是BOOTP協(xié)議
在廣播包里回梧,新人大喊:我是新來的(Boot request)废岂,我的MAC地址是這個祖搓,我還沒有IP,誰能給租給我個IP地址湖苞!
-
格式就像
如果一個網(wǎng)管在網(wǎng)絡(luò)里面配置了DHCP Server拯欧,他就相當(dāng)于這些IP的管理員
立刻能知道來了一個“新人”
這個時候,我們可以體會MAC地址唯一的重要性了
當(dāng)一臺機器帶著自己的MAC地址加入一個網(wǎng)絡(luò)的時候财骨,MAC是它唯一的身份镐作,如果連這個都重復(fù)了,就沒辦法配置了隆箩。
只有MAC唯一该贾,IP管理員才能知道這是一個新人,需要租給它一個IP地址捌臊,這個過程我們稱為DHCP Offer
同時杨蛋,DHCP Server為此客戶保留為它提供的IP地址,從而不會為其他DHCP客戶分配此IP地址。
DHCP Offer的格式就像這樣逞力,里面有給新人分配的地址曙寡。
DHCP Server 仍然使用廣播地址作為目的地址
因為,此時請求分配IP的新人還沒有自己的IP
DHCP Server回復(fù)說寇荧,我分配一個可用的IP給你举庶,你看如何?
除此之外揩抡,服務(wù)器還發(fā)送了子網(wǎng)掩碼户侥、網(wǎng)關(guān)和IP地址租用期等信息。
新來的機器很開心峦嗤,它的“吼”得到了回復(fù)添祸,并且有人愿意租給它一個IP地址了,這意味著它可以在網(wǎng)絡(luò)上立足了
當(dāng)然更令人開心的是寻仗,如果有多個DHCP Server刃泌,這臺新機器會收到多個IP地址,簡直受寵若驚!!!
它會選擇其中一個DHCP Offer署尤,一般是最先到達(dá)的那個耙替,并且會向網(wǎng)絡(luò)發(fā)送一個DHCP Request廣播數(shù)據(jù)包,包中包含客戶端的MAC地址曹体、接受的租約中的IP地址俗扇、提供此租約的DHCP服務(wù)器地址等,并告訴所有DHCP Server它將接受哪一臺服務(wù)器提供的IP地址箕别,告訴其他DHCP服務(wù)器铜幽,謝謝你們的接納,并請求撤銷它們提供的IP地址串稀,以便提供給下一個IP租用請求者
還沒得到DHCP Server的最后確認(rèn)除抛,客戶端仍然使用0.0.0.0為源IP地址、255.255.255.255為目標(biāo)地址進(jìn)行廣播
在BOOTP里面母截,接受某個DHCP Server的分配的IP到忽。
當(dāng)DHCP Server接收到客戶機的DHCP request之后,會廣播返回給客戶機一個DHCP ACK消息包清寇,表明已經(jīng)接受客戶機的選擇喘漏,并將這一IP地址的合法租用信息和其他的配置信息都放入該廣播包,發(fā)給客戶機华烟,歡迎它加入網(wǎng)絡(luò)大家庭
最終租約達(dá)成的時候翩迈,還是需要廣播一下,讓大家都知道盔夜。
IP地址的收回和續(xù)租
既然是租房子负饲,就是有租期的搅方。租期到了,管理員就要將IP收回绽族。
如果不用的話姨涡,收回就收回了。就像你租房子一樣吧慢,如果還要續(xù)租的話涛漂,不能到了時間再續(xù)租,而是要提前一段時間給房東說
DHCP也是這樣
客戶機會在租期過去50%的時候检诗,直接向為其提供IP地址的DHCP Server發(fā)送DHCP request消息包
客戶機接收到該服務(wù)器回應(yīng)的DHCP ACK消息包匈仗,會根據(jù)包中所提供的新的租期以及其他已經(jīng)更新的TCP/IP參數(shù),更新自己的配置
這樣逢慌,IP租用更新就完成了悠轩。
網(wǎng)絡(luò)管理員不僅能自動分配IP地址,還能幫你自動安裝操作系統(tǒng)攻泼!
預(yù)啟動執(zhí)行環(huán)境(PXE)
數(shù)據(jù)中心里面的管理員可能一下子就拿到幾百臺空的機器火架,一個個安裝操作系統(tǒng),會累死的忙菠。
所以管理員希望的不僅僅是自動分配IP地址何鸡,還要自動安裝系統(tǒng)。裝好系統(tǒng)之后自動分配IP地址牛欢,直接啟動就能用了
安裝操作系統(tǒng)骡男,應(yīng)該有個光盤吧。數(shù)據(jù)中心里不能用光盤吧傍睹,想了一個辦法就是隔盛,可以將光盤里面要安裝的操作系統(tǒng)放在一個服務(wù)器上,讓客戶端去下載
但是客戶端放在哪里呢拾稳?它怎么知道去哪個服務(wù)器上下載呢吮炕?客戶端總得安裝在一個操作系統(tǒng)上呀,可是這個客戶端本來就是用來安裝操作系統(tǒng)的呀熊赖?
其實来屠,這個過程和操作系統(tǒng)啟動的過程有點兒像。
- 首先震鹉,啟動BIOS,讀取硬盤的MBR啟動扇區(qū),將GRUB啟動起來
- 然后將權(quán)力交給GRUB捆姜,GRUB加載內(nèi)核传趾、加載作為根文件系統(tǒng)的initramfs文件
- 再將權(quán)力交給內(nèi)核
- 最后內(nèi)核啟動,初始化整個操作系統(tǒng)泥技。
安裝操作系統(tǒng)的過程浆兰,只能插在BIOS啟動之后了
因為沒安裝系統(tǒng)之前,連啟動扇區(qū)都沒有。因而這個過程叫做預(yù)啟動執(zhí)行環(huán)境 (Pre-boot Execution Environment)簸呈,PXE
PXE協(xié)議分為客戶端和服務(wù)器端榕订,由于還沒有操作系統(tǒng),只能先把客戶端放在BIOS里面
當(dāng)計算機啟動時蜕便,BIOS把PXE客戶端調(diào)入內(nèi)存里面劫恒,就可以連接到服務(wù)端做一些操作了。
首先轿腺,PXE客戶端自己也需要有個IP地址
因為PXE的客戶端啟動起來两嘴,就可以發(fā)送一個DHCP的請求,讓DHCP Server給它分配一個地址族壳。PXE客戶端有了自己的地址憔辫,那它怎么知道PXE服務(wù)器在哪里呢?對于其他的協(xié)議仿荆,都好辦贰您,要么人告訴他
例如,告訴瀏覽器要訪問的IP地址拢操,或者在配置中告訴它枉圃;例如,微服務(wù)之間的相互調(diào)用庐冯。
但是PXE客戶端啟動的時候孽亲,啥都沒有
好在DHCP Server除了分配IP地址以外,還可以做一些其他的事情展父。這里有一個DHCP Server的一個樣例配置:
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option time-offset -18000;
default-lease-time 21600;
max-lease-time 43200;
range dynamic-bootp 192.168.1.240 192.168.1.250;
filename "pxelinux.0";
next-server 192.168.1.180;
}
按照上面的原理返劲,默認(rèn)的DHCP Server是需要配置的,無非是我們配置IP的時候所需要的IP地址段栖茉、子網(wǎng)掩碼篮绿、網(wǎng)關(guān)地址、租期等
如果想使用PXE吕漂,則需要配置next-server亲配,指向PXE服務(wù)器的地址,另外要配置初始啟動文件filename
這樣PXE客戶端啟動之后惶凝,發(fā)送DHCP請求之后吼虎,除了能得到一個IP地址,還可以知道PXE服務(wù)器在哪里苍鲜,也可以知道如何從PXE服務(wù)器上下載某個文件思灰,去初始化操作系統(tǒng)。
解析PXE的工作過程
啟動PXE客戶端
通過DHCP協(xié)議告訴DHCP Server混滔,我,窮b洒疚,打錢!
DHCP Server便租給它一個IP地址歹颓,同時也給它PXE服務(wù)器的地址、啟動文件pxelinux.0
初始化機器
PXE客戶端知道要去PXE服務(wù)器下載這個文件后油湖,就可以初始化機器
便開始下載(TFTP協(xié)議),還需要有一個TFTP服務(wù)器
PXE客戶端向TFTP服務(wù)器請求下載這個文件巍扛,TFTP服務(wù)器說好啊,于是就將這個文件傳給它
執(zhí)行文件
然后乏德,PXE客戶端收到這個文件后撤奸,就開始執(zhí)行這個文件
這個文件會指示PXE客戶端,向TFTP服務(wù)器請求計算機的配置信息pxelinux.cfg
TFTP服務(wù)器會給PXE客戶端一個配置文件鹅经,里面會說內(nèi)核在哪里寂呛、initramfs在哪里。PXE客戶端會請求這些文件瘾晃。
啟動Linux內(nèi)核
一旦啟動了操作系統(tǒng)贷痪,以后就啥都好辦了
總結(jié)
DHCP協(xié)議主要是用來給客戶租用IP地址,和房產(chǎn)中介很像蹦误,要商談劫拢、簽約、續(xù)租强胰,廣播還不能“搶單”舱沧;
DHCP協(xié)議能給客戶推薦“裝修隊”PXE,能夠安裝操作系統(tǒng)偶洋,這個在云計算領(lǐng)域大有用處熟吏。
參考
- 趣談網(wǎng)絡(luò)協(xié)議