2016年11月1日

[挨踢]三步驟快速檢查遠端伺服器服務狀況

今天一大早,就遇到有廠商喊「FTP無法連線」。

身為一個工程師,當然不能無視這狀況,就稍微嘗試了一下,

使用指令 ftp ,結果卻出現了以下訊息:

ftp: Can't connect to `[ip address]': Connection refused

接下來,為了求證問題發生原因,做了一些基本調查,

在此留下一些步驟與紀錄,希望能幫助到其他遇到相似問題的人。

(備註:目前環境是 Mac (linux), 如果用 Windows 要另外找對應指令。)




首先,第一步就是要看伺服器會不會回應,是死是活。

ping 這個指令相信大家應該都知道,最簡單的就是:

ping [ip address]

如果遠端伺服器沒有關閉回應,則會得到下面正常的結果:

64 bytes from [ip address]: icmp_seq=0 ttl=63 time=2.819 ms

bytes, TTL, time 等資訊代表的意義就不在此詳述。

(p.s. 沒有回應也不代表沒有活著喔,有可能是沒有開啟 ICMP)


這樣表示伺服器有活著,接下來,不管有沒有活著

第二步就是檢查遠端 port 是否能正常連線。

telnet 個指令相信大家也多少都用過,稍微加上連線埠號就是:

telnet [ip address] [port number]

假設我現在要查 FTP, 就是 telnet [ip address] 21 這樣的指令。

結果得到了相同的回應:

telnet: connect to address : Connection refused
telnet: Unable to connect to remote host

表示目前無法透過 21 這個連線埠,連線到指定的 IP 位置。

基本上到這邊,就已經知道可能需要朝向連線埠未開啟(防火牆),
或是服務尚未啟動這兩個方向去追查了。


為了確認實際狀況,這邊採用了第三個指令 nmap

(預設是沒有安裝的,找不到指令的請記得 brew install nmap)

nmap [ip address]

指令基本款就可以拿到全部的資訊:

Nmap scan report for [domain name]([ip address])
Host is up (0.0100s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
80/tcp   open  http
[port number]/tcp  open  
[port number]/tcp  open  
3306/tcp open  mysql

類似這樣,從中我可以再度確認,21, 22, 23 port 與服務都看不到。

如果要更精準地查看某一個已知的特定埠號,可以用以下指令:

nmap -A [ip address] -p [port number]

在這邊我針對 port 21 做查詢,得到以下結果:

Nmap scan report for [doman name]([ip address])
Host is up (0.0049s latency).
PORT   STATE  SERVICE VERSION
21/tcp closed ftp

這也是另外一種確認方式,表示以我的環境來看,FTP 是無法使用的。

接下來就只能請有權限進入伺服器的相關人員,查看伺服器狀況了。


以上經驗分享,希望能對大家有幫助。(笑)


=============== 我是分隔線 ===============

補充說明一下,這邊請儘量以實體 ip 做檢測,

避免因為 DNS 設定產生的各種狀況,導致判斷錯誤。

如果要另外追查 DNS 相關資訊,可以使用 nslookup 等相關指令。

沒有留言: