『無慾則無求』Linux常用命令 — 33、常用網絡命令

(一)配置IP地址

1、配置IP地址

IP地址是計算機在互聯網中唯一的地址編碼。每臺計算機如果需要接入網絡和其他計算機進行數據通信,就必須配置唯一的公網IP地址。

配置IP地址有兩種方法:
1)setup工具(Red Hat系列專有)
2)vi /etc/sysconfig/network-scripts/ifcfg-eth0(手工修改配置文件)

真正標準的修改ip地址的方式,還是第二種方式。

2、重啓網絡服務

[rootelocalhost ~] # service network restart

3、虛擬機需要橋接到有線網卡,並重啓網絡服務。

也就是把網絡鏈接方式改成橋接模式。

4、重置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://blog.csdn.net/Liuyuelinjiayou/article/details/106891052

    如果換了好幾個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,基本上沒有可能在重複了。以上問題也就解決了。

(二)ifconfig命令

命令的基本信息

  • 命令名稱:ifconfig。
  • 英文原意:configure a network interface。
  • 所在路徑:/sbin/ifconfig。
  • 執行權限:超級用戶。
  • 功能描述:配置網絡接口。

ifconfig命令最主要的作用就是查看IP地址的信息,直接輸入ifconfig命令即可。
在這裏插入圖片描述
注意:其中最主要的三個數據爲IP地址、MAC地址、子網掩碼。

(三)ping 命令

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

1、ping命令的基本信息如下。

  • 命令名稱:ping。
  • 英文原意:send ICMP ECHO_REQUEST to network hosts。
  • 所在路徑:/bin/ping。
  • 執行權限:所有用戶。
  • 功能描述:向網絡主機發送ICMP請求。
令的基本格式如下:
[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在,用於檢查當前網段中有多少臺電腦可以通信。

(四)netstat 命令

netstat是網絡狀態查看命令,既可以查看到本機開啓的端口,也可以查看有哪些客戶端連接。
在CentOS7.x中netstat命令默認沒有安裝,如果需要使用,需要安裝net-snmp和net-tools軟件包。(CentOS6中自動安裝)

1、netstat命令的基本信息如下。

  • 命令名稱:netstat。
  • 英文原意:Print network connections,routing tables,interface statistics,masquerade connections,and multicast memberships。
  • 所在路徑:/bin/netstat。
  • 執行權限:所有用戶。
  • 功能描述:輸出網絡連接、路由表、接口統計、僞裝連接和組播成員。
命令格式如下:
[rootelocalhost ~] # netstat [選項]
選項:
-a:列出所有網絡狀態,包括 Socket程序
-c秒數:指定每隔幾秒刷新一次網絡狀態
-n:使用IP地址和端口號顯示,不使用域名與服務名
-p:顯示PID和程序名
-t:顯示使用TCP協議端口的連接狀況-u:顯示使用UDP協議端口的連接狀況
-1:僅顯示監聽狀態的連接
-r:顯示路由表

2、例子1:查看本機開啓的端口

這是本機最常用的方式,使用選項-tuln。因爲使用了-l選項,所以只能看到監聽狀態的連接,而不能看到已經建立連接狀態的連接。例如:
在這裏插入圖片描述
這個命令的輸出較多。

  • 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狀態,一種代表正在監聽,另一種代表已經建立連接。

3、例子2:查看本機有哪些程序開啓的端口

如果使用“p”選項,則可以查看到是哪個程序佔用了端口,並且可以知道這個程序的PID。例如:
在這裏插入圖片描述

4、例子3:查看所有連接

使用選項“-an”可以查看所有連接,包括監聽狀態的連接(LISTEN)、已經建立連接狀態的連接(ESTABLISHED)、Socket程序連接等。因爲連接較多,所以輸出的內容有很多。例如:
在這裏插入圖片描述
從“Active UNIX domain sockets”開始,之後的內容就是Socket程序產生的連接,之前的內容都是網絡服務產生的連接。我們可以在“-an”選項的輸出中看到各種網絡連接狀態,而之前的“-tuln”選項則只能看到監聽狀態。

5、例子4:查看網關地址

ifconfig命令只能看到IP地址,Mac地址,子網掩碼。如下圖
在這裏插入圖片描述
但是我們並不同通過ifconfig命令查看到網關,如果需要查看網關地址,就需要用到netstat 命令。如下圖

執行命令:netstat -rn
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章