作為系統管理者,我們每天都會跟各種各樣的Linux指令打交道,其中網絡相關的指令涉及的十分頻繁,本文筆者就給大家分享一下Linux中6個常用的網絡指令,強烈建議全部看完,我相信大多數你都是用過的。
1、ip
ip指令是每個管理者在日常工作中最基礎的指令之一,從設定新系統和配置設定 IP 到對現有系統進行故障排除,都會去使用它。ip指令可以顯示位址資訊、路由,以及顯示網絡中的各種裝置、接口和隧道。
文法如下:
ip <OPTIONS> <OBJECT> <COMMAND>
OBJECT 是最重要的部分,支援以下内容:
- 位址:IPv4 或 IPv6位址
- 隧道:基于 IP 的隧道
- route:路由表條目
- rule:路由政策資料庫中的規則
- vrf:管理虛拟路由和轉發裝置
- xfrm:管理 IPSec 政策
顯示配置設定給伺服器上接口的 IP 位址:
[root@wljslmz ~]# ip address show
将 IP 配置設定給接口,例如enps03:
[root@wljslmz ~]# ip address add 192.168.1.254/24 dev enps03
删除接口上的 IP:
[root@wljslmz ~]# ip address del 192.168.1.254/24 dev enps03
通過使接口eth0聯機來更改接口的狀态:
[root@wljslmz ~]# ip link set eth0 up
通過使接口eth0脫機來更改接口的狀态:
[root@wljslmz ~]# ip link set eth0 down
通過更改eth0的 MTU 來更改接口的狀态:
[root@wljslmz ~]# ip link set eth0 mtu 9000
通過為eth0啟用混雜模式來更改接口的狀态:
[root@wljslmz ~]# ip link set eth0 promisc on
通過可以在裝置eth0上通路的本地網關 192.168.1.254 添加預設路由(适用于所有位址) :
[root@wljslmz ~]# ip route add default via 192.168.1.254 dev eth0
通過網關 192.168.1.254 添加到 192.168.1.0/24 的路由:
[root@wljslmz ~]# ip route add 192.168.1.0/24 via 192.168.1.254
添加到 192.168.1.0/24 的路由,可以在裝置eth0上通路:
[root@wljslmz ~]# ip route add 192.168.1.0/24 dev eth0
通過網關 192.168.1.254 删除 192.168.1.0/24 的路由:
[root@wljslmz ~]# ip route delete 192.168.1.0/24 via 192.168.1.254
顯示為 IP 10.10.1.4 采用的路由:
[root@wljslmz ~]# ip route get 10.10.1.4
2、mtr
mtr,英文全稱Matt's traceroute,用作網絡診斷和故障排除工具,結合了ping和traceroute指令的功能。
mtr指令可以顯示從計算機到指定主機的路由,提供了大量關于每一跳的統計資訊,例如響應時間和百分比。使用mtr指令,可以獲得有關魯豫的更多資訊,并能夠沿途檢視有問題的裝置。如果您看到響應時間突然增加或資料包丢失,那麼很明顯,某處存在錯誤連結。
指令的文法如下:
mtr <options> hostname/IP
讓我們看一些常見的用例。
基本mtr指令顯示統計資訊,包括每個主機名的時間和損失百分比:
[root@wljslmz ~]# mtr wljslmz.cn
顯示數字 IP 位址(如果使用-g,您将獲得 IP 位址(數字)而不是主機名):
[root@wljslmz ~]# mtr -g wljslmz.cn
顯示數字 IP 位址和主機名:
[root@wljslmz ~]# mtr -b wljslmz.cn
設定要發送的 ping 數:
[root@wljslmz ~]# mtr -c 10 wljslmz.cn
擷取mtr指令結果報告:
[root@wljslmz ~]# mtr -r -c 10 wljslmz.cn > mtr-command-wljslmz-output
或者:
[root@wljslmz ~]# mtr -rw -c 10 wljslmz.cn > mtr-command-wljslmz-output
強制使用 TCP 而不是 ICMP:
[root@wljslmz ~]# mtr –tcp wljslmz.cn
強制使用 UDP 而不是 ICMP:
[root@wljslmz ~]# mtr –udp wljslmz.cn
設定最大跳數:
[root@wljslmz ~]# mtr -m 35 216.58.223.78
定義資料包大小:
[root@wljslmz ~]# mtr -r -s 50 wljslmz.cn
列印到 CSV 輸出:
[root@wljslmz ~]# mtr –csv wljslmz.cn
列印到 XML 輸出:
[root@wljslmz ~]# mtr –xml wljslmz.cn
3、tcpdump
tcpdump指令用于捕獲和顯示資料包。
您可以使用以下指令進行安裝tcpdump:
[root@wljslmz ~]# dnf install -y tcpdump
在開始任何捕獲之前,您需要知道 tcpdump可以使用哪些接口:
[root@wljslmz ~]# tcpdump -D
1 eth0
2 nflog
3 nfqueue
4 usbmon1
5 any
6 lo (Loopback)
如果要捕獲eth0上的流量,可以使用tcpdump -i eth0示例輸出啟動它:
[root@wljslmz ~]# tcpdump -i eth0
[root@wljslmz ~]# tcpdump -i eth0 -c 10
捕獲進出一台主機的流量
您可以過濾掉來自特定主機的流量。例如,要查找來自和去往 8.8.8.8 的流量,請使用以下指令:
[root@wljslmz ~]# tcpdump -i eth0 -c 10 host 8.8.8.8
對于來自 8.8.8.8 的流量,請使用:
[root@wljslmz ~]# tcpdump -i eth0 src host 8.8.8.8
對于去往 8.8.8.8 的出站流量,請使用:
[root@wljslmz ~]# tcpdump -i eth0 dst host 8.8.8.8
捕獲進出網絡的流量
還可以使用以下指令捕獲進出特定網絡的流量:
[root@wljslmz ~]# tcpdump -i eth0 net 10.1.0.0 mask 255.255.255.0
或者:
[root@wljslmz ~]# tcpdump -i eth0 net 10.1.0.0/24
還可以根據源或目标進行過濾。
基于來源(流量來自):
[root@wljslmz ~]# tcpdump -i eth0 src net 10.1.0.0/24
基于目的地(去往的流量):
[root@wljslmz ~]# tcpdump -i eth0 dst net 10.1.0.0/24
捕獲進出端口号的流量
僅捕獲 DNS 端口 53 流量:
[root@wljslmz ~]# tcpdump -i eth0 port 53
對于特定的主機,
[root@wljslmz ~]# tcpdump -i eth0 host 8.8.8.8 and port 53
要僅捕獲 HTTPS 流量,
[root@wljslmz ~]# tcpdump -i eth0 -c 10 host www.wljslmz.cn and port 443
要捕獲除端口 80 和 25 之外的所有端口,
[root@wljslmz ~]# tcpdump -i eth0 port not 53 and not 25
4、netstat
netstat用于列印網絡連接配接、路由表、接口統計資訊、僞裝連接配接和多點傳播成員資格的工具。該實用程式是 net-tool 包的一部分,有點像ifconfig,在新的 iproute2 包中,該ss工具用于實作相同的目标。
如果netstat在您的系統上找不到,請使用以下指令安裝它:
[root@wljslmz ~]# dnf install net-tools
大多數用法netstat是不帶任何參數:
[root@wljslmz ~]# netstat
對于進階用法,netstat使用選項擴充指令:
netstat <options>
或者一一列出選項:
netstat <option 1> <option 2> <option 3>
要列出所有端口和連接配接,無論其狀态或協定如何,請使用:
[root@wljslmz ~]# netstat -a
通過運作列出所有 TCP 端口:
[root@wljslmz ~]# netstat -at
列出所有 UDP 端口:
[root@wljslmz ~]# netstat -au
要傳回所有協定的僅偵聽端口清單,請使用:
[root@wljslmz ~]# netstat -l
列出所有偵聽 TCP 端口:
[root@wljslmz ~]# netstat -lt
通過運作僅傳回偵聽 UDP 端口:
[root@wljslmz ~]# netstat -lu
要列出 UNIX 偵聽端口,請使用:
[root@wljslmz ~]# netstat -lx
無論協定如何,都顯示所有端口的統計資訊:
[root@wljslmz ~]# netstat -s
僅列出 TCP 端口的統計資訊:
[root@wljslmz ~]# netstat -st
要檢視列出的 PID/程式名稱的 TCP 連接配接,請使用:
[root@wljslmz ~]# netstat -tp
要查找使用特定端口号的程序,請運作:
[root@wljslmz ~]# netstat -an | grep ‘:<port number>’
5、nslookup
使用該nslookup實用程式以互動方式查詢 Internet 名稱伺服器,使用它來執行 DNS 查詢并接收域名或 IP 位址,或任何其他特定的 DNS 記錄。
查找域的 A 記錄:
[root@wljslmz ~]# nslookup wljslmz.cn
檢查域的 NS 記錄:
[root@wljslmz ~]# nslookup -type=ns wljslmz.cn
要查找負責電子郵件交換的 MX 記錄:
[root@wljslmz ~]# nslookup -query=mx wljslmz.cn
要查找域的所有可用 DNS 記錄:
[root@wljslmz ~]# nslookup -type=any wljslmz.cn
要檢查特定 DNS 伺服器的使用(在這種情況下,使用特定名稱伺服器 ns1.nswljslmz.cn 進行查詢):
[root@wljslmz ~]# nslookup wljslmz.cn ns1.nswljslmz.cn
檢查 DNS A 記錄以檢視域的 IP 是一種常見做法,但有時您需要驗證 IP 位址是否與特定域相關,為此,需要反向 DNS 查找。
[root@wljslmz ~]# nslookup 10.20.30.40
6、ping
ping 是一種工具,它通過發送 Internet 控制消息協定 (ICMP) 回應要求消息來驗證與另一台 TCP/IP 計算機的 IP 級連接配接,将顯示收到的相應 Echo Reply 消息以及往返時間,ping 是用于對連接配接性、可達性和名稱解析進行故障排除的主要 TCP/IP 指令。
簡單ping的指令隻接受一個參數:您要驗證的主機名或主機 IP 位址,一個簡單的ping例子如下:
[root@wljslmz ~]# ping wljslmz.cn
PING wljslmz.cn (216.58.206.174) 56(84) bytes of data.
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=1 ttl=56 time=10.7 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=2 ttl=56 time=10.2 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=3 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=4 ttl=56 time=10.4 ms
64 bytes from sof02s27-in-f14.1e100.net (216.58.206.174): icmp_seq=5 ttl=56 time=17.3 ms
^C
--- wljslmz.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 10.219/11.844/17.381/2.773 ms
按CTRL+C來停止刷屏,否則,它将ping一直持續到您停止為止。在每個ping指令之後,它将顯示包含以下資訊的摘要報告:
- Min:從您端 ping 通的主機獲得響應所需的最短時間。
- Avg:從您端 ping 的主機獲得響應所需的平均時間。
- Max:從您端 ping 通的主機獲得響應所需的最長時間。
此外,您還會看到 TTL,它代表生存時間。Ping 使用數字 TTL 值嘗試通過路由路徑到達給定的主機計算機。這也稱為躍點限制。
通常,當您運作一個簡單的ping指令而不傳遞任何其他參數時,Linux 将ping無限期地托管該主機,如果要ping主機十次,請使用以下指令:
[root@wljslmz ~]# ping -c 10 wljslmz.cn
使用選項-q僅檢視ping統計摘要:
[root@wljslmz ~]# ping -c 10 wljslmz.cn
在具有多個接口的系統上,您可以指定ping要使用的指令的接口,如果系統同時具有eth0和eth1并且我想ping使用eth0:
[root@wljslmz ~]# ping -I eth0 wljslmz.cn
或者使用接口上的位址,假設接口為10.233.201.45作為IP:
[root@wljslmz ~]# ping -I 10.233.201.45 wljslmz.cn
您還可以ping将 IP 版本指定為 v4 或 v6:
[root@wljslmz ~]# ping -4 wljslmz.cn
[root@wljslmz ~]# ping -6 wljslmz.cn