描述網絡概念
目標
完成本節(jié)內容后,你能夠描述服務器的網絡尋址和路由的基本概念时迫。
TCP/IP網絡模型
TCP/IP網絡模型是一套簡化的娇昙、四層的抽象模型,描述了不同協(xié)議如何相互作用费韭,以便計算機通過互聯(lián)網將流量從一臺機器發(fā)送到另一臺機器茧球。它是由RFC 1122《互聯(lián)網主機要求--通信層》中規(guī)定的。這四個層是:
-
應用層
每個應用程序都有通信規(guī)范星持,以便客戶端和服務器可以跨平臺通信抢埋。常見的協(xié)議包括SSH(遠程登錄)、HTTPS(安全網絡)、NFS或CIFS(文件共享)和SMTP(電子郵件傳輸)揪垄。
-
傳輸層
傳輸協(xié)議有TCP和UDP兩種。TCP是一種可靠的面向連接的通信饥努,而UDP是一種無連接的數(shù)據(jù)報協(xié)議捡鱼。應用協(xié)議使用TCP或UDP端口。在/etc/services文件中可以找到常用的和注冊的端口列表酷愧。
當一個數(shù)據(jù)包在網絡上發(fā)送時驾诈,服務端口和IP地址的組合形成一個套接字。每個數(shù)據(jù)包都有一個源套接字和一個目的套接字溶浴。這些信息可以在監(jiān)控和過濾時使用乍迄。
-
網絡層
Internet,即網絡層士败,將數(shù)據(jù)從源主機傳送到目的主機闯两。IPv4和IPv6協(xié)議是互聯(lián)網層的協(xié)議僧家。每個主機都有一個IP地址和一個前綴谦炒,用于確定網絡地址。路由器是用來連接網絡的今阳。
-
鏈路層
鏈路層饥臂,即媒介接入層逊躁,提供與物理媒介的連接。最常見的網絡類型是有線以太網(802.3)和無線WLAN(802.11)擅笔。每個物理設備都有一個硬件地址(MAC)志衣,用于識別本地網段上的數(shù)據(jù)包的目的地。
描述網絡接口名稱
系統(tǒng)上的每個網絡接口都有一個名稱猛们,你可以用它來配置和識別念脯。
舊版本的Red Hat Enterprise Linux為每個網絡接口使用eth0、eth1和eth2等名稱弯淘。eth0 是操作系統(tǒng)檢測到的第一個網絡端口绿店,eth1 是第二個,以此類推庐橙。但是假勿,隨著設備的添加和刪除,設備的檢測和命名機制可能會改變哪個接口得到哪個名字态鳖。此外转培,PCIe標準并不保證啟動時檢測到PCIe設備的順序,這可能會因為設備或系統(tǒng)啟動時的變化而意外地改變設備的命名浆竭。
較新版本的Red Hat Enterprise Linux使用了不同的命名系統(tǒng)浸须。網絡接口的命名不是基于檢測順序惨寿,而是根據(jù)固件、PCI總線拓撲結構和網絡設備類型等信息來分配網絡接口的名稱删窒。
網絡接口名稱以接口類型開頭:
- 以太網接口以en開頭
- WLAN接口以wl開頭
- WWAN接口以www開頭
類型后的其余接口名稱將根據(jù)服務器固件提供的信息或設備在PCI拓撲結構中的位置來確定:
- oN表示這是一個板載設備裂垦,服務器的固件為該設備提供了索引號N。所以eno1是板載以太網設備1肌索。很多服務器不會提供這個信息蕉拢。
- sN表示該設備在PCI熱插拔槽N中,所以ens3是PCI熱插拔槽3中的以太網卡诚亚。
- pMsN表示這是總線M插槽N中的PCI設備晕换,所以wlp4s0是PCI總線4插槽0中的WLAN卡。如果該卡是一個多功能設備(可能是具有多個端口的以太網卡站宗,或者是具有以太網加上一些其他功能的設備)届巩,你可能會看到設備名稱中加上fN。所以enp0s1f0就是插槽1中總線0上的以太網卡的功能0份乒。也可能有第二個名為enp0s1f1的接口是同一設備的功能1。
持久命名意味著腕唧,一旦你知道系統(tǒng)上的網絡接口的名稱是什么或辖,你也知道它以后不會改變。這樣做的代價是枣接,你不能假設一個系統(tǒng)有一個接口就會把這個接口命名為eth0颂暇。
IPv4網絡
IPv4是當今互聯(lián)網上使用的主要網絡協(xié)議。你至少要對IPv4網絡有一個基本的了解但惶,才能管理好你的服務器的網絡通信耳鸯。
IPv4地址
IPv4地址是一個32位的數(shù)字,通常用十進制表示膀曾,是四個8位八位數(shù)县爬,值從0到255,用圓點隔開添谊。地址分為兩部分:網絡部分和主機部分财喳。在同一個子網中的所有主機,在沒有路由器的情況下斩狱,都可以直接相互通話耳高,網絡部分是同一個子網中的主機;網絡部分標識著子網所踊。同一子網上的兩臺主機不能有相同的主機部分泌枪;主機部分標識著子網上的某一臺主機。
在現(xiàn)代互聯(lián)網中秕岛,IPv4子網的大小是可變的碌燕。要知道IPv4地址中哪一部分是網絡部分误证,哪一部分是主機部分,管理員必須知道分配給子網的子網掩碼陆蟆。子網掩碼表示IPv4地址有多少位屬于子網雷厂。主機部分的可用位數(shù)越多,子網中的主機就越多叠殷。
子網上可能的最低地址(主機部分為二進制中的所有零)有時被稱為網絡地址改鲫。在IPv4中,子網上可能的最高地址(主機部分為二進制中的所有1)用于廣播信息林束,稱為廣播地址像棘。
網絡掩碼有兩種表示形式。舊的網絡掩碼語法使用24位表示網絡部分壶冒,讀作255.255.255.0缕题。一種較新的語法,稱為CIDR符號胖腾,指定網絡前綴為/24烟零。這兩種形式傳達的信息是相同的,即IP地址中的前導位數(shù)對網絡地址的貢獻咸作。
下面的例子說明了IP地址锨阿、前綴(netmask)、網絡部分和主機部分的關系记罚。
計算192.168.1.107/24的網絡地址
主機地址 | 192.168.1.107 | 11000000.10101000.00000001.01101011 |
---|---|---|
網絡前綴 | /24 (255.255.255.0) | 11111111.11111111.11111111.00000000 |
網絡地址 | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
廣播地址 | 192.168.1.255 | 11000000.10101000.00000001.11111111 |
計算10.1.1.1.1.18/8的網絡地址
主機地址 | 10.1.1.18 | 00001010.00000001.00000001.00010010 |
---|---|---|
網絡前綴 | /8 (255.0.0.0) | 11111111.00000000.00000000.00000000 |
網絡地址 | 10.0.0.0 | 00001010.00000000.00000000.00000000 |
廣播地址 | 10.255.255.255 | 00001010.11111111.11111111.11111111 |
計算172.16.181.23/19的網絡地址
主機地址 | 172.168.181.23 | 10101100.10101000.10110101.00010111 |
---|---|---|
網絡前綴 | /19 (255.255.224.0) | 11111111.11111111.11100000.00000000 |
網絡地址 | 172.168.160.0 | 10101100.10101000.10100000.00000000 |
廣播地址 | 172.168.191.255 | 10101100.10101000.10111111.11111111 |
特殊地址127.0.0.1總是指向本地系統(tǒng)("localhost")墅诡,而網絡127.0.0.0.0/8屬于本地系統(tǒng),這樣它就可以使用網絡協(xié)議與自己對話桐智。
IPv4路由
無論是使用IPv4還是IPv6末早,網絡流量都需要從主機到主機,從網絡到網絡说庭,網絡流量需要從主機到主機然磷,從網絡到網絡。每臺主機都有一個路由表口渔,它告訴它如何為特定網絡路由流量样屠。路由表條目列出了目標網絡、發(fā)送流量時要使用哪個接口缺脉,以及將消息中繼到最終目的地所需的任何中間路由器的IP地址痪欲。與網絡流量的目的地匹配的路由表條目用于路由。如果兩個條目匹配攻礼,則使用前綴最長的那個條目业踢。
如果網絡流量與更具體的路由不匹配,路由表中通常會有一個條目礁扮,用于指向整個IPv4互聯(lián)網的默認路由知举。0.0.0.0.0.0/0.這個默認路由指向一個可到達的子網(即在主機路由表中擁有更具體的路由的子網)上的路由器瞬沦。
如果路由器收到的流量不是給它發(fā)地址的,它不會像普通主機一樣忽略它雇锡,而是根據(jù)自己的路由表轉發(fā)流量逛钻。這可能會把流量直接發(fā)送到目的地主機(如果路由器剛好在目的地的子網上),也可能轉發(fā)到另一個路由器上锰提。這個轉發(fā)過程一直持續(xù)到流量到達最終目的地曙痘。
![Figure 12.2: Example network topology](https://upload-images.jianshu.io/upload_images/3847537-ad539f03d4d7ad68.png?imageMogr2/auto-orient/strip%7C[圖片上傳中...(image-20200416170658876.png-221638-1587186893267-0)]
imageView2/2/w/1240)
路由表示例
目的地 | 接口 | 路由器 |
---|---|---|
192.0.2.0/24 | wlo1 | |
192.168.5.0/24 | enp3s0 | |
0.0.0.0/0 (默認) | enp3s0 | 192.168.5.254 |
在這個例子中,來自這個主機的IP地址192.0.2.102的流量通過wlo1無線接口直接傳輸?shù)皆撃康牡亓⒅猓驗樗c192.0.2.0/24路由最匹配边坤。IP地址192.168.5.3的流量通過enp3s0以太網接口直接傳輸?shù)皆撃康牡兀驗樗c192.168.5.0/24路由最匹配谅年。
IP地址10.2.24.1的流量從enp3s0以太網接口傳輸?shù)?92.168.5.254的路由器茧痒,路由器將該流量轉發(fā)到最終目的地。該流量與0.0.0.0.0.0/0路由最匹配融蹂,因為在這個主機的路由表中沒有更具體的路由旺订。路由器使用自己的路由表來決定下一個流量轉發(fā)到哪里。
IPv4地址和路由配置
服務器可以在啟動時從DHCP服務器自動配置其IPv4網絡設置超燃。本地客戶端守護進程查詢服務器和網絡設置的鏈接耸峭,并獲得一個租約,在特定時間內使用這些設置淋纲。如果客戶機不定期請求續(xù)租,可能會丟失其網絡配置設置院究。
作為替代方案洽瞬,您可以將服務器配置為使用靜態(tài)網絡配置。在這種情況下业汰,網絡設置會從本地配置文件中讀取伙窃。你必須從網絡管理員那里獲得正確的設置,并根據(jù)需要手動更新样漆,以避免與其他服務器沖突为障。
IPV6網絡
IPv6的目的是作為IPv4網絡協(xié)議的最終替代者。由于越來越多的生產系統(tǒng)使用IPv6尋址放祟,你需要了解它的工作原理鳍怨。例如,許多ISP已經將IPv6用于內部通信和設備管理網絡跪妥,以保留稀缺的IPv4地址供客戶使用鞋喇。
在雙棧模型中,IPv6也可以與IPv4并行使用眉撵。在這種配置下侦香,一個網絡接口可以有一個或多個IPv6地址落塑,也可以有IPv4地址。Red Hat Enterprise Linux 默認以雙棧模式運行罐韩。
IPv6地址
IPv6地址是一個128位數(shù)字憾赁,通常表示為八個十六進制半字節(jié)(半字節(jié))組成的八個冒號分隔的組。 每個半字節(jié)代表IPv6地址的四位散吵,因此每一組代表IPv6地址的16位龙考。
2001:0db8:0000:0010:0000:0000:0000:0001
為了使IPv6地址更容易寫,冒號分隔的組中的前導零不需要寫错蝴。但是洲愤,每個冒號分隔組中至少要寫一個十六進制數(shù)字。
2001:db8:0:10:0:0:0:1
由于帶長串零的地址是很常見的顷锰,所以一個或多個連續(xù)的零組只能和一個::塊組合在一起柬赐。
2001:db8:0:10::1
注意,在這些規(guī)則下官紫, 2001:db8::0010:0:0:0:1將是另一種不那么方便的寫法肛宋,例如地址的示例地址。但它是同一個地址的有效表示束世,這可能會讓剛接觸IPv6的管理員感到困惑酝陈。寫出一致可讀地址的一些技巧。
- 在一個組中取消前導零毁涉。
- 使用:: 盡可能地縮短沉帮。
- 如果一個地址包含兩個連續(xù)的零組,長度相等贫堰,那么最左邊的零組最好縮短為::穆壕,最右邊的零組最好縮短為:0:。
- 雖然是允許的其屏,但不要使用::來縮短一組零喇勋。使用:0: 代替,并保存::用于連續(xù)的零組偎行。
- 對于十六進制數(shù)字a到f川背,始終使用小寫字母。
當在IPv6地址后加入TCP或UDP網絡端口時蛤袒,一定要把IPv6地址用方括號括起來熄云,這樣就不會讓端口看起來像是地址的一部分。
[2001:db8:0:10::1]:80
IPv6子網
一個正常的IPv6單播地址分為兩部分:網絡前綴和接口ID妙真。網絡前綴標識著子網皱碘。同一子網上的兩個網絡接口不能有相同的接口ID;接口ID標識了子網上的某一特定接口隐孽。
與IPv4不同的是癌椿,IPv6有一個標準的子網掩碼健蕊,幾乎所有的普通地址都采用了這個標準的子網掩碼,即/64踢俄。在這種情況下缩功,地址的一半是網絡前綴,一半是接口ID都办。這意味著一個子網可以容納多少臺主機嫡锌,就可以容納多少臺主機。
通常情況下琳钉,網絡提供商會分配一個較短的前綴給一個組織势木,例如/48。這就把網絡的其余部分留給該分配的前綴分配子網(總是長度為/64)歌懒。對于/48的分配啦桌,這就給子網留出了16位(最多65536個子網)。
常見的IPv6地址和網絡
IPv6地址或網絡 | PURPOSE | DESCRIPTION |
---|---|---|
::1/128 | localhost | IPv6相當于127.0.0.1/8及皂,設置在環(huán)回接口上甫男。 |
:: | 未指定的地址 | IPv6相當于0.0.0.0的IPv6。對于一個網絡服務验烧,這可能表明它正在監(jiān)聽所有配置的IP地址板驳。 |
::/0 | 默認路由(IPv6 網絡) | IPv6相當于0.0.0.0/0,路由表中的默認路由與這個網絡相匹配碍拆;這個網絡的路由器是所有沒有更好的路由的流量的發(fā)送地若治。 |
2000::/3 | 全球單播地址 | "Normal"IPv6地址目前由IANA從這個空間分配。這相當于2000::/16到3fff::/16之間的所有網絡感混。 |
fd00::/8 | 唯一的本地地址(RFC 4193) | IPv6沒有直接等同于RFC 1918私有地址空間的RFC 1918私有地址空間直砂,盡管這一點很接近。一個站點可以使用這些來在組織內部自我分配一個私有可路由的IP地址空間浩习,但這些網絡不能在全球互聯(lián)網上使用。站點必須隨機地從這個空間中選擇一個/48济丘,但它可以正常地將分配到/64網絡中的子網谱秽。 |
fe80::/10 | Link-local addresses | 每個IPv6接口都會自動配置一個link-local單播地址,該地址只在fe80::/64網絡上的本地鏈路上工作摹迷。 但是疟赊,整個 fe80::/10 范圍內的整個 fe80:/10 都是預留給本地鏈路將來使用的。這將在后面詳細討論峡碉。 |
ff00::/8 | 多播 | IPv6相當于224.0.0.0.0.0/4.多播是用來同時向多臺主機傳輸?shù)慕矗贗Pv6中,由于沒有廣播地址鲫寄,所以特別重要吉执。 |
IPv6中的link-local地址是一個不可轉發(fā)的地址,僅用于與特定網絡鏈路上的主機對話。系統(tǒng)中的每個網絡接口都會自動配置一個鏈接-本地地址的诵,在fe80:::/64網絡中谤碳,每一個網絡接口都有一個鏈接-本地地址。為了確保其唯一性咕宿,鏈路本地地址的接口ID由網絡接口的以太網硬件地址構造而成币绩。將48位的MAC地址轉換為64位的接口ID的通常步驟是將MAC地址的第7位倒置,并在其兩個中間字節(jié)之間插入ff:fe80:::fe府阀。
網絡前綴: fe80:::/64
MAC 地址: 00:11:22:aa:bb:cc
鏈路本地地址: fe80::211:22ff:feaa:bbcc/64
例如缆镣,使用ping6來ping鏈路本地地址fe80:::211:22ff:22ff:feaa:bbcc,使用連接到ens3網絡接口的鏈路试浙,正確的命令語法如下董瞻。
[user@host ~]$ ping6 fe80::211:22ff:feaa:bbcc%ens3
多播允許一個系統(tǒng)向一個特殊的IP地址發(fā)送流量,由多個系統(tǒng)接收川队。它與廣播不同力细,因為只有網絡上的特定系統(tǒng)才能接收到流量。它也不同于IPv4中的廣播固额,因為一些組播流量可能會被路由到其他子網眠蚂,這取決于網絡路由器和系統(tǒng)的配置。
與IPv4相比斗躏,組播在IPv6中的作用更大逝慧,因為IPv6中沒有廣播地址。IPv6中的一個關鍵組播地址是ff02::1啄糙,即所有節(jié)點的鏈路本地地址笛臣。Ping這個地址會向鏈路上的所有節(jié)點發(fā)送流量。鏈路范圍組播地址(從ff02::8開始)需要指定一個范圍標識符隧饼,就像鏈路本地地址一樣沈堡。
[user@host ~]$ ping6 ff02::1%ens3
PING ff02::1%ens3(ff02::1) 56 data bytes
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from fe80::200:aaff:fe33:2211: icmp_seq=1 ttl=64 time=102 ms (DUP!)
64 bytes from fe80::bcd:efff:fea1:b2c3: icmp_seq=1 ttl=64 time=103 ms (DUP!)
64 bytes from fe80::211:22ff:feaa:bbcc: icmp_seq=2 ttl=64 time=0.079 ms
...output omitted...
IPv6 地址配置
IPv4有兩種方式來配置網絡接口上的地址。網絡地址可以由管理員在接口上手動配置燕雁,也可以使用DHCP從網絡上動態(tài)配置诞丽。IPv6也支持手動配置,也支持動態(tài)配置兩種方式拐格,其中一種是DHCPv6僧免。
和IPv4一樣,靜態(tài)IPv6地址的接口ID可以隨意選擇捏浊,就像IPv4一樣懂衩。在IPv4中,網絡上有兩個地址不能使用:子網中的最低地址和子網中的最高地址。在IPv6中浊洞,以下接口ID是保留的牵敷,不能用于主機上的普通網絡地址。
- 鏈路上所有路由器使用的全零標識符 0000:0000:0000:0000 ("子網路由器 anycast")沛申。(對于2001:db8:::/64網絡劣领,這將是2001:db8::)。
- 識別碼fdff:ffff:ffff:ff80至fdff:ffff:ffff:ffff铁材;
DHCPv6的工作原理與IPv4的DHCP不同尖淘,因為沒有廣播地址。本質上著觉,主機從其鏈路本地地址發(fā)送一個DHCPv6請求到ff02::1:2端口547/UDP村生,即all-DHCP-servers鏈路本地多播組。然后饼丘,DHCPv6服務器通常會向客戶端鏈路本地地址的546/UDP端口發(fā)送包含相應信息的回復趁桃。Red Hat Enterprise Linux 8中的dhcp包提供了對DHCPv6服務器的支持。
除了DHCPv6之外肄鸽,IPv6還支持第二種動態(tài)配置方法卫病,稱為無狀態(tài)地址自動配置(SLAAC)。使用SLAAC典徘,主機正常地調出其接口的linklocal fe80::/64地址蟀苛。然后,它向allrouters link-local組的鏈路本地多播組fff02:::2發(fā)送一個 "路由器請求"逮诲。本地鏈路上的IPv6路由器會用一個網絡前綴和可能的其他信息響應主機的鏈路本地地址帜平。然后,主機使用該網絡前綴和接口ID梅鹦,該接口ID的構造方式與鏈路本地地址的構造方式相同裆甩。路由器定期發(fā)送組播更新("路由器廣告")以確認或更新它提供的信息。
Red Hat Enterprise Linux 8 中的 radvd 包允許基于 Red Hat Enterprise Linux 的 IPv6 路由器通過路由器廣告提供 SLAAC齐唆。
一個典型的Red Hat Enterprise Linux 8機器通常也被配置為通過DHCP獲取IPv4地址嗤栓,通過DHCP獲取IPv4地址。這可能導致當網絡中添加了一個IPv6路由器時箍邮,機器會意外地獲得IPv6地址茉帅。
有些IPv6部署將SLAAC和DHCPv6結合起來,使用SLAAC只提供網絡地址信息媒殉,而DHCPv6則提供其他信息,例如要配置哪些DNS服務器和搜索域摔敛。
主機名和IP地址
如果總是要用IP地址來聯(lián)系服務器廷蓉,那就不方便了。一般來說,人類更愿意用名字來工作桃犬,而不是長長的難以記憶的數(shù)字字符串刹悴。所以Linux有很多機制將主機名稱映射到IP地址,統(tǒng)稱為名稱解析攒暇。
一種方法是在每個系統(tǒng)的/etc/hosts文件中為每個名字設置一個靜態(tài)條目土匀。這需要你手動更新每個服務器的文件副本。
對于大多數(shù)主機來說形用,你可以從一個叫做域名系統(tǒng)(DNS)的網絡服務中查詢主機名(或從地址中查詢主機名)的地址就轧。DNS是一個分布式的服務器網絡,提供主機名與IP地址的映射田度。為了使名稱服務發(fā)揮作用妒御,主機需要指向一個命名服務器。這個命名服務器不需要在同一個子網中镇饺,只需要主機可以到達即可乎莉。這通常是通過 DHCP 或在名為 /etc/resolv.conf 的文件中的靜態(tài)設置來配置。本章后面的章節(jié)將討論如何配置名稱解析奸笤。
驗證網絡配置
目標
完成本節(jié)后惋啃,你能夠使用命令行工具測試和檢查當前的網絡配置。
收集網絡接口信息
識別網絡接口
ip link命令將列出系統(tǒng)上所有可用的網絡接口:
[user@host ~]$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:00:00:1e brd ff:ff:ff:ff:ff:ff
在前面的例子中监右,服務器有三個網絡接口:lo边灭,即連接到服務器本身的環(huán)回設備,以及兩個以太網接口秸侣,即ens3和ens4存筏。
為了正確配置每個網絡接口,你需要知道哪個接口連接到哪個網絡味榛。在許多情況下椭坚,你會知道連接到每個網絡的接口的MAC地址,這可能是因為物理上打印在網卡或服務器上搏色,也可能是因為它是虛擬機善茎,你知道它是如何配置的。每個接口的link/ether之后都會列出設備的MAC地址频轿。所以你知道MAC地址為52:54:00:00:00:0a的網卡就是網絡接口 ens3垂涯。
顯示IP地址
使用 ip 命令查看設備和地址信息。一個網絡接口可以有多個IPv4或IPv6地址航邢。
[user@host ~]$ ip addr show ens3
2: ens3: <BROADCAST,MULTICAST, UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
inet 192.0.2.2/24 brd 192.0.2.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 2001:db8:0:1:5054:ff:fe00:b/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe00:b/64 scope link
valid_lft forever preferred_lft forever
一個活動接口是UP耕赘。
鏈路/以太網行指定設備的硬件(MAC)地址。
顯示一個IPv4地址膳殷,它的網絡前綴長度和范圍操骡。
inet6行顯示的是一個IPv6地址,它的網絡前綴長度和范圍。這個地址具有全局范圍册招,通常使用的是全局范圍岔激。
這一行inet6顯示接口有一個IPv6地址的鏈路范圍,只能用于本地以太網鏈路上的通信是掰。
顯示性能統(tǒng)計
ip命令也可以用來顯示有關網絡性能的統(tǒng)計數(shù)據(jù)虑鼎。每個網絡接口的計數(shù)器可用于識別網絡問題的存在。計數(shù)器記錄了諸如接收(RX)和傳輸(TX)數(shù)據(jù)包的數(shù)量键痛、數(shù)據(jù)包錯誤和丟棄的數(shù)據(jù)包等統(tǒng)計數(shù)據(jù)炫彩。
[user@host ~]$ ip -s link show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen
1000
link/ether 52:54:00:00:00:0a brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast
269850 2931 0 0 0 0
TX: bytes packets errors dropped carrier collsns
300556 3250 0 0 0 0
檢查主機之間的連接性
ping命令用于測試連接性。該命令將繼續(xù)運行散休,直到按下Ctrl+C為止媒楼,除非給出選項限制發(fā)送的數(shù)據(jù)包數(shù)量。
[user@host ~]$ ping -c3 192.0.2.254
PING 192.0.2.1 (192.0.2.254) 56(84) bytes of data.
64 bytes from 192.0.2.254: icmp_seq=1 ttl=64 time=4.33 ms
64 bytes from 192.0.2.254: icmp_seq=2 ttl=64 time=3.48 ms
64 bytes from 192.0.2.254: icmp_seq=3 ttl=64 time=6.83 ms
--- 192.0.2.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 3.485/4.885/6.837/1.424 ms
ping6 命令是 Red Hat Enterprise Linux 中 ping 的 IPv6 版本戚丸。它通過IPv6進行通信划址,并接收IPv6地址,但其他方面的工作方式與ping一樣限府。
[user@host ~]$ ping6 2001:db8:0:1::1
PING 2001:db8:0:1::1(2001:db8:0:1::1) 56 data bytes
64 bytes from 2001:db8:0:1::1: icmp_seq=1 ttl=64 time=18.4 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=2 ttl=64 time=0.178 ms
64 bytes from 2001:db8:0:1::1: icmp_seq=3 ttl=64 time=0.180 ms
^C
--- 2001:db8:0:1::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.178/6.272/18.458/8.616 ms
[user@host ~]$
當你ping鏈路本地地址和鏈路本地全節(jié)點組(ff02:::1)時夺颤,必須用范圍區(qū)標識符(如ff02:::1%ens3)明確指定要使用的網絡接口。如果忽略了這一點胁勺,會顯示錯誤的connect: 無效參數(shù)世澜,將顯示錯誤connect: Invalid argument。
Pinging ff02::1可以幫助查找本地網絡上的其他IPv6節(jié)點署穗。
[user@host ~]$ ping6 ff02::1%ens4
PING ff02::1%ens4(ff02::1) 56 data bytes
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=1 ttl=64 time=22.7 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=30.1 ms (DUP!)
64 bytes from fe80::78cf:7fff:fed2:f97b: icmp_seq=2 ttl=64 time=0.183 ms
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=2 ttl=64 time=0.231 ms (DUP!)
^C
--- ff02::1%ens4 ping statistics ---
2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.183/13.320/30.158/13.374 ms [user@host ~]$ ping6 -c 1 fe80::f482:dbff:fe25:6a9f%ens4
PING fe80::f482:dbff:fe25:6a9f%ens4(fe80::f482:dbff:fe25:6a9f) 56 data bytes
64 bytes from fe80::f482:dbff:fe25:6a9f: icmp_seq=1 ttl=64 time=22.9 ms
--- fe80::f482:dbff:fe25:6a9f%ens4 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 22.903/22.903/22.903/0.000 ms
記住寥裂,IPv6鏈路本地地址可以被其他主機在同一鏈路上使用,就像普通地址一樣案疲。
[user@host ~]$ ssh fe80::f482:dbff:fe25:6a9f%ens4
user@fe80::f482:dbff:fe25:6a9f%ens4's password:
Last login: Thu Jun 5 15:20:10 2014 from host.example.com
[user@server ~]$
路由故障排除
網絡路由很復雜封恰,有時流量的表現(xiàn)并不像你所期望的那樣。以下是一些有用的診斷工具褐啡。
顯示路由表
使用帶路由選項的 ip 命令來顯示路由信息诺舔。
[user@host ~]$ ip route
default via 192.0.2.254 dev ens3 proto static metric 1024
192.0.2.0/24 dev ens3 proto kernel scope link src 192.0.2.2
10.0.0.0/8 dev ens4 proto kernel scope link src 10.0.0.11
這顯示的是IPv4路由表。所有發(fā)送到 10.0.0.0/8 網絡的數(shù)據(jù)包都是通過設備ens4直接發(fā)送到目的地备畦。所有發(fā)送到e 192.0.2.0/24網絡的數(shù)據(jù)包通過設備 ens3直接發(fā)送到目的地低飒。其他所有的數(shù)據(jù)包都是通過設備ens3發(fā)送到位于192.0.2.254的默認路由器。
添加-6選項懂盐,以顯示IPv6路由表褥赊。
[user@host ~]$ ip -6 route
unreachable ::/96 dev lo metric 1024 error -101
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101
2001:db8:0:1::/64 dev ens3 proto kernel metric 256
unreachable 2002:a00::/24 dev lo metric 1024 error -101
unreachable 2002:7f00::/24 dev lo metric 1024 error -101
unreachable 2002:a9fe::/32 dev lo metric 1024 error -101
unreachable 2002:ac10::/28 dev lo metric 1024 error -101
unreachable 2002:c0a8::/32 dev lo metric 1024 error -101
unreachable 2002:e000::/19 dev lo metric 1024 error -101
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101
fe80::/64 dev ens3 proto kernel metric 256
default via 2001:db8:0:1::ffff dev ens3 proto static metric 1024
在這個例子中,忽略無法到達的路由莉恼,這些路由指向未使用的網絡拌喉。這樣就剩下了三條路由:
- 2001:db8:0:1::/64網絡翼岁,使用ens3接口(估計該網絡上有一個地址)。
- fe80::/64網絡中司光,使用ens3接口,為鏈路本地地址悉患。在一個有多個接口的系統(tǒng)中残家,每個接口都有一條通往fe80::/64的路由,每個接口的鏈接-本地地址都有一條路由售躁。
- 通過路由器2001:db8:0:1::ffff的路由器坞淮,通過ens3設備可以到達IPv6互聯(lián)網上所有的網絡(::/0網絡),在系統(tǒng)中沒有更具體的路由陪捷,默認的路由回窘。
Traffic追蹤路由路徑
要追蹤網絡流量通過多個路由器到達遠程主機的路徑,請使用 traceroute 或 tracepath市袖。這可以確定問題是出在某個路由器上啡直,還是出在中間路由器上。這兩個命令都默認使用UDP數(shù)據(jù)包來跟蹤路徑苍碟;但是酒觅,許多網絡會阻止UDP和ICMP流量。traceroute命令可以選擇使用UDP(默認)微峰、ICMP(-I)或TCP(-T)數(shù)據(jù)包追蹤路徑舷丹。但是,通常情況下蜓肆,traceroute命令并不是默認安裝的颜凯。
[user@host ~]$ tracepath access.redhat.com
...output omitted...
4: 71-32-28-145.rcmt.qwest.net 48.853ms asymm 5
5: dcp-brdr-04.inet.qwest.net 100.732ms asymm 7
6: 206.111.0.153.ptr.us.xo.net 96.245ms asymm 7
7: 207.88.14.162.ptr.us.xo.net 85.270ms asymm 8
8: ae1d0.cir1.atlanta6-ga.us.xo.net 64.160ms asymm 7
9: 216.156.108.98.ptr.us.xo.net 108.652ms
10: bu-ether13.atlngamq46w-bcr00.tbone.rr.com 107.286ms asymm 12
...output omitted...
tracepath輸出中的每一行都代表了數(shù)據(jù)包在源和最終目的地之間經過的路由器或跳數(shù)。附加的信息仗扬,包括往返時間(RTT)和最大傳輸單位(MTU)大小的任何變化症概。不對稱指示表示流量到達該路由器后,使用不同的(不對稱)路由從該路由器返回厉颤。所示的路由器是用于出站流量穴豫,而不是返回流量。
tracepath6和traceroute -6命令相當于IPv6的tracepath和traceroute逼友。
[user@host ~]$ tracepath6 2001:db8:0:2::451
1?: [LOCALHOST] 0.091ms pmtu 1500
1: 2001:db8:0:1::ba 0.214ms
2: 2001:db8:0:1::1 0.512ms
3: 2001:db8:0:2::451 0.559ms reached
Resume: pmtu 1500 hops 3 back 3
故障排除端口和服務
TCP服務使用套接字作為通信的終端精肃,由IP地址、協(xié)議和端口號組成帜乞。服務通常在標準端口上監(jiān)聽司抱,而客戶端使用隨機的可用端口。在 /etc/services 文件中列出了標準端口的著名名稱黎烈。
ss命令是用來顯示socket統(tǒng)計的习柠。ss命令是用來取代舊的工具netstat匀谣,它是net-tools軟件包中的一部分,對于一些系統(tǒng)管理員來說资溃,可能比較熟悉武翎,但并不是一直都安裝了它。
[user@host ~]$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 *:36889 *:*
ESTAB 0 0 172.25.250.10:ssh 172.25.254.254:59392 LISTEN 0 128 :::sunrpc :::*
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 128 :::34946 :::*
用于 SSH 的端口是在所有 IPv4 地址上監(jiān)聽溶锭。在引用IPv4地址或端口時宝恶,"*"表示 "所有"。
SMTP使用的端口是在127.0.0.0.1 IPv4環(huán)回接口上監(jiān)聽趴捅。
已建立的SSH連接是在172.25.250.10接口上垫毙,來自一個地址為172.25.254.254的系統(tǒng)。
用于SSH的端口是在所有IPv6地址上監(jiān)聽拱绑。使用":: "語法來表示所有的IPv6接口综芥。
用于SMTP的端口是在::1 IPv6環(huán)回接口上監(jiān)聽的端口
ss和netstat的選項
選項 | 描述 |
---|---|
-n | 接口和端口顯示數(shù)字而不是名稱。 |
-t | 顯示TCP套接字猎拨。 |
-u | 顯示UDP套接字膀藐。 |
-l | 只顯示監(jiān)聽狀態(tài)的套接字。 |
-a | 顯示所有((listening and established)套接字红省。 |
-p | 顯示進程正在用的套接字消请。 |
-A inet | 顯示inet地址族的活動連接(但不是監(jiān)聽套接字)。 也就是說类腮,忽略本地UNIX域套接字臊泰。 對于 ss,同時顯示 IPv4 和 IPv6 連接蚜枢。對于 netstat缸逃,只顯示 IPv4 連接。(netstat -A inet6顯示IPv6連接厂抽,而netstat -46同時顯示IPv4和IPv6需频。) |
從命令行配置網絡
目標
完成本節(jié)內容后,您應該能夠使用 nmcli 命令管理網絡設置和設備筷凤。
描述網絡管理員的概念
NetworkManager 是一個監(jiān)控和管理網絡設置的守護進程昭殉。除了守護進程之外,還有一個 GNOME 通知區(qū) applet 提供網絡狀態(tài)信息藐守。命令行和圖形化工具可以與NetworkManager對話剥扣,并將配置文件保存在/etc/sysconfig/network-scripts目錄下营勤。
- 一個設備就是一個網絡接口。
- 連接是一個可以為設備配置的設置的集合。
- 任何一個設備一次只能激活一個連接贤姆。多個連接可以被不同設備使用场仲,或允許更改同一設備的配置。如果需要臨時更改網絡設置,可以更改設備的哪個連接是活動的撵渡,而不是更改連接的配置。例如死嗦,筆記本電腦上的無線網絡接口的設備可能在工作場所的無線網絡和家庭的無線網絡使用不同的連接趋距。
- nmcli工具用于從命令行創(chuàng)建和編輯連接文件。
查看網絡信息
nmcli dev狀態(tài)命令顯示所有網絡設備的狀態(tài)越除。
[user@host ~]$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected eno1
ens3 ethernet connected static-ens3
eno2 ethernet disconnected --
lo loopback unmanaged --
nmcli con show命令顯示所有連接的列表棚品。要只列出活動的連接,請?zhí)砑?--active 選項廊敌。
[user@host ~]$ nmcli con show
NAME UUID TYPE DEVICE
eno2 ff9f7d69-db83-4fed-9f32-939f8b5f81cd 802-3-ethernet --
static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1
[user@host ~]$ nmcli con show --active
NAME UUID TYPE DEVICE
static-ens3 72ca57a2-f780-40da-b146-99f71c431e2b 802-3-ethernet ens3
eno1 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa 802-3-ethernet eno1
增加網絡連接
nmcli con add命令用于添加新的網絡連接。下面的nmcli con add命令的示例是假設被添加的網絡連接的名稱還沒有被使用门怪。
下面的命令為接口eno2添加了一個名為eno2的新連接骡澈,它使用DHCP獲取IPv4網絡信息,并在啟動時自動連接掷空。它還通過監(jiān)聽本地鏈路上的路由器廣告來獲取IPv6網絡設置肋殴。配置文件的名稱基于con-name選項的值,即eno2坦弟,并保存到/etc/ sysconfig/network-scripts/ifcfg-eno2文件中护锤。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2
接下來的例子為eno2設備創(chuàng)建了一個靜態(tài)IPv4地址的eno2連接,使用IPv4地址和網絡前綴192.168.0.5/24和默認網關192.168.0.254酿傍,但在啟動時仍然會自動連接烙懦,并將其配置保存到同一個文件中。由于屏幕大小的限制赤炒,請用shell \轉義結束第一行氯析,然后在下一行完成命令。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
> ip4 192.168.0.5/24 gw4 192.168.0.254
最后這個例子為eno2設備創(chuàng)建了一個具有靜態(tài)IPv6和IPv4地址的eno2連接莺褒,使用IPv6地址和網絡前綴2001:db8:0:1::c000:207/64和默認的IPv6網關2001:db8:0:1::1掩缓,以及IPv4地址和網絡前綴 192.0.2.7/24和默認的IPv4網關192.0.2.1,但在啟動時仍然會自動連接遵岩,并將其配置保存到/etc/sysconfig/network-scripts/ifcfg-eno2中你辣。由于屏幕大小的限制,請用shell \轉義結束第一行尘执,然后在下一行完成命令舍哄。
[root@host ~]# nmcli con add con-name eno2 type ethernet ifname eno2 \
> ip6 2001:db8:0:1::c000:207/64 gw6 2001:db8:0:1::1 ip4 192.0.2.7/24 gw4 192.0.2.1
控制網絡連接
nmcli con up name 命令會激活它綁定的網絡接口上的連接名。注意誊锭,該命令使用的是連接的名稱蠢熄,而不是網絡接口的名稱。記住炉旷,nmcli con show 命令顯示的是所有可用連接的名稱签孔。
[root@host ~]# nmcli con up static-ens3
nmcli dev disconnect device 命令可以斷開網絡接口設備的連接叉讥,并將其帶下。該命令可以縮寫為nmcli dev dis device饥追。
[root@host ~]# nmcli dev dis ens3
修改網絡連接設置
NetworkManager的連接有兩種設置图仓。有靜態(tài)的連接屬性,由管理員配置并存儲在/etc/sysconfig/ network-scripts/ifcfg-的配置文件中但绕。也有可能是活動連接數(shù)據(jù)救崔,連接從DHCP服務器上獲取的,但這些數(shù)據(jù)并不持久存儲捏顺。
要列出一個連接的當前設置幅骄,請運行 nmcli con show name 命令孕索,其中 name 是連接的名稱。小寫的設置是管理員可以更改的靜態(tài)屬性。所有大寫的設置是臨時使用的活動設置铆遭。
[root@host ~]# nmcli con show static-ens3
connection.id: static-ens3
connection.uuid: 87b53c56-1f5d-4a29-a869-8a7bdaf56dfa connection.interface-name: --
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.timestamp: 1401803453
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: CA:9D:E9:2A:CE:F0
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options:
ipv4.method: manual
ipv4.dns: 192.168.0.254 i
pv4.dns-search: example.com
ipv4.addresses: { ip = 192.168.0.2/24, gw =
192.168.0.254 }
ipv4.routes:
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv6.method: manual
ipv6.dns: 2001:4860:4860::8888
ipv6.dns-search: example.com
ipv6.addresses: { ip = 2001:db8:0:1::7/64, gw = 2001:db8:0:1::1 }
ipv6.routes:
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.dhcp-hostname: --
...output omitted...
nmcli con mod name命令用于更改連接的設置。這些更改也會保存在/etc/sysconfig/network-scripts/ifcfg-name文件中丸逸⊙忻可用的設置在 nm-settings(5) man page 中有文檔凶赁。
設置IPv4地址為192.0.2.2/24,默認網關為192.0.2.254逆甜,連接static-ens3:
[root@host ~]# nmcli con mod static-ens3 ipv4.addresses "192.0.2.2/24 192.0.2.254"
將IPv6地址設置為2001:db8:0:1::a00:1/64虱肄,默認網關設置為2001:db8:0:1::1,連接static-ens3交煞。
[root@host ~]# nmcli con mod static-ens3 ipv6.address "2001:db8:0:1::a00:1/64
2001:db8:0:1::1"
如果一個從DHCPv4服務器獲取IPv4信息的連接只從靜態(tài)配置文件中獲取IPv4信息咏窿,那么IPv4.method的設置也應該從auto改為manual。
同樣素征,如果一個通過SLAAC或DHCPv6服務器獲取IPv6信息的連接只從靜態(tài)配置文件中獲取信息集嵌,那么設置ipv6.method也應該從auto或dhcp改為 manual.。
否則御毅,當連接被激活時根欧,可能會掛起或不能成功完成連接,或者除了靜態(tài)地址外端蛆,還可能從DHCP獲得IPv4地址凤粗,或者從DHCPv6或SLAAC獲得IPv6地址。
一些設置可能有多個值今豆。通過在設置名稱的開頭添加+或-符號柔袁,可以將一個特定的值添加到列表中或從列表中刪除。
刪除網絡連接
nmcli con del name命令從系統(tǒng)中刪除命名的連接名稱亭罪,將其與設備斷開連接瘦馍,并刪除文件/etc/sysconfig/network-scripts/ifcfg-name。
[root@host ~]# nmcli con del static-ens3
誰可以修改網絡設置应役?
root用戶可以使用nmcli進行任何必要的網絡配置更改情组。
但是,在本地控制臺登錄的普通用戶也可以對系統(tǒng)進行許多網絡配置的更改箩祥。他們必須在系統(tǒng)的鍵盤上登錄到基于文本的虛擬控制臺或圖形化桌面環(huán)境中院崇,才能獲得這種控制。這背后的邏輯是袍祖,如果有人在計算機的控制臺中實際存在底瓣,那么很可能是作為工作站或筆記本電腦使用,他們可能需要隨意配置蕉陋、激活和停用無線或有線網絡接口捐凭。相比之下,如果系統(tǒng)是數(shù)據(jù)中心中的服務器凳鬓,一般情況下茁肠,在本地登錄到機器本身的用戶應該是管理員。
使用ssh登錄的普通用戶在沒有成為root的情況下是沒有權限更改網絡權限的缩举。
您可以使用 nmcli gen permissions 命令查看您當前的權限垦梆。
命令總結
下表列出了本節(jié)中討論的 nmcli 關鍵命令。
COMMAND | 作用 |
---|---|
nmcli dev status | 顯示所有網絡接口的網絡管理員狀態(tài)仅孩。 |
nmcli con show | 列出所有連接托猩。 |
nmcli con show name | 列出連接name的當前設置。 |
nmcli con add con-name name | 添加一個新的連接辽慕,名為name京腥。 |
nmcli con mod name | 修改連接name。 |
nmcli con reload | 重新加載配置文件(手動編輯后有用)溅蛉。 |
nmcli con up name | 激活連接name绞旅。 |
nmcli dev dis dev | 停用和斷開網絡接口dev上的當前連接。 |
nmcli con del name | 刪除連接name及其配置文件温艇。 |
編輯網絡配置文件
目標
完成本節(jié)內容后因悲,你能夠通過編輯配置文件來修改網絡配置。
描述連接配置文件
默認情況下勺爱,使用nmcli con mod name進行的更改會自動保存到/etc/ sysconfig/network-scripts/ifcfg-name晃琳。這個文件也可以用文本編輯器手動編輯。編輯后,運行nmcli con reload卫旱,以便NetworkManager讀取配置更改人灼。
出于向后兼容的原因,保存在該文件中的指令的名稱和語法與 nm-settings(5) 的名稱不同顾翼。下表將一些關鍵設置名稱映射到ifcfg-*指令中投放。
nm-settings和ifcfg-指令的比較*
NMCLI CON MOD | IFCFG-* FILE | 效果 |
---|---|---|
ipv4.method manual | BOOTPROTO=none | 靜態(tài)配置的IPv4地址。 |
ipv4.method auto | BOOTPROTO=dhcp | 從DHCPv4服務器查找配置設置适贸。 如果還設置了靜態(tài)地址灸芳,則在我們獲得DHCPv4的信息之前,不會啟用這些地址拜姿。 |
ipv4.addresses "192.0.2.1/24 192.0.2.254" | IPADDR0=192.0.2.1 PREFIX0=24 GATEWAY0=192.0.2.254 | 設置靜態(tài)IPv4地址烙样、網絡前綴和默認網關。如果為連接設置了多個蕊肥,那么ifcfg-*指令以1谒获、2、3結束壁却,而不是0批狱,以此類推。 |
ipv4.dns 8.8.8.8 | DNS0=8.8.8.8 | 修改/etc/resolv.conf以使用此名稱服務器展东。 |
ipv4.dns-search example.com | DOMAIN=example.com | 修改 /etc/resolv.conf赔硫,在搜索指令中使用這個域。 |
ipv4.ignore-auto-dns true | PEERDNS=no | 忽略來自DHCP服務器的DNS服務器信息琅锻。 |
ipv6.method manual | IPV6_AUTOCONF=no | 靜態(tài)配置的IPv6地址卦停。 |
ipv6.method auto | IPV6_AUTOCONF=yes | 使用SLAAC通過路由器通告配置網絡設置向胡。 |
ipv6.method dhcp | IPV6_AUTOCONF=no DHCPV6C=yes | 通過使用DHCPv6配置網絡設置恼蓬,但不是SLAAC。 |
ipv6.addresses "2001:db8::a/64 2001:db8::1" | IPV6ADDR=2001:db8::a/64 IPV6_DEFAULTGW=2001:db8 | 設置靜態(tài)IPv6地址僵芹,:: 1網絡前綴和默認網關处硬。 如果為該連接設置了多個地址,則IPV6_SECONDARIES將使用雙引號引起來的列表拇派,該列表用空格分隔的地址/前綴定義荷辕。 |
ipv6.dns ... | DNS0= ... | 修改/etc/resolv.conf以使用此DNS服務器。 與IPv4完全相同件豌。 |
ipv6.dns-search example.com | DOMAIN=example.com | 修改/etc/resolv.conf以在搜索指令中使用此域疮方。 與IPv4完全相同。 |
ipv6.ignore-auto-dns true | IPV6_PEERDNS=no | 忽略來自DHCP服務器的DNS服務器信息茧彤。 |
connection.autoconnect yes | ONBOOT=yes | 在啟動時自動激活此連接骡显。 |
connection.id ens3 | NAME=ens3 | 此連接的名稱。 |
connection.interface- name ens3 | DEVICE=ens3 | 該連接使用此名稱綁定到網絡接口。 |
802-3-ethernet.macaddress . . . | HWADDR= ... | 使用此MAC地址將連接綁定到網絡接口惫谤。 |
修改網絡配置
也可以通過直接編輯連接配置文件來配置網絡壁顶。
連接配置文件控制著單個網絡設備的軟件接口。這些文件通常命名為/etc/sysconfig/network-scripts/ifcfg-name溜歪,其中name指的是配置文件控制的設備或連接的名稱若专。以下是用于靜態(tài)或動態(tài)IPv4配置的文件中的標準變量。
ifcfg 文件的 IPv4 配置選項
STATIC | DYNAMIC | EITHER |
---|---|---|
BOOTPROTO=none IPADDR0=172.25.250.10 PREFIX0=24 GATEWAY0=172.25.250.254 DEFROUTE=yes DNS1=172.25.254.254 |
BOOTPROTO=dhcp | DEVICE=ens3 NAME="static-ens3" ONBOOT=yes UUID=f3e8(...)ad3e USERCTL=yes |
在靜態(tài)設置中蝴猪,IP地址调衰、前綴和網關的變量在末尾有一個數(shù)字。這樣可以將多組值分配給接口拯腮。DNS變量也有一個數(shù)字窖式,用于指定多個服務器時的查找順序。
修改完配置文件后动壤,運行nmcli con reload使NetworkManager讀取配置更改萝喘。仍然需要重新啟動接口才能使更改生效。
[root@host ~]# nmcli con reload
[root@host ~]# nmcli con down "static-ens3"
[root@host ~]# nmcli con up "static-ens3"
配置主機名和名稱解析
目標
完成本節(jié)內容后琼懊,你能夠配置一個服務器的靜態(tài)主機名及其名稱解析阁簸,并測試結果。
更改系統(tǒng)主機名
hostname命令顯示或臨時修改系統(tǒng)的全稱主機名哼丈。
[root@host ~]# hostname host@example.com
可以在/etc/hostname文件中指定一個靜態(tài)主機名启妹。hostnamectl命令用來修改這個文件,可以用來查看系統(tǒng)完全合格的主機名的狀態(tài)醉旦。如果這個文件不存在饶米,則在接口分配了IP地址后,通過反向DNS查詢來設置主機名车胡。
[root@host ~]# hostnamectl set-hostname host@example.com
[root@host ~]# hostnamectl status
Static hostname: host.example.com
Icon name: computer-vm
Chassis: vm
Machine ID: 73ab164e278e48be9bf80e80714a8cd5
Boot ID: 6b1cbc4177164ef58c0e9ed4adb2904f
Virtualization: kvm
Operating System: Red Hat Enterprise Linux 8.0 beta (Ootpa)
CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:beta
Kernel: Linux 4.18.0-60.el8.x86_64
Architecture: x86-64
[root@host ~]# cat /etc/hostname
host@example.com
配置名稱解析
stub resolver 用于將主機名轉換為 IP 地址檬输,或者相反。它根據(jù) /etc/nsswitch.conf 文件的配置來決定查找的位置匈棘。默認情況下丧慈,/etc/hosts 文件中的內容會先被檢查。
[root@host ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.254 classroom.example.com
172.25.254.254 content.example.com
getent hosts hostname命令可以用來測試使用/ etc/hosts文件解析主機名主卫。
如果在 /etc/hosts 文件中沒有找到一個條目逃默,默認情況下,stub resolver 會嘗試使用 DNS 服務器來查找主機名簇搅。**/etc/resolv.conf **文件控制了此查詢的執(zhí)行方式完域。
- search:一個要用簡短的主機名嘗試的域名列表。這個和 domain 不應設置在同一個文件中瘩将;如果設置了吟税,則最后一個實例獲勝关噪。詳情請參閱 resolv.conf(5) 。
- nameserver:要查詢的命名服務器的IP地址乌妙。最多可以給定三個命名服務器指令使兔,如果其中一個命名服務器宕機,可以提供備份藤韵。
[root@host ~]# cat /etc/resolv.conf
# Generated by NetworkManager
domain example.com
search example.com
nameserver 172.25.254.254
NetworkManager使用連接配置文件中的DNS設置更新/etc/resolv.conf文件虐沥。使用nmcli來修改連接。
[root@host ~]# nmcli con mod ID ipv4.dns IP
[root@host ~]# nmcli con down ID
[root@host ~]# nmcli con up ID
[root@host ~]# cat /etc/sysconfig/network-scripts/ifcfg-ID
...output omitted...
DNS1=8.8.8.8
...output omitted...
nmcli con mod ID ipv4.dns IP的默認行為是用提供的新的IP列表替換之前的DNS設置泽艘。ipv4.dns參數(shù)前面的+或-符號會增加或刪除一個單獨的條目欲险。
[root@host ~]# nmcli con mod ID +ipv4.dns IP
將具有IPv6 IP地址2001:4860:4860:88的DNS服務器添加到連接static-ens3的命名服務器列表中。
[root@host ~]# nmcli con mod static-ens3 +ipv6.dns 2001:4860:4860::8888
測試DNS名稱解析
host HOSTNAME命令可以用來測試DNS服務器的連接性匹涮。
[root@host ~]# host classroom.example.com
classroom.example.com has address 172.25.254.254
[root@host ~]# host 172.25.254.254
254.254.25.172.in-addr.arpa domain name pointer classroom.example.com.
DHCP會在接口啟動時自動重寫/etc/resolv.conf文件天试,除非你在相關接口配置文件中指定PEERDNS=no。使用nmcli命令進行設置然低。
[root@host ~]# nmcli con mod "static-ens3" ipv4.ignore-auto-dns yes
總結
- TCP/IP網絡模型是一個簡化的喜每、四層的抽象集合,它描述了不同的協(xié)議如何相互作用雳攘,以便計算機通過互聯(lián)網從一臺機器向另一臺機器發(fā)送流量带兜。
- IPv4是當今互聯(lián)網上使用的主要網絡協(xié)議。IPv6 的目的是作為 IPv4 網絡協(xié)議的最終替代者吨灭。默認情況下刚照,Red Hat Enterprise Linux 以雙棧模式運行,并行使用兩種協(xié)議喧兄。
- NetworkManager是一個監(jiān)控和管理網絡配置的守護進程无畔。
- nmcli命令是用NetworkManager配置網絡設置的命令行工具。
- 系統(tǒng)的靜態(tài)主機名存儲在/etc/hostname文件中吠冤。hostnamectl命令用于修改或查看系統(tǒng)的主機名和相關設置的狀態(tài)浑彰。
hostname命令用于顯示或臨時修改系統(tǒng)的主機名。