天天看點

《Linux指令、編輯器與Shell程式設計》讀書筆記9-Linux網絡管理一、網絡接口配置二、路由三、主機名四、其他網絡指令五、網絡通信過程

一、網絡接口配置

【檢視網卡資訊】

1. ifconfig

*錯誤和丢棄資料包數量,與網絡品質有關;溢出資料包總數通常與緩沖區大小及收發資料包速率有關。

2. 檢視所有網絡接口(包括被禁用)

ifconfig  -a

3. 檢視IP位址:

ip address show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

   inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

   link/ether 00:0c:29:6b:8d:81 brd ff:ff:ff:ff:ff:ff

   inet 192.168.233.129/24 brd 192.168.233.255 scope global eth0

   inet6 fe80::20c:29ff:fe6b:8d81/64 scope link

      valid_lft forever preferred_lft forever

【配置網卡】

ifconfig <interface_name>  <ip_address>  netmask <netmask>  [up | down]

上述指令也可以寫成:

ifconfig <interface_name>  <ip_address>  </prefix_len>  [up | down]

其中prefix_len表示以“長度”表示子網路遮罩,需要将子網路遮罩轉換為2進制,然後将這穿2進制數中1的個數寫到prefix_len的位置。

【舉例】

#配置網卡eth1的ip和子網路遮罩,并使該網卡立即生效

ifconfig eth0  192.168.233.129  netmask  255.255.255.0  up

#或者寫成

ifconfig eth0  192.168.233.129/24  up

【網卡配置檔案】

位于/etc/sysconfig/network下,以ifcfg-ethX命名,X是網卡的編号。此外,ifcfg-lo是回環接口的配置檔案。

ifcfg-ethX檔案内容如下:

BOOTPROTO=’static'

STARTMODE='auto'

DEVICE=eth0

ONBOOT=yes

NETMASK=255.255.255.0

IPADDR=192.168.233.129

【配置項說明】

·BOOTPROTO:網卡開啟後應如何擷取配置,參數值如下:

         dhcp:從dhcp伺服器自動擷取ip、掩碼、預設網關及DNS位址等資訊;

         static:使用該配置檔案中的設定,這時要求該檔案中至少包含IP、預設網關、子網路遮罩這幾項資訊。

         none:有兩種含義,一是這個網卡有其他用途(比如網卡處于bonding)、不需要使用IP位址;還可能網卡使用靜态IP位址。

·STARTMODE:決定了該網卡以何種方式啟動.有以下幾個參數:

         manual:需要系統啟動後手動輸入ifup  網卡名(比如eth0)進行啟動;

         auto:網卡會在系統啟動時啟動(如果網絡連接配接可用的話),或者在網絡連接配接被激活時、實時激活該網卡;

         hotplug:和auto功能類似,差別在于網卡啟動失敗後、不會再嘗試rcnetwork指令;

         nfsroot:與auto含義類似,差別在于配置了該參數後、該網卡就無法通過rcnetwork stop.  ifdown  <interface>  -o force指令關閉;該參數用于iBFT中。

         *BFT是一種将 iSCSI 引導裝置的相關參數傳遞到作業系統的方法。首次從 iSCSI 引導時,系統上的iSCSI 引導固件将連接配接到 iSCSI 目标。如果登入成功,則固件會将網絡和 iSCSI 引導參數儲存到iBFT,并将該表存儲在系統記憶體中。系統可使用此表配置其自己的 iSCSI 連接配接和網絡并啟動。

         off:表示該網卡無法通過任何方法激活

         ifplugd:多網卡環境下,網卡的啟動優先級;如果配置了這個參數,則下面的IFPLUGD_PRIORITY參數也需要配置到該檔案中;

·IFPLUGD_PRIORITY:當STARTMODE=ifplugd時,該參數辨別了該網卡的啟動優先級,預設為0.

·DEVICE:該網卡的名字

·NETMASK:子網路遮罩

·IPADDR:IP位址

·BROADCAST:廣播位址(網絡号),IP位址與子網路遮罩通過二進制“與”運算後自動擷取,一般不用寫(配了反而容易配錯)

*配置項的名字一定要用大寫,裡面的參數使用小寫字母。其他的配置項說明可以登入系統通過man  ifcfg指令檢視。

【改變網絡服務狀态】

啟動網絡服務

service network  start

停止網絡服務

service network  stop

重新開機網絡服務

service network  restart

停、啟某個網卡:

ifdown eth0(或者:ifconfig  eth0  down)

ifup eth0(或者:ifconfig  eth0  up)

檢視網卡狀态及網卡型号:

rcnetwork  status

二、路由

*路由器:為資料包尋找最佳傳輸路徑的網絡裝置,是一種專門負責計算資料包傳輸路徑的“計算機”。

【路由表】

使用route指令檢視主機路由表(或者使用route  -n,或者netstat  -rn):

Kernel IP routing table

Destination     Gateway         Genmask         Flags  Metric  Ref     Use  Iface

loopback                     *             255.0.0.0               U     0     0        0  lo

link-local                     *             255.255.0.0             U     0     0        0  eth0

192.168.233.0          *            255.255.255.0           U    0      0        0  eth0

【結果說明】

Destination:目标IP,default表示預設路由(就是指向預設網關的條目)。

Gateway:網關位址,即下一跳的路由器位址,*表示直接與主機連接配接,不需要網關位址。

Genmask:目标IP的子網路遮罩

Flags:路由标記,U-活躍狀态,H-目标是主機,G-指向預設網關的路由,R:恢複動态路由産生的條目,D-背景路由程式動态安裝,M-路由背景程式修改過的條目,C-緩存的路由條目,!-拒絕路由的條目

Metric:該路由到達目标IP的代價值,越低越好

Ref:該條路由被引用的次數

Use:該條路由被路由軟體查找的次數

Iface:目标網卡名

【增/删預設路由】

route [add|del]  default  gw  ip_address

該指令并不會儲存配置到配置檔案中,但可以快速确定網絡接口對應的網絡

【增/添路由條目】

route[add|del] [net|host] ipadd1 [netmask mask_IP] [gw|dev] gw_ipadd2|dev_name

[add|del]:添加/删除一條路由

[net|host]:目标是一個網絡還是主機

ipadd1:目标網絡的IP位址

ipadd2:下一跳路由器的IP位址

[netmask mask_IP]:目标主機IP的子網路遮罩,如果目标是一個網絡,此參數省略。

[gw|dev]:下一跳路由器的位址或要使用的網絡接口

【舉例】

1. 新增路由

route  add  -net  192.168.1.0 netmask  255.255.255.0  gw  192.168.233.1

route  add  -net  192.168.1.0/24 gw  192.168.233.1

# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

loopback        *               255.0.0.0       U    0      0        0 lo

link-local      *               255.255.0.0     U    0      0        0 eth0

192.168.1.0     192.168.233.1   255.255.255.0   UG   0      0       0 eth0

192.168.233.0   *               255.255.255.0   U    0      0        0 eth0

2. 删除路由

route del  -net  192.168.1.0/24  gw 192.168.233.1

【永久配置路由】

SUSE下打開/etc/sysconfig/network/routes,填寫如下:

#Destination    Dummy/Gateway    Netmask  Device

第一列為路由目标,可以是網絡或主機的IP位址;

第二列包含預設網關或通過其可通路主機或網絡的網關;

第三列包含網關後的網絡或主機的子網路遮罩;

第四清單示該條路由從哪個裝置出去。

*注:實際試了一下,添加後重新開機網絡,用route或者netstat -rn指令查不出新增的路由,待定。

【路由彙總】

如果路由表條目過多,會導緻網絡性能下降,這是可以将一組路由條目彙總成單個路由廣播,比如,要将192.168.192.0~192.168.233.0的網絡彙總成一條路由廣播添加到路由表中:

route add  -net  192.168.192.0/18  dev  eth0

計算路由器的彙總路由,需判斷這些位址最左邊的多少位相同的。計算彙總路由的步驟如下: 

第一步:将位址轉換為二進制格式,并将它們對齊 

第二步:找到所有位址中都相同的最後一位。在它後面劃一條豎線。

第三步:計算豎線前面有多少位是相同的,記為n。彙總路由為第1個IP位址加上斜線,斜線後面寫剛才數出來的數字n。

三、主機名

【檢視主機名】

hostname

【修改主機名】

1. hostname new_hostname

2. SUSE下修改/etc/ HOSTNAME檔案,将.site前面的字元串改成新主機名即可

【/etc/hosts】

修改主機名後,還要修改/etc/hosts檔案中的映射關系,将本機IP和主機名加到這個檔案中,空格分隔;以保證依賴主機名工作的服務能夠正常工作。

四、其他網絡指令

【ping】

ping [option]  ip_address

【OPTION】

c:指定發送資料包的個數

f:快速發包,用于極限測試

s:指定發送資料包的大小,機關Bytes

l:指定發送資料包的網絡端口

R:顯示資料包經過的路由

t:指定資料包使用的TTL值

*TTL:Time To Live的縮寫,該字段指定IP包被路由器丢棄之前允許通過的最大網段數量。TTL是IPv4標頭的一個8 bit字段。最大值255,預設值64。

【traceroute】

可以測試出經過的路由中、哪個節點有問題

【netstat】

【OPTION】

t:列出正在使用的tcp連接配接

u:列出正在使用的UDP連接配接

a:檢視所有正在連接配接中的套接字

n:以IP位址的形式顯示(而非域名)

p:顯示套接字對應的程序名即PID

l:隻顯示正處于監聽狀态的套接字

*套接字:系統處理相同端口的不同TCP、UDP連接配接的接口

i:檢視網卡使用情況

例:顯示正在監聽網路的程序、端口、PID

netstat -tunlp

【輸出說明】

Iface:網卡名

MTU和Met:最大傳輸單元及路徑成本

RX-OK和TX-OK:正常發送、接受的資料包個數

RX-ERR和TX-ERR:發送和接收到的錯誤資料包個數

RX-DRP和TX-DRP:發送、接收過程中丢棄的資料包個數

RX-OVR和TX-OVR:發送、接收過程中溢出(或者叫丢失)的資料包個數

Flg:辨別了目前網卡的工作狀态,隻有處于RU狀态的網卡才能正常工作

         B:該網卡設定了廣播位址

         M:處于混亂模式,可以接收所有資料包

         R:網卡正在運作,可以接收資料包

         U:網卡處于開啟狀态

         L:該網卡是一個環回接口

State:使用a、n等選項時會被展示

         ESTABLISHED:目前套接字已經存在一個連接配接

         SYN_SENT:套接字正在積極嘗試建立連接配接

         SYN_RECV:已經收到一個連接配接請求

         CLOSE_WAIT:遠端端口已關閉,正在等待套接字關閉

         FIN_WAIT1:套接字已經關閉,連接配接正在關閉

         CLOSED:套接字沒有被使用

         LISTEN:套接字處于監聽狀态

         UNKNOWN:套接字狀态位置

【域名解析】

dig和nslookup

五、網絡通信過程

主要經曆以下三個過程:

【域名轉換】

通信之前,會對目标位址進行檢查,如果位址是一個域名,則需要對域名進行轉換;首先檢視hosts檔案中是否包含對應記錄,如果沒有,則會到對應的DNS伺服器上查詢。

【封裝資料包】

經過應用層和傳輸層的某些協定封裝,資料被傳遞到網絡層,開始經IP協定,對資料進行拆分、封裝,并加上IP頭,将其傳遞到資料鍊路層再次封裝(加上MAC位址)和校驗資訊,最後經過實體層傳輸。

【資料發送】

按照路由表中的路由進行傳輸。

【網絡故障排查思路】

1.      ping指令測試網絡通訊是否正常,否則需要确認預設網關、DNS位址是否合理正确

2.      traceroute判斷故障發生在哪個路由器

3.      檢查實體連接配接

《Linux指令、編輯器與Shell程式設計》讀書筆記9-Linux網絡管理一、網絡接口配置二、路由三、主機名四、其他網絡指令五、網絡通信過程

繼續閱讀