Linux網路命令

2022-10-22 06:01:33

一、網路設定命令

1.1ifconfig檢視當前活著的網路介面資訊

[root@localhost ~]#ifconfig -a    #表示顯示所有網路卡包括沒有啟動的網路卡
[root@localhost ~]#ifconfig ens33 down    #關閉網路卡
[root@localhost ~]#ifconfig ens33 up        #開啟網路卡
[root@localhost ~]#ifconfig ens36:0 192.168.10.200    #設定臨時虛擬網路卡
[root@localhost ~]#ifconfig -s            #網路通訊情況

補充1:nmcli(綠色代表正在用的)

補充2:ip address修改IP地址

[root@feizirui ~]#ip address add 192.168.10.100/24 dev ens33
[root@feizirui ~]#ip address del 192.168.10.10/24 dev ens33

1.2hostname檢視或設定主機名

檢視主機名:
[root@localhost ~]#hostname
localhost.localdomain

通過hostnamectl來修改主機名:
[root@localhost ~]#hostnamectl set-hostname feizirui
[root@localhost ~]#bash
[root@feizirui ~]#

1.3route檢視或設定主機中的路由表

[root@localhost ~]#route

[root@localhost ~]#route -n

1.4netstat檢視網路連線狀態

netstat 選項
-a:顯示主機中所有活動的網路連線資訊(包括監聽、非監聽狀態的伺服器埠)
-n:以數位的形式顯示相關的主機地址、埠等資訊 
-r:顯示路由表資訊
-l:顯示處於監聽(Listening)狀態的網路連線及埠資訊 
-t:檢視 TCP(Transmission Control Protocol,傳輸控制協定)相關的資訊 
-u:顯示 UDP(User Datagram Protocol,使用者資料包協定)協定相關的資訊
-p:顯示與網路連線相關聯的程序號、程序名稱資訊(該選項需要 root 許可權)

1.5ss檢視網路連續情況

  • ss命令主要用於獲取 socket 統計資訊,它可以顯示和 netstat 命令類似的輸出內容。但ss命令的優勢在於它能夠顯示更多更詳細的有關TCP和UDP連線狀態的資訊,而且比netstat更快速更高效。當伺服器的socket連線數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/,執行速度都會很慢。ss命令快的祕訣在於,它利用到了TCP協定棧中tcp_diag。tcp_diag是一個用於分析統計的模組,可以獲得Linux 核心中第一手的資訊,這就確保了ss命令的快捷高效。
  • ss命令是Linux CentOS 7中iproute軟體包的一部分,預設已經安裝。
ss [選項] 
-t:tcp協定相關
-u:udp協定相關
-w:裸通訊端相關
-x:unix sock相關
-l:listen狀態的連線
-a:所有
-n:數位格式
-p:相關的程式及PID
-e:擴充套件的資訊
-m:記憶體用量
-o:計時器資訊
-r:把IP解釋為域名,把埠號解釋為協定名稱

1.6ping測試網路連通性(使用ICMP協定)

ping [選項] 目標主機

1.7traceroute路由追蹤

traceroute IP地址

1.8nslookup域名解析

nslookup 域名

補充:dig可以顯示出更多詳細資訊

1.9永久設定網路相關組態檔

(1)設定網路卡

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 

BOOTPROTO=static    ##獲取地址靜態方式
ONBOOT=yes        ##開機自啟
IPADDR=192.168.10.10    ##IP地址
NETMASK=255.255.255.0    ##子網掩碼
GATEWAY=192.168.10.2    ##閘道器
DNS1=8.8.8.8        ##DNS1:谷歌的
DNS2=114.114.114.114    ##DNS2:三大運營商

[root@localhost ~]#systemctl restart network    ##重啟網路卡
[root@localhost ~]#ping www.baidu.com -c4

 (2)紅帽修改網路卡命令:

1 [root@localhost ~]#nmcli con mod ens33 ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.2 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
2 [root@localhost ~]#nmcli con reload    ##重新載入
3 [root@localhost ~]#nmcli con up ens33   ##開啟網路卡

(3)域名解析組態檔:/etc/hosts

hosts檔案和DNS伺服器的比較

  • 預設情況下,系統首先從hosts檔案查詢解析記錄
  • hosts檔案只對當前的主機有效
  • hosts檔案可減少DNS查詢過程,從而加快存取速度

1.10scp遠端同步

[root@localhost ~]#scp /etc/passwd root@192.168.10.20:/opt/passwd

1.11多網路卡繫結

