如何查看具体建立的连接?

Mar*_*ria 3 command-line networking

我知道netstatncattcpdump和其他一些工具,显示所有连接,但我应该使用什么样的工具,如果我想看到一个特定的服务器建立了特定的连接?

例如:我www.google.com port 80从一个简单的 Web 客户端连接到;我需要一个只显示我与"www.google.com port 80".

ter*_*don 5

您需要解析netstat. 在我的系统上,netstat列出主机时不显示字符串“Google”。因此,netstat -t | grep -i Google您需要查找主机名,而不是简单地使用。就像是:

$ sudo netstat -tn | awk '/EST/{print $5}' | sed 's/:.*//' | 
    while read ip; do 
        whois $ip | grep -qi google && echo "$ip"; 
    done
173.194.67.189
74.125.140.105
216.58.209.5
Run Code Online (Sandbox Code Playgroud)

解释

  • sudo netstat -tn: 运行netstat只显示 tcp 连接 (-t) 和数字 IP ( -n);
  • awk '/EST/{print $5}':如果该行匹配,则打印第 5 个字段(IP)EST(仅显示已建立的连接);
  • sed 's/:.*//' : 去掉端口,只留下IP;
  • while read ip; do ...; done : 遍历找到的每个 IP;
  • whois $ip | grep -qi google: 查找 IP 并在输出中搜索google. 这-i意味着不区分大小写的搜索和-q抑制输出。
  • && echo "$ip": 如果grep成功,打印这个IP。