面向系統(tǒng)管理員的網(wǎng)絡(luò)管理指南
一個(gè)使管理服務(wù)器和網(wǎng)絡(luò)更輕松的 Linux 工具和命令的參考列表。
如果你是一位系統(tǒng)管理員,那么你的日常工作應(yīng)該包括管理服務(wù)器和數(shù)據(jù)中心的網(wǎng)絡(luò)。以下的 Linux 實(shí)用工具和命令 —— 從基礎(chǔ)的到高級(jí)的 —— 將幫你更輕松地管理你的網(wǎng)絡(luò)。
在幾個(gè)命令中,你將會(huì)看到 <fqdn>
,它是“完全合格域名”的全稱。當(dāng)你看到它時(shí),你應(yīng)該用你的網(wǎng)站 URL 或你的服務(wù)器來代替它(比如,server-name.company.com
),具體要視情況而定。
Ping
正如它的名字所表示的那樣,ping
是用于去檢查從你的系統(tǒng)到你想去連接的系統(tǒng)之間端到端的連通性。當(dāng)一個(gè) ping
成功時(shí),它使用的 ICMP 的 echo 包將會(huì)返回到你的系統(tǒng)中。它是檢查系統(tǒng)/網(wǎng)絡(luò)連通性的一個(gè)良好開端。你可以在 IPv4 和 IPv6 地址上使用 ping
命令。(閱讀我的文章 "如何在 Linux 系統(tǒng)上找到你的 IP 地址" 去學(xué)習(xí)更多關(guān)于 IP 地址的知識(shí))
語法:
- IPv4:
ping <ip address>/<fqdn>
- IPv6:
ping6 <ip address>/<fqdn>
你也可以使用 ping
去解析出網(wǎng)站所對(duì)應(yīng)的 IP 地址,如下圖所示:
Traceroute
ping
是用于檢查端到端的連通性,traceroute
實(shí)用工具將告訴你到達(dá)對(duì)端系統(tǒng)、網(wǎng)站,或服務(wù)器所經(jīng)過的路徑上所有路由器的 IP 地址。traceroute
在網(wǎng)絡(luò)連接調(diào)試中經(jīng)常用于在 ping
之后的第二步。
這是一個(gè)跟蹤從你的系統(tǒng)到其它對(duì)端的全部網(wǎng)絡(luò)路徑的非常好的工具。在檢查端到端的連通性時(shí),這個(gè)實(shí)用工具將告訴你到達(dá)對(duì)端系統(tǒng)、網(wǎng)站、或服務(wù)器上所經(jīng)歷的路徑上的全部路由器的 IP 地址。通常用于網(wǎng)絡(luò)連通性調(diào)試的第二步。
語法:
traceroute <ip address>/<fqdn>
Telnet
語法:
telnet <ip address>/<fqdn>
是用于 telnet 進(jìn)入任何支持該協(xié)議的服務(wù)器。
Netstat
這個(gè)網(wǎng)絡(luò)統(tǒng)計(jì)(netstat
)實(shí)用工具是用于去分析解決網(wǎng)絡(luò)連接問題和檢查接口/端口統(tǒng)計(jì)數(shù)據(jù)、路由表、協(xié)議狀態(tài)等等的。它是任何管理員都應(yīng)該必須掌握的工具。
語法:
netstat -l
顯示所有處于監(jiān)聽狀態(tài)的端口列表。netstat -a
顯示所有端口;如果去指定僅顯示 TCP 端口,使用-at
(指定信顯示 UDP 端口,使用-au
)。-
netstat -r
顯示路由表。 -
netstat -s
顯示每個(gè)協(xié)議的狀態(tài)總結(jié)。 -
netstat -i
顯示每個(gè)接口傳輸/接收(TX/RX)包的統(tǒng)計(jì)數(shù)據(jù)。
Nmcli
nmcli
是一個(gè)管理網(wǎng)絡(luò)連接、配置等工作的非常好的實(shí)用工具。它能夠去管理網(wǎng)絡(luò)管理程序和修改任何設(shè)備的網(wǎng)絡(luò)配置詳情。
語法:
nmcli device
列出網(wǎng)絡(luò)上的所有設(shè)備。nmcli device show <interface>
顯示指定接口的網(wǎng)絡(luò)相關(guān)的詳細(xì)情況。nmcli connection
檢查設(shè)備的連接情況。nmcli connection down <interface>
關(guān)閉指定接口。nmcli connection up <interface>
打開指定接口。-
nmcli con add type vlan con-name <connection-name> dev <interface> id <vlan-number> ipv4 <ip/cidr> gw4 <gateway-ip>
在特定的接口上使用指定的 VLAN 號(hào)添加一個(gè)虛擬局域網(wǎng)(VLAN)接口、IP 地址、和網(wǎng)關(guān)。
路由
檢查和配置路由的命令很多。下面是其中一些比較有用的:
語法:
-
ip route
顯示各自接口上所有當(dāng)前的路由配置。 -
route add default gw <gateway-ip>
在路由表中添加一個(gè)默認(rèn)的網(wǎng)關(guān)。 -
route add -net <network ip/cidr> gw <gateway ip> <interface>
在路由表中添加一個(gè)新的網(wǎng)絡(luò)路由。還有許多其它的路由參數(shù),比如,添加一個(gè)默認(rèn)路由,默認(rèn)網(wǎng)關(guān)等等。 -
route del -net <network ip/cidr>
從路由表中刪除一個(gè)指定的路由條目。 -
ip neighbor
顯示當(dāng)前的鄰接表和用于去添加、改變、或刪除新的鄰居。 -
arp
(它的全稱是 “地址解析協(xié)議”)類似于ip neighbor
。arp
映射一個(gè)系統(tǒng)的 IP 地址到它相應(yīng)的 MAC(介質(zhì)訪問控制)地址。
Tcpdump 和 Wireshark
Linux 提供了許多包捕獲工具,比如 tcpdump
、wireshark
、tshark
等等。它們被用于去捕獲傳輸/接收的網(wǎng)絡(luò)流量中的數(shù)據(jù)包,因此它們對(duì)于系統(tǒng)管理員去診斷丟包或相關(guān)問題時(shí)非常有用。對(duì)于熱衷于命令行操作的人來說,tcpdump
是一個(gè)非常好的工具,而對(duì)于喜歡 GUI 操作的用戶來說,wireshark
是捕獲和分析數(shù)據(jù)包的不二選擇。tcpdump
是一個(gè) Linux 內(nèi)置的用于去捕獲網(wǎng)絡(luò)流量的實(shí)用工具。它能夠用于去捕獲/顯示特定端口、協(xié)議等上的流量。
語法:
-
tcpdump -i <interface-name>
顯示指定接口上實(shí)時(shí)通過的數(shù)據(jù)包。通過在命令中添加一個(gè)-w
標(biāo)志和輸出文件的名字,可以將數(shù)據(jù)包保存到一個(gè)文件中。例如:tcpdump -w <output-file.> -i <interface-name>
。 -
tcpdump -i <interface> src <source-ip>
從指定的源 IP 地址上捕獲數(shù)據(jù)包。 -
tcpdump -i <interface> dst <destination-ip>
從指定的目標(biāo) IP 地址上捕獲數(shù)據(jù)包。 -
tcpdump -i <interface> port <port-number>
從一個(gè)指定的端口號(hào)(比如,53、80、8080 等等)上捕獲數(shù)據(jù)包。 -
tcpdump -i <interface> <protocol>
捕獲指定協(xié)議的數(shù)據(jù)包,比如:TCP、UDP、等等。
Iptables
iptables
是一個(gè)***濾防火墻工具,它能夠允許或阻止某些流量。這個(gè)實(shí)用工具的應(yīng)用范圍非常廣泛;下面是它的其中一些最常用的使用命令。
語法:
iptables -L
列出所有已存在的iptables
規(guī)則。iptables -F
刪除所有已存在的規(guī)則。
下列命令允許流量從指定端口到指定接口:
iptables -A INPUT -i <interface> -p tcp –dport <port-number> -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o <interface> -p tcp -sport <port-number> -m state – state ESTABLISHED -j ACCEPT
下列命令允許環(huán)回接口訪問系統(tǒng):
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Nslookup
nslookup
工具是用于去獲得一個(gè)網(wǎng)站或域名所映射的 IP 地址。它也能用于去獲得你的 DNS 服務(wù)器的信息,比如,一個(gè)網(wǎng)站的所有 DNS 記錄(具體看下面的示例)。與 nslookup
類似的一個(gè)工具是 dig
(Domain Information Groper)實(shí)用工具。
語法:
nslookup <website-name.com>
顯示你的服務(wù)器組中 DNS 服務(wù)器的 IP 地址,它后面就是你想去訪問網(wǎng)站的 IP 地址。nslookup -type=any <website-name.com>
顯示指定網(wǎng)站/域中所有可用記錄。
網(wǎng)絡(luò)/接口調(diào)試
下面是用于接口連通性或相關(guān)網(wǎng)絡(luò)問題調(diào)試所需的命令和文件的匯總。
語法:
ss
是一個(gè)轉(zhuǎn)儲(chǔ)套接字統(tǒng)計(jì)數(shù)據(jù)的實(shí)用工具。nmap <ip-address>
,它的全稱是 “Network Mapper”,它用于掃描網(wǎng)絡(luò)端口、發(fā)現(xiàn)主機(jī)、檢測(cè) MAC 地址,等等。ip addr/ifconfig -a
提供一個(gè)系統(tǒng)上所有接口的 IP 地址和相關(guān)信息。ssh -vvv user@<ip/domain>
允許你使用指定的 IP/域名和用戶名通過 SSH 協(xié)議登入到其它服務(wù)器。-vvv
標(biāo)志提供 SSH 登入到服務(wù)器過程中的 "最詳細(xì)的" 信息。ethtool -S <interface>
檢查指定接口上的統(tǒng)計(jì)數(shù)據(jù)。ifup <interface>
啟動(dòng)指定的接口。ifdown <interface>
關(guān)閉指定的接口systemctl restart network
重啟動(dòng)系統(tǒng)上的一個(gè)網(wǎng)絡(luò)服務(wù)。/etc/sysconfig/network-scripts/<interface-name>
是一個(gè)對(duì)指定的接口設(shè)置 IP 地址、網(wǎng)絡(luò)、網(wǎng)關(guān)等等的接口配置文件。DHCP 模式也可以在這里設(shè)置。/etc/hosts
這個(gè)文件包含自定義的主機(jī)/域名到 IP 地址的映射。/etc/resolv.conf
指定系統(tǒng)上的 DNS 服務(wù)器的 IP 地址。/etc/ntp.conf
指定 NTP 服務(wù)器域名。