[Mac] 使用 lsof, nettop, Private Eye 觀察 process 開啟的網路連線
今天 Mac 上的 Dropbox 不知道為什麼一直出現無法建立安全連線的訊息…
想說來看一下 Dropbox 到底是想要連去哪裡,卻不知從何下手…
查了一下,Mac 上是有些工具可以查特定 process 開了哪些連線:
List all Open Internet Connections on a Mac from Terminal to Track Down Bandwidth Issues
Watch Network Traffic in Mac OS X via Command Line with nettop
Monitor Network Connections in Mac OS X for Free with Private Eye
1. lsof
lsof 算是功能很多的 command line tool,通常是用來查開了哪些檔案 / lock,
不過也可以用來查網路連線~
舉例來說,下面的指令就是用來查 dropbox 這個 process 開了哪些 TCP/UDP 的連線:
testuser@localhost ~ $ lsof 2>/dev/null | egrep -i "dropbox.*(tcp|udp)" Dropbox 18649 testuser 19u IPv4 0x3665d43c437455e1 0t0 TCP localhost:50978->client.v.dropbox.com:https (CLOSED) Dropbox 18649 testuser 35u IPv4 0x3665d43c43667ee9 0t0 TCP localhost:52022->server-54-192-111-173.nrt53.r.cloudfront.net:https (CLOSE_WAIT) Dropbox 18649 testuser 39u IPv4 0x3665d43c43d32ac9 0t0 TCP localhost:53247->d.v.dropbox.com:https (ESTABLISHED) Dropbox 18649 testuser 50u IPv4 0x3665d43c447963d1 0t0 TCP localhost:17600 (LISTEN) Dropbox 18649 testuser 54u IPv4 0x3665d43c4366c5e1 0t0 TCP localhost:52986->ec2-52-3-73-107.compute-1.amazonaws.com:https (CLOSE_WAIT) Dropbox 18649 testuser 58u IPv4 0x3665d43c3cff77f1 0t0 TCP localhost:52023->server-54-192-111-173.nrt53.r.cloudfront.net:https (CLOSE_WAIT) Dropbox 18649 testuser 63u IPv4 0x3665d43c43d2ecd9 0t0 TCP localhost:17603 (LISTEN) Dropbox 18649 testuser 65u IPv6 0x3665d43c3707fc89 0t0 TCP *:17500 (LISTEN) Dropbox 18649 testuser 66u IPv4 0x3665d43c4372fac9 0t0 TCP *:17500 (LISTEN) Dropbox 18649 testuser 67u IPv4 0x3665d43c38d0a189 0t0 UDP *:17500 Dropbox 18649 testuser 68u IPv4 0x3665d43c437443d1 0t0 TCP localhost:52030->199.47.217.65:https (CLOSE_WAIT) Dropbox 18649 testuser 69u IPv4 0x3665d43c3c5925e1 0t0 TCP localhost:53289->162.125.32.129:https (CLOSE_WAIT)
2. nettop
nettop 也是 Mac 內建的 command line tool,
它將每個 process 開啟的連線直接列出來,而且也可以即時更新,
不過缺點是沒辦法搜尋 / grep,因此要找到想看的 process 可能有點麻煩…
3. Private Eye
這是一個免費的 GUI 軟體,可以看 process 開啟連線的過程~
用 Homebrew Cask 就可以安裝:
brew cask install private-eye
執行之後,每當有 process 開啟一個新連線時,
Private Eye 就會將時間、process 名稱、和連線的機器顯示出來:
左下角的 Applications 會把有新增連線的應用程式列出來,
點選特定應用程式的話,就可以單獨看這個應用程式開過的連線:
Private Eye 的好處是可以將連線開啟的歷程都記錄下來,
不過連線的資訊似乎不算是很清楚,看不到 source/destinatio port…