『學了就忘』Linux基礎命令 — 34、配置網路相關命令

繁華似錦Fighting發表於2021-11-10

1、配置網路常用命令

(1)配置IP地址

IP地址是計算機在網際網路中唯一的地址編碼。每臺計算機如果需要接入網路和其他計算機進行資料通訊,就必須配置唯一的公網IP地址。

配置IP地址有兩種方法:

  • 1)setup工具(Red Hat系列專有)
  • 2)vi /etc/sysconfig/network-scripts/ifcfg-eth0(手工修改配置檔案)

提示:真正標準的修改IP地址的方式,還是第二種方式。

(2)網路服務

使用service指令碼來排程網路服務:

  • 開啟網路服務:[rootelocalhost ~]# service network start
  • 關閉網路服務:[rootelocalhost ~]# service network stop
  • 重啟網路服務:[rootelocalhost ~]# service network restart

直接執行網路服務的管理指令碼:

各類服務指令碼都存放在/etc/init.d(或/etc/rc.d/init.d)目錄下,網路服務network則在/etc/init.d目錄中。

  • 啟動網路服務:/etc/init.d/network start
  • 關閉網路服務:/etc/init.d/network stop
  • 重啟網路服務:/etc/init.d/network restart

說明:如果虛擬機器需要橋接到有線網路卡,並重啟網路服務。也就是要把網路連結方式改成橋接模式。

(3)重置UUID

有的時候在重啟網路的時候,最後一個不是綠色的確定,而是紅色的失敗,如下面描述:

# 重啟網路
[root@DevOps ~]# service network restart
正在關閉介面etho:
關閉環回介面:
彈出介面 eth0:Determining if ip address 192.168.44.8 is already in use for device eth0..
[確定]

# 中文
[root@DevOps ~]# service network restart
正在關閉介面 eth0:                                        [確定]
關閉環回介面:                                             [確定]
彈出環回介面:                                             [確定]
彈出介面 eth0:
正在決定 eth0 的 IP 資訊...完成。
                                                           [確定]
  • 是什麼原因?
    這裡造成失敗,可能最大的原因是IP地址衝突了,換個IP即可,也可以選擇自動分配IP地址。(橋接模式在區域網內,很容易造成IP地址衝突,為什麼,請看之前文章https://www.cnblogs.com/liuyuelinfighting/p/15484936.html
    如果換了好幾個IP地址,重啟網路服務,還不能解決上述問題,那可能就不是IP地址衝突了,可能就是UUID衝突。
  • 什麼是UUID?
    UUID:唯一識別符,這個UUID是從Red Hat 6系列出現的。會給你Linux系統上的分割槽、網路卡都生成一串UUID符號。
    這個UUID號是寫在網路卡配置檔案中。也就是/etc/sysconfig/network-scripts/ifcfg-eth0檔案。
    內容如下所示:
    [root@DevOps ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    HWADDR=00:0c:29:3f:81:04
    TYPE=Ethernet
    `UUID=f9b5add2-688c-4b1b-a7cf-e1d0ba66adf3`
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=dhcp
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
    這UUID是一串16進位制的字串,重複的可能性幾乎沒有。
  • 既然UUID重複的可能性幾乎沒有,那為什麼會衝突呢?
    因為我們現在操作的是虛擬機器,有一些情景會造成兩個虛擬機器出現相同的UUID的情況。比如說快照和克隆。
    你的真實機裝Linux系統,或者手動安裝的Linux虛擬機器,都不會發生UUID衝突。
    所以這個UUID衝突主要發生在虛擬機器Linux系統中,並且有快照和克隆的時候。
  • 如何解決?
    複製映象有可能需要重置UUID
    1)在網路卡配置檔案中手動刪除MAC地址行
    [root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
    #刪除的是第二行HWADDR(MAC地址)
    #因為UUID是依賴MAC地址計算出來的。
    [root@DevOps ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    `HWADDR=00:0c:29:3f:81:04`
    TYPE=Ethernet
    UUID=f9b5add2-688c-4b1b-a7cf-e1d0ba66adf3
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=dhcp
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
    2)刪除MAC地址和UUID繫結檔案
    [root@localhost ~] # rm -rf/etc/udev/rules.d/70-persistent-net.rules
    3)重啟Linux
    [rootelocalhost ~] # reboot
    重啟之後UUID就會重新計算,所計算出來的UUID,基本上沒有可能在重複了。以上問題也就解決了。

2、ifconfig命令

ifconfig命令的基本資訊:

  • 命令名稱:ifconfig
  • 英文原意:configure a network interface
  • 所在路徑:/sbin/ifconfig
  • 執行許可權:超級使用者。
  • 功能描述:配置網路介面。

ifconfig命令最主要的作用就是檢視IP地址的資訊,直接輸入ifconfig命令即可。

如下圖所示:

image

注意:其中最主要的三個資料為IP地址、MAC地址、子網掩碼。

3、ping命令

ping是常用的網路命令,主要通過ICMP協議進行網路探測,測試網路中主機的通訊情況。
(原理是我向對方發一個包,對方回覆我了,證明這個網路是通的。)

(1)ping命令的基本資訊

  • 命令名稱:ping
  • 英文原意:send ICMP ECHO_REQUEST to network hosts
  • 所在路徑:/bin/ping
  • 執行許可權:所有使用者。
  • 功能描述:向網路主機傳送ICMP請求。

ping命令的基本格式如下:

[root@localhost ~]# ping [選項] IP

選項:
  -b:後面加入廣播地址,用於對整個網段進行探測
  -c次數:用於指定ping的次數
  -s位元組:指定探測包的大小

# 提示:Linux系統下用ctrl+c進行終止。

(2)例子:探測網段中的可用主機

ping命令中,可以使用-b選項,後面加入廣播地址,探測整個網段。我們可以使用這個選項知道整個網路中有多少主機是可以和我們通訊的,而不用一個一個IP地址地進行探測。例如:

#探測192.168.103.0/24網段中有多少可以通訊的主機
[root@localhost ~]# ping -b -c 3 192.168.103.255
WARNING:pinging broadcast address PING 192.168.103.255(192.168.103.255)56(84)bytes of data.
64 bytes from 192.168.103.199:icmp seq=1 tt1=64 time=1.95 ms
64 bytes from 192.168.103.168:icmp seq=1 tt1=64 time=1.97 ms(DUP!)
64 bytes from 192.168.103.252:icmp seq=1 tt1=64 time=2.29 ms(DUP!)
..省略部分內容…

說明:192.168.103.255:225為廣播地址,是詢問103網段有多少個IP在,用於檢查當前網段中有多少臺電腦可以通訊。

4、netstat 命令

netstat是網路狀態檢視命令,既可以檢視到本機開啟的埠,也可以檢視有哪些客戶端連線。
CentOS7.xnetstat命令預設沒有安裝,如果需要使用,需要安裝net-snmpnet-tools軟體包。(CentOS6中自動安裝)

netstat命令的基本資訊:

  • 命令名稱:netstat
  • 英文原意:Print network connections,routing tables,interface statistics,masquerade connections,and multicast memberships
  • 所在路徑:/bin/netstat
  • 執行許可權:所有使用者。
  • 功能描述:輸出網路連線、路由表、介面統計、偽裝連線和組播成員。

netstat命令格式如下:

[rootelocalhost ~]# netstat [選項]

選項:
  -a:列出所有網路狀態,包括 Socket程式
  -c秒數:指定每隔幾秒重新整理一次網路狀態
  -n:使用IP地址和埠號顯示,不使用域名與服務名
  -p:顯示PID和程式名
  -t:顯示使用TCP協議埠的連線狀況-u:顯示使用UDP協議埠的連線狀況
  -1:僅顯示監聽狀態的連線
  -r:顯示路由表

使用1:檢視本機開啟的埠

這是本機最常用的方式,使用選項-tuln。因為使用了-l選項,所以只能看到監聽狀態的連線,而不能看到已經建立連線狀態的連線。

例如:

image

這個命令的輸出較多,簡單說明一下:

  • Proto:網路連線的協議,一般就是TCP協議或者UDP協議。
  • Recv-Q:表示接收到的資料。已經在本地的緩衝中,但是還沒有被程式取走。
  • Send-Q:表示從本機傳送,對方還沒有收到的資料。依然在本地的緩衝中,一般是不具備ACK標誌的資料包。
  • Local Address:本機的IP地址和埠號。
  • Foreign Address:遠端主機的IP地址和埠號。
  • State:狀態。常見的狀態主要有以下幾種。
    • LISTEN:監聽狀態,只有TCP協議需要監聽,而UDP協議不需要監聽。
    • ESTABLISHED:已經建立連線的狀態。如果使用“-l”選項,則看不到已經建立連線的狀態。
    • SYNSENT:SYN發起包,就是主動發起連線的資料包。
    • SYNRECV:接收到主動連線的資料包。
    • FINWAIT1:正在中斷的連線。
    • FINWAIT2:已經中斷的連線,但是正在等待對方主機進行確認。
    • TIMEWAIT:連線已經中斷,但是套接字依然在網路中等待結束。
    • CLOSED:套接字沒有被使用。

在這些狀態中,我們最常用的就是LISTENESTABLISHED狀態,一種代表正在監聽,另一種代表已經建立連線。

使用2:檢視本機有哪些程式開啟的埠

如果使用-p選項,則可以檢視到是哪個程式佔用了埠,並且可以知道這個程式的PID。

例如:

image

使用3:檢視所有連線

使用選項-an可以檢視所有連線,包括監聽狀態的連線(LISTEN)、已經建立連線狀態的連線(ESTABLISHED)、Socket程式連線等。因為連線較多,所以輸出的內容有很多。

例如:

image

Active UNIX domain sockets開始,之後的內容就是Socket程式產生的連線,之前的內容都是網路服務產生的連線。我們可以在-an選項的輸出中看到各種網路連線狀態,而之前的-tuln選項則只能看到監聽狀態。

使用4:檢視閘道器地址

ifconfig命令只能看到IP地址,Mac地址,子網掩碼。

如下圖所示:

image

但是我們並不同通過ifconfig命令檢視到閘道器,如果需要檢視閘道器地址,就需要用到netstat 命令。

如下圖,執行命令:netstat -rn

image

相關文章