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
文件。
內容如下所示:
這UUID是一串16進制的字符串,重復的可能性幾乎沒有。[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重復的可能性幾乎沒有,那為什么會沖突呢?
因為我們現在操作的是虛擬機,有一些情景會造成兩個虛擬機出現相同的UUID的情況。比如說快照和克隆。
你的真實機裝Linux系統,或者手動安裝的Linux虛擬機,都不會發生UUID沖突。
所以這個UUID沖突主要發生在虛擬機Linux系統中,並且有快照和克隆的時候。 - 如何解決?
復制鏡像有可能需要重置UUID
1)在網卡配置文件中手動刪除MAC地址行
[root@localhost ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
2)刪除MAC地址和UUID綁定文件#刪除的是第二行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
[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
命令即可。
如下圖所示:
注意:其中最主要的三個數據為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.x
中netstat
命令默認沒有安裝,如果需要使用,需要安裝net-snmp
和net-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
選項,所以只能看到監聽狀態的連接,而不能看到已經建立連接狀態的連接。
例如:
這個命令的輸出較多,簡單說明一下:
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
:套接字沒有被使用。
在這些狀態中,我們最常用的就是LISTEN
和ESTABLISHED
狀態,一種代表正在監聽,另一種代表已經建立連接。
使用2:查看本機有哪些程序開啟的端口
如果使用-p
選項,則可以查看到是哪個程序占用了端口,並且可以知道這個程序的PID。
例如:
使用3:查看所有連接
使用選項-an
可以查看所有連接,包括監聽狀態的連接(LISTEN
)、已經建立連接狀態的連接(ESTABLISHED
)、Socket
程序連接等。因為連接較多,所以輸出的內容有很多。
例如:
從Active UNIX domain sockets
開始,之后的內容就是Socket
程序產生的連接,之前的內容都是網絡服務產生的連接。我們可以在-an
選項的輸出中看到各種網絡連接狀態,而之前的-tuln
選項則只能看到監聽狀態。
使用4:查看網關地址
ifconfig
命令只能看到IP地址,Mac地址,子網掩碼。
如下圖所示:
但是我們並不同通過ifconfig
命令查看到網關,如果需要查看網關地址,就需要用到netstat
命令。
如下圖,執行命令:netstat -rn