一文細講Linux下網路的管理
這篇主要講解在 Linux下網路的管理 。
那麼接下來就開始吧,如果文章有錯誤的地方請大家多多包涵,不吝在評論區指正哦~
宣告:基於Centos6.9
一、Linux下的網路
Linux 支援各種協議型別 的網路
- TCP/IP、NetBIOS/NetBEUI、IPX/SPX、AppleTake等
- 在網路底層也支援Ethernet、Token Ring、ATM、PPP(PPPoE)、FDDI、Frame Relay等網路協議。
- 這些網路協議 是Linux核心提供的功能 ,具體的支援情況由核心編譯引數決定。

配置網路引數有 兩種 方式:
- 臨時性網路配置
- 通過 命令 修改當前核心中的網路相關引數實現,配置後 立即 生效,重新開機後失效
- 永久性網路配置
- 通過直接 修改 網路相關的 配置檔案 實現,需要 重啟服務 ,重新開機後保留所有配置
在Linux下配置網路,總會遇到 橋接和NAT模式的概念 的,這裡我簡要摘抄一下:
- 橋接模式的虛擬機器,就像一個在路由器"民政局"那裡"上過戶口"的成年人,有自己單獨的居住地址,雖然和主機住在同一個大院裡,但好歹是有戶口的人,可以大搖大擺地直接和外面通訊。
- NAT模式的虛擬機器,純粹就是一個沒上過戶口的黑戶,路由器"民政局"根本不知道有這麼個人,自然也不會主動和它通訊。即使虛擬機器偶爾要向外面傳送點的信件,都得交給主機以主機的名義轉發出去,主機還專門請了一位叫做NAT的老大爺來專門負責這些虛擬機器的發信、收信事宜。
- 僅主機模式的虛擬機器,純粹是一個徹徹底底的黑奴,不僅沒有戶口、路由器"民政局"不知道這麼號人,還被主機關在小黑屋裡,連信件也不準往外發。
參考資料:
- zhuanlan.zhihu.com/p/32948325 --VMware網路連線模式—橋接、NAT以及僅主機模式的詳細介紹和區別(軟體指南針)
1.1常用的管理網路命令
網路介面相關:
- 檢視網路介面配置:
ifconfig [ethX]
- 網路介面的啟用與停用:使用
ifup ethX
命令來啟用指定的介面,使用ifdown ethX
命令來禁用指定的介面
臨時配置相關:
ifconfig route hostname sysctl
使用命令來做網路的臨時配置,要做到永久配置就需要 直接修改檔案 的方式了!

網路檢測的常用工具:
- ifconfig 檢測網路介面配置
- route 檢測路由配置
- ping 檢測網路連通性
- netstat 檢視網路狀態
- lsof 檢視指定IP 和/或 埠的程序的當前執行情況
- host/dig/nslookup 檢測DNS解析
- traceroute 檢測到目的主機所經過的路由器
- tcpdump 顯示本機網路流量的狀態
1.1配置Linux網路練習題
檢查windows的virtualbox虛擬網絡卡是否禁用,如果禁用,請啟動;以root賬戶登入,用ifconfig檢查當前網路配置;然後分別用ifup命令啟動eth0網絡卡和eth1網絡卡,觀察結果,並記錄網絡卡繫結的ip地址,在第五部分記錄。關閉檢查防火牆的狀態,如果防火牆已啟動,請關閉linux系統的防火牆,





啟動putty,在Host Name輸入框中輸入eth1網絡卡當前的ip地址,connection type 選擇SSH,Port為22;按“open”按鈕,提示Putty Security Alert對話方塊,選擇確定;分別以root賬戶,jkXX賬戶登入



在root賬戶登入的putty終端上檢視(ps au)當前使用者執行的程序,找到jk08賬戶執行的shell程式的pid,並且在第五部分記錄。在root賬戶登入的putty終端上,用kill命令殺死剛才記錄的shell程式;



殺死一個程序需要什麼條件?如果是peter賬戶,是否可以殺死jason賬戶執行的程序?
答:殺死一個程序,應獲得這個程序控制的權利,比如獲得程序所屬賬戶的許可權;或者獲得超級賬戶的許可權。如果是peter賬戶,沒有獲得jason賬戶的許可權,因此,殺死jason賬戶下執行的程序是被禁止的。
用路由命令檢視當前網路路由狀況,並用ping命令測試外部網站地址是否可以連通;並截圖



用ifconfig檢視eth0的當前ip地址;修改ip地址,地址的最後一段數字比原來的大1,檢視是否成功;用ifconfig修改eth0的地址,要求指定掩碼和廣播地址,其中掩碼為B類地址掩碼;用路由命令觀察路由表的變化;



在eth1網絡卡上新增一個主機路由,要求其主機ip地址為192.168.3.3;在eth0網絡卡上新增一個網路路由,網路地址為10.20.0.0,掩碼是255.255.0.0;觀察路由表中的預設路由,根據步驟(2)觀察到的預設路由,恢復預設閘道器路由,並測試網路與外部網站的連通性;





給網絡卡eth1設定別名eth1:0,ip地址比eth1的ip地址最後一段數字大1;從windows端,用ping命令測試eth1和eth1:0的連通性;停止eth1:0工作,觀察結果,並截圖



修該主機名稱為serverXX(XX為學生學號末兩位),退出shell重新登入;觀察核心引數net.ipv4.ip_forward的值,將其修改為1;


為什麼預設路由記錄不見了,可能的原因是?
答:修改了預設路由經過的網絡卡eth0的ip地址,對原有路由影響較大,因此係統自動將預設路由刪除。
一個網絡卡有多個IP地址有什麼好處?
答:好處是有利於在一個網絡卡上繫結多個相同的網路服務,比如可以繫結多個網站。
編輯eth0和eth1的網路介面檔案,要求修改為啟動時自動啟動裝置;並且要求eth1的地址為192.168.56.121,網路字首為26;系統重啟,檢驗網絡卡是否自動啟動,及其IP地址;




編輯本地域名解析配置檔案,要求新增10.0.2.2地址,對應的域名為gateXX(其中XX為學生學號的末兩位),存檔退出;執行ping命令,引數為gateXX,檢查通過域名是否可以連通對應的ip地址;


編輯檔案,使得系統支援ip包轉發;用sysctl -p命令讓修改結果生效;



用ping命令測試網站www.qq.com,要求只發送10次ICMP測試包;用netstat命令觀察網路介面資訊;用netstat命令觀察路由表資訊;用netstat命令觀察正在監聽的tcp埠;用netstat命令觀察正在監聽的udp埠;





sysctl -p看到的是配置檔案中的資料,還是記憶體中的資料?
答:看到的既是配置檔案中的資料,也是記憶體中的資料。因為-p引數的意思是把配置檔案中的資料更新到記憶體中。
二、安裝軟體
一般我們的Centos下安裝軟體可以 直接使用yum命令來安裝 ,非常方便。在yum之前還有一個RPM,來看看它的區別:
- rpm是由紅帽公司開發的軟體包管理方式,使用rpm我們可以方便的進行軟體的安裝、查詢、解除安裝、升級等工作。但是rpm軟體包之間的依賴性問題往往會很繁瑣,尤其是軟體由多個rpm包組成時。
- Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝, 可以自動處理依賴性關係 ,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
2.1yum使用
yum[全域性引數] 命令 [命令引數]

常用的全域性引數:
-y -C --enablerepo=REPO --disablerepo=REPO --installlroot=PATH


2.2幾種常用的網路工具


2.3練習yum安裝軟體與使用
用yum查詢軟體包tree,lsof,traceroute,觀察結果;查詢tree軟體包的基本資訊;安裝tree,lsof,traceroute三個軟體包










執行命令tree,檢視/etc目錄下的子目錄情況;執行lsof檢視使用網路tcp埠22的是哪個應用;用traceroute命令觀察某個網站經過了多少個路由





用瀏覽器開啟網站 http://www.rpmfind.net ,分別查詢軟體包system-config-network-tui, tree, ntsysv,找到軟體包,並複製下載連結;在linux中用wget下載連結,成功下載後,用長格式列出該檔案








用rpm工具檢視所有已經安裝的軟體包,並將結果輸出到檔案installXX.txt,其中(XX為學生學號末兩位);用rpm檢視bash的軟體包資訊;用rpm檢視安裝包檔案的數字簽名信息;



使用rpm分別安裝第2步下載的三個軟體包;它們都能順利安裝嗎?為什麼會出錯;觀察結果,




哪個軟體包不能順利安裝,為什麼?應該怎樣安裝該軟體?
答:system-config-network-tui-1.6.0.el6.3-4.el6.noarch.rpm軟體包不能順利安裝,因為這個軟體包依賴其他軟體包,應把依賴的軟體包先安裝,才能安裝這個軟體包。可以yum工具安裝,它可以自動安裝依賴的軟體包。
四、總結
本文主要是總結了Linux下網路和安裝軟體的知識~~~ 這兩個知識點在Linux下也是很重要的,是學習Linux的基礎~
NDK基礎開發流程—Linux流程

小編順便準備了關於NDK—Linux的深入講解的視訊,如需要的話可以加群免費領取。
本人Java開發4年Android開發5年,定期分享Android高階技術及經驗分享,歡迎大家關注~(分享內容包括不限於高階UI、效能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter等全方面的Android進階實踐技術;希望能幫助到大家,也節省大家在網上搜索資料的時間來學習,也可以分享動態給身邊好友一起學習!)