有没有办法找出连接到redhat linux中特定代理服务器的客户端机器,我使用的是redhat linux版本6并在其中配置了squid
答案1
如果 Squid 正在监听端口,比如说 3128,您可以使用netstat
服务器中的命令列出连接到该端口的所有 IP 地址。
例如:
netstat -na | grep :3128
将显示如下内容:
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN
tcp 1 0 10.12.0.1:3128 10.12.3.60:53736 CLOSE_WAIT
tcp 1 0 10.12.0.1:3128 10.12.4.24:60545 CLOSE_WAIT
tcp 1 0 10.12.0.1:3128 10.12.4.13:50484 ESTABLISHED
tcp 1 0 10.12.0.1:3128 10.12.3.55:52669 ESTABLISHED
您可以忽略第一行,该行显示 squid 服务的默认监听。对于其余行,第 4 行是本地服务器 ip,第 5 行列出远程端点(连接到代理的客户端)。在第 6 列,您可以看到 tcp 连接状态。表示ESTABLISHED
当前处于活动状态的连接。
您只能用以下方法列出已建立的连接:
netstat -na | grep :3128 | grep ESTABLISHED
您可以使用不带选项的命令-n
来显示主机名,而不是 IP 地址。
netstat -a | grep :3128 | grep ESTABLISHED
答案2
如果您只想列出 IP 地址,可以使用以下命令:
$ netstat -na | grep :3128 | awk '{print $5}' |uniq
它将给出如下输出:
192.168.5.1:32832
192.168.5.1:32797