檢查 Linux 系統上的網路連接
ifquery 命令
一個非常有用的命令是 ifquery
。這個命令應該會顯示一個網路介面列表。但是,你可能只會看到類似這樣的內容 - 僅顯示迴環介面:
$ ifquery --list
lo
如果是這種情況,那說明你的 /etc/network/interfaces
不包括除了迴環介面之外的網路介面信息。在下面的例子中,假設你使用 DHCP 來分配地址,且如果你希望它更有用的話,你可以添加例子最後的兩行。
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
ifup 和 ifdown 命令
可以使用相關的 ifup
和 ifdown
命令來打開網路連接並根據需要將其關閉,只要該文件具有所需的描述性數據即可。請記住,「if」 在這裡意思是 介面 ,這與 ifconfig
命令中的一樣,而不是 如果我只有一個大腦 中的 「if」。
ifconfig 命令
另外,ifconfig
命令完全不讀取 /etc/network/interfaces
,但是仍然提供了網路介面相當多的有用信息 —— 配置數據以及可以告訴你每個介面有多忙的數據包計數。ifconfig
命令也可用於關閉和重新啟動網路介面(例如:ifconfig eth0 down
)。
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:1e:4f:c8:43:fc
inet addr:192.168.0.6 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::b44b:bdb6:2527:6ae9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60474 errors:0 dropped:0 overruns:0 frame:0
TX packets:33463 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:43922053 (43.9 MB) TX bytes:4000460 (4.0 MB)
Interrupt:21 Memory:fe9e0000-fea00000
輸出中的 RX 和 TX 數據包計數很低。此外,沒有報告錯誤或數據包衝突。或許可以用 uptime
命令確認此系統最近才重新啟動。
上面顯示的廣播 (Bcast) 和網路掩碼 (Mask) 地址表明系統運行在 C 類等效網路(默認)上,所以本地地址範圍從 192.168.0.1
到 192.168.0.254
。
netstat 命令
netstat
命令提供有關路由和網路連接的信息。netstat -rn
命令顯示系統的路由表。192.168.0.1 是本地網關 (Flags=UG)。
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
上面輸出中的 169.254.0.0
條目僅在你正在使用或計劃使用本地鏈路通信時才有必要。如果不是這樣的話,你可以在 /etc/network/if-up.d/avahi-autoipd
中注釋掉相關的行:
$ tail -12 /etc/network/if-up.d/avahi-autoipd
#if [ -x /bin/ip ]; then
# # route already present?
# ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0
#
# /bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
# # route already present?
# /sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0
#
# /sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
#fi
netstat -a 命令
netstat -a
命令將顯示「所有」網路連接。為了將其限制為顯示正在監聽和已建立的連接(通常更有用),請改用 netstat -at
命令。
$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp 0 256 192.168.0.6:ssh 192.168.0.32:53550 ESTABLISHED
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN
host 命令
host
命令就像 nslookup
一樣,用來查詢遠程系統的 IP 地址,但是還提供系統的郵箱處理地址。
$ host world.std.com
world.std.com has address 192.74.137.5
world.std.com mail is handled by 10 smtp.theworld.com.
nslookup 命令
nslookup
還提供系統中(本例中是本地系統)提供 DNS 查詢服務的信息。
$ nslookup world.std.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: world.std.com
Address: 192.74.137.5
dig 命令
dig
命令提供了很多有關連接到遠程系統的信息 - 包括與我們通信的名稱伺服器以及查詢需要多長時間進行響應,並經常用於故障排除。
$ dig world.std.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> world.std.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28679
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;world.std.com. IN A
;; ANSWER SECTION:
world.std.com. 78146 IN A 192.74.137.5
;; Query time: 37 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Oct 09 13:26:46 EDT 2017
;; MSG SIZE rcvd: 58
nmap 命令
nmap
經常用於探查遠程系統,但是同樣也用於報告本地系統提供的服務。在下面的輸出中,我們可以看到登錄可以使用 ssh、smtp 用於電子郵箱、web 站點也是啟用的,並且 ipp 列印服務正在運行。
$ nmap localhost
Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-09 15:01 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
Linux 系統提供了很多有用的命令用於查看網路配置和連接。如果你都探索完了,請記住 apropos network
或許會讓你了解更多。
作者:Sandra Henry-Stocker 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive