Linux中排除網(wǎng)絡(luò)故障時(shí),這些Linux命令必須要回!
接口信息
當(dāng)您需要了解有關(guān)您登錄的設(shè)備的網(wǎng)絡(luò)接口的更多信息時(shí)使用接口信息命令。
IP 命令
查看所有 IP 地址:
ip a
可以使用-4或-6選項(xiàng)添加過(guò)濾器以?xún)H顯示 IPv4 或 IPv6 地址。
ip -4 a
ip -6 a
查看網(wǎng)絡(luò)信息的另一種方法是使用ifconfig,它比ip命令更容易閱讀,顯示的信息量沒(méi)有太大差異,一個(gè)顯著的區(qū)別是ifconfig顯示一些基本的傳輸/接收統(tǒng)計(jì)信息,這些統(tǒng)計(jì)信息可能很有用,一目了然。
ifconfig
網(wǎng)絡(luò)狀態(tài)命令
netstat命令對(duì)于發(fā)現(xiàn)機(jī)器上各種服務(wù)正在偵聽(tīng)的端口很有用,-t可以選擇 TCP 和-u UDP,使用-l偵聽(tīng)端口的選項(xiàng),如果您更喜歡查看 IP 地址而不是主機(jī)名,請(qǐng)使用該-n選項(xiàng)。
添加多個(gè)選項(xiàng)時(shí),可以將它們組合在一起,如下所示。
netstat -tul
如果要查看偵聽(tīng)端口的服務(wù)的進(jìn)程 ID (pid),請(qǐng)使用該-p選項(xiàng),需要使用sudo此命令來(lái)查看pid,否則,它不會(huì)顯示。
sudo netstat -tulp
網(wǎng)絡(luò)可用性
網(wǎng)絡(luò)可用性命令可用于快速檢查您是否可以訪(fǎng)問(wèn)網(wǎng)絡(luò)上的主機(jī)或確定主機(jī)是否已打開(kāi)電源(假設(shè)它已連接到網(wǎng)絡(luò))。
Ping 命令
最著名的網(wǎng)絡(luò)命令是ping,可以快速查看是否可以通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn)設(shè)備,前提是它沒(méi)有被防火墻阻止,由于流量不需要由路由器路由(流量保持本地),因此始終允許同一網(wǎng)絡(luò)內(nèi)的 Ping。
可以使用ping帶有 IP 地址或主機(jī)名的命令。
ping 192.168.1.10
ping thehostname
ping 將繼續(xù) ping 直到停止命令(取決于您使用的終端,可以使用鍵盤(pán)快捷鍵(例如“Ctrl + Shift + C”)關(guān)閉命令)
要指定 ping 數(shù),請(qǐng)使用該-c選項(xiàng)以及要執(zhí)行的 ping 數(shù)。
ping -c 3 192.168.1.10
如果啟用了 IPv6,則該ping命令可能默認(rèn)使用 IPv6 IP 地址,可以使用-4或-6選項(xiàng)指定使用 IPv4 或 IPv6 地址。
ping -4 192.168.1.10
ping -6 192.168.1.10
可以同時(shí)使用多個(gè)選項(xiàng),下面的命令使用 IPv4 地址并 ping 3 次。
ping -4 -c 3 192.168.1.10
某些防火墻配置為禁用 ping,但如果您有多個(gè)內(nèi)部網(wǎng)絡(luò),我建議您在本地網(wǎng)絡(luò)上允許 ping,即使您ping阻止了 WAN 地址,因?yàn)檫@對(duì)于故障排除非常有用。如果您擔(dān)心如果您的內(nèi)部網(wǎng)絡(luò)或 DMZ 之一受到威脅,會(huì)更容易發(fā)現(xiàn)網(wǎng)絡(luò)上的設(shè)備,則不允許從您的內(nèi)部網(wǎng)絡(luò)向您的 DMZ 發(fā)出 ping 或從您的 DMZ 發(fā)出 ping,阻止進(jìn)出 DMZ 的 ping 有助于進(jìn)一步隔離該網(wǎng)絡(luò)。
跟蹤路由命令
跟蹤路由對(duì)于查看到達(dá) Internet 上另一個(gè)網(wǎng)絡(luò)所采用的路徑很有用,除非您的網(wǎng)絡(luò)中有多個(gè)路由器,否則它在您的本地網(wǎng)絡(luò)上用處不大。
對(duì)于大多數(shù)家庭用戶(hù)來(lái)說(shuō),情況并非如此,但一些家庭實(shí)驗(yàn)室可能會(huì)使用路由器來(lái)運(yùn)行單獨(dú)的內(nèi)部網(wǎng)絡(luò),某些traceroute輸出中有星號(hào)或問(wèn)號(hào),這是因?yàn)楦櫟恼麄€(gè)路徑可能并不總是顯示,特別是如果防火墻配置為出于安全考慮丟棄 ICMP 流量。
基本traceroute命令如下所示,可以使用 IP 地址或主機(jī)名。
traceroute 8.8.8.8
traceroute google.com
與 一樣ping,可以指定 IPv4 和 IPv6。traceroute默認(rèn)為 IPv4,不像ping需要指定該-4選項(xiàng)。
traceroute -4 google.com
traceroute -6 google.com
traceroute 還有許多其他選項(xiàng),但基本命令可能對(duì)許多用戶(hù)來(lái)說(shuō)已經(jīng)足夠了。
域名系統(tǒng)
DNS 命令在分配主機(jī)名和/或覆蓋路由器中的 DNS 值時(shí)尤其有用,可以確定主機(jī)名是否指向正確的 IP 地址。
主機(jī)命令
要在本地網(wǎng)絡(luò)或 Internet 上查找與域名關(guān)聯(lián)的 IP 地址,請(qǐng)使用該host命令。
host google.com
如果要指定用于 DNS 查找的 DNS 服務(wù)器。
host google.com 1.1.1.1
挖掘命令
如果希望獲得更詳細(xì)的 DNS 信息,該dig命令很有用,基本用法與host命令類(lèi)似。
dig google.com
還可以指定用于查找的 DNS 服務(wù)器。
dig @8.8.8.8 google.com
如果想要一個(gè)域的所有 DNS 記錄,可以使用該any選項(xiàng)。
dig google.com any
還可以指定其他 DNS 記錄,例如 MX 記錄。
dig google.com mx
當(dāng)您想知道給定 IP 地址的主機(jī)名/域名時(shí),反向 DNS 查找很有用,結(jié)合使用-x選項(xiàng)和 IP 地址即可。
dig -x 8.8.8.8
系統(tǒng)解析命令
systemd-resolve命令可用于檢查當(dāng)前的 DNS 服務(wù)器設(shè)置為什么,當(dāng)我在設(shè)置新的內(nèi)部網(wǎng)絡(luò)或弄亂路由器上的 DNS 設(shè)置時(shí)對(duì) DNS 問(wèn)題進(jìn)行故障排除時(shí),我發(fā)現(xiàn)這很有幫助。如果運(yùn)行以下命令,將看到一行Current DNS Server,DNS Servers其中列出了通過(guò) DHCP 或手動(dòng)設(shè)置的 DNS。
systemd-resolve --status
當(dāng)我更改某些 DNS 設(shè)置以使用拆分 DNS(也稱(chēng)為水平拆分、拆分域等)時(shí),我發(fā)現(xiàn)能夠刷新 DNS 解析器緩存很有用,以便我的系統(tǒng)更快地開(kāi)始解析新的 IP 地址。要刷新緩存,只需使用--flush-caches選項(xiàng)。
sudo systemd-resolve --flush-caches
該systemd-resolve命令僅對(duì)使用systemd.
DHCP
DHCP 命令非常有用,尤其是當(dāng)您由于對(duì)路由器或交換機(jī)所做的更改而想要手動(dòng)釋放和更新 DHCP 租約時(shí)。
Dhclient 命令
當(dāng)通過(guò) DHCP 為路由器靜態(tài)分配 IP 地址、更改路由器/交換機(jī)上的 DHCP 地址范圍或其他與 DHCP 相關(guān)的網(wǎng)絡(luò)更改,可以使用dhclient命令更輕松地更新設(shè)備 DHCP租期。
如果不使用該命令,要么必須以物理方式或通過(guò)操作系統(tǒng)控制面板斷開(kāi)并重新連接到網(wǎng)絡(luò),要么等待 DHCP 租約到期。
要在您的設(shè)備上釋放和續(xù)訂 DHCP 租約,您必須按所示順序輸入以下兩個(gè)命令,還需要sudo此命令的權(quán)限。
sudo dhclient -r
sudo dhclient