將多塊網路卡繫結同一IP地址對外提供服務,可以實現高可用或者負載均衡。直接給兩塊網路卡設定同一IP地址是不可以的。通bonding,虛擬一塊網路卡對外提供連線,物理網路卡的被修改為相同的MAC地址。

實驗環境:CentOS7
實驗目的:bond將多塊網路卡根據排列組合的功能的不同當成一塊網路卡使用
1、新增一塊網路卡
2、修改組態檔
cd /etc/sysconfig/network-scripts/
設定1:
vim ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

設定2:
vim ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
MASTER=bond0
SLAVE=yes
ONBOOT=yes

設定3:
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
MASTER=bond0
SLAVE=yes
ONBOOT=yes

3、重啟服務:systemctl restart network

4、測試:先ping檢視bond0的正常情況:ping 192.168.10.100 -c4
     然後去虛擬機器器斷掉一塊網路卡不影響bond0    最後重新開啟一個埠驗證:ssh 192.168.10.100

操作:

1、新增網路卡

2、修改組態檔

設定1:建立並修改bond0虛擬網路卡

設定2:修改ens33網路卡

 設定3:建立並修改ens36網路卡

3、重啟網路卡

4、測試
先ping,bond0檢視的正常情況:ping 192.168.10.100 -c4

然後去虛擬機器器斷掉一塊網路卡不影響bond0

最後重新開啟一個埠驗證:ssh 192.168.10.100

1.12tcpdump

網路封包截獲分析工具。支援針對網路層、協定、主機、網路或埠的過濾,並提供and、or、not等邏輯語句幫助去除無用的資訊。

引數說明:
-a:嘗試將網路和廣播地址轉換成名稱。
-c<封包數目>:收到指定的封包數目後,就停止進行傾倒操作。
-d:把編譯過的封包編碼轉換成可閱讀的格式,並傾倒到標準輸出。
-dd:把編譯過的封包編碼轉換成C語言的格式,並傾倒到標準輸出。
-ddd:把編譯過的封包編碼轉換成十進位制數位的格式,並傾倒到標準輸出。
-e:在每列傾倒資料上顯示連線層級的檔案頭。
-f:用數位顯示網際網路地址。
-F<表達檔案>:指定內含表達方式的檔案。
-i<網路介面>:使用指定的網路截面送出封包。
-l:使用標準輸出列的緩衝區。
-n:不把主機的網路地址轉換成名字。
-N:不列出域名。
-O:不將封包編碼最佳化。
-p:不讓網路介面進入混雜模式。
-q:快速輸出,僅列出少數的傳輸協定資訊。
-r<封包檔案>:從指定的檔案讀取封包資料。
-s<封包大小>:設定每個封包的大小。
-S:用絕對而非相對數值列出TCP關聯數。
-t:在每列傾倒資料上不顯示時間戳記。
-tt:在每列傾倒資料上顯示未經格式化的時間戳記。
-T<封包型別>:強制將表達方式所指定的封包轉譯成設定的封包型別。
-v:詳細顯示指令執行過程。
-vv:更詳細顯示指令執行過程。
-x:用十六進位制字碼列出封包資料。
-w<封包檔案>:把封包資料寫入指定的檔案。
 1 案例:
 2 [root@server ~]#tcpdump -D        #tcpdump檢視網路卡:不指定任何引數,監聽第一塊網路卡上經過的封包。主機上可能有不止一塊網路卡,所以經常需要指定網路卡。
 3 [root@server ~]#tcpdump -i ens33    #指定檢視ens33 網路卡
 4 [root@server ~]#tcpdump host 192.168.10.10 -i ens33    #監聽特定主機,監聽主機192.168.10.10的通訊包,注意:出、入的包都會被監聽。
 5 [root@server ~]#tcpdump src host 主機地址    #特定來源
 6 [root@server ~]#tcpdump dst host 主機地址    #特定目標地址
 7 [root@server ~]#tcpdump host hostname    #如果不指定src跟dst,那麼來源或者目標是hostname的通訊都會被監聽
 8 [root@server ~]#tcpdump -i ens33 -nn icmp and src host 192.168.10.20 and dst host 192.168.10.10    #面試題
 9 [root@server ~]#tcpdump ip host 192.168.10.10 and 192.168.10.20 -i ens33    #只抓取特定主機之間的封包
10 [root@server ~]#tcpdump port 80
11 [root@server ~]#tcpdump tcp port 22 and src host 192.168.10.10 -i ens33