局域网服务器上看访问主机IP,分成两条路:一条查实时连接,一条翻历史记录,实时用netstat -an或ss -anp看当前活动连接,历史用last命令和Web访问日志来找来源。
先从这些地方定位访问IP
想搞清楚谁在访问你的服务器,别急着装监控工具,系统自带的命令和数据已经能覆盖大部分场景,访问IP藏在三个地方:当前活跃的网络连接、系统的登录与操作记录、各应用的运行日志。
实时连接记录反映此刻正与服务器建立通信的IP,适合排查正在进行的异常访问或确认业务调用方。登录记录能告诉你哪些IP成功登入过系统、哪些IP尝试过但失败了,适合发现暴力破解或陌生登录。应用日志则按服务维度记录每一次HTTP请求、数据库查询或文件传输,适合分析业务流量来源。
三个信息源相互补充,查实时麻烦就翻日志,日志缺失就盯连接,组合使用基本不会漏。
Linux服务器怎么看访问主机ip
Linux下看实时连接,netstat是绝大多数系统自带的老牌命令,输入netstat -anp,输出的列表里,Local Address是服务器自身地址和端口,Foreign Address就是远端的IP和端口,State为ESTABLISHED的行即当前活跃访问。
netstat查监听与连接
不加筛选直接跑netstat -an会看到大量TIME_WAIT状态的连接,干扰判断,实操建议这样筛:
netstat -anp | grep ESTABLISHED:只看已建立的连接netstat -anp | grep :22:只看SSH端口上的连接netstat -anp | grep :3306:只看数据库端口的访问来源
注意-p参数需要root权限才能显示进程PID,普通用户执行时改成netstat -ant即可看到IP,但看不到程序名,想确定IP对应哪个服务,先看端口号再对照业务配置,纯靠猜容易出错。
ss命令与端口过滤
新版本Linux上ss比netstat更快更准,输出格式也类似。ss -tunap是常用组合,t指TCP、
u指UDP、n用数字显示端口、a显示所有连接、p显示进程信息,跑完命令后重点看第四列Peer Address,那就是你要的访问IP。
如果连接过多,管道加grep过滤是最顺手的方式,比如排查Web服务谁在访问:ss -tunap | grep :80,来源IP在第六列,一眼扫过去心里就有数。
lsof锁定程序与连接
想确认某个端口正在被谁连接,用lsof -i :端口号能直接列出连接双方的IP和进程名,例如lsof -i :443会显示所有443端口的连接详情,COMMAND列是程序名,最后一列是远端地址,lsof不一定预装,Debian系用apt install lsof,CentOS系用yum install lsof装上即可。
Linux查看ssh登录记录
实时连接解决“正在访问”的问题,但大多数排查场景是事后复盘攻击者早就跑了,或者内部同事下班后登录过服务器,这时候登录记录才是关键。
last与lastb查登录历史
last命令读取/var/log/wtmp文件,展示所有成功登录的会话记录,每一行包含登录用户、来源IP、登录时间、登出时间,直接执行last -20看最近20条记录,能快速判断有没有陌生IP登进来。
lastb命令专门读取/var/log/btmp文件,记录的是所有失败的登录尝试,包括密码错误和账号不存在的SSH连接,执行时需要sudo权限,看到大量来自同一IP的失败记录,基本可以断定正在遭受暴力破解。
在安全日志里筛IP
系统日志是更细粒度的信息源,CentOS、Rocky Linux等系统写入/var/log/secure,Ubuntu、Debian写入/var/log/auth.log,想统计哪些IP成功登录过,可以这样筛:
grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
输出的第一列是次数,第二列是IP,次数越高说明该IP登录越频繁,想看失败尝试来源则换成:
grep "Failed" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
需要留意awk提取的字段位置在不同系统版本上可能有差异,如果输出结果不对,先跑一条
grep "Accepted" /var/log/secure | tail -5看看每行字段结构再调整列号。
Windows服务器查询局域网连接
Windows Server的操作思路与Linux一致,但命令略有区别,打开以管理员身份运行的命令提示符,输入netstat -anb,列表会显示每个TCP连接的本地地址、外部地址和状态,外部地址那一列就是对方IP,加-b参数的目的是显示每个连接对应的程序名,这样就能直接把IP和业务进程对上号。
如果嫌输出太长,用netstat -an | findstr ESTABLISHED过滤出已建立的连接,只看当前活跃连接,想进一步定位IP对应的程序,用netstat -ano看最后一列的PID,然后打开任务管理器,在“详细信息”标签页里找到这个PID对应的进程。
PowerShell用户有更结构化的方式,执行Get-NetTCPConnection -State Established | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess,输出结果以表格形式呈现,RemoteAddress就是访问IP,OwningProcess是进程PID,接着跑Get-Process -Id PID值,就能看到这个连接是由哪个软件建立的。
服务器日志怎么看访问来源
系统层面的连接和登录记录适合排查主机安全,但业务访问量的统计还得看应用日志,Nginx、Apache这类Web服务器的访问日志会记录每一个请求的来源IP、请求路径、响应状态码和用户代理,是分析访问来源最直接的数据。
access.log的IP统计
Nginx默认访问日志在/var/log/nginx/access.log,Apache在/var/log/httpd/access_log或/var/log/apache2/access.log,一条典型日志长这样:
168.1.100 - - [25/Feb/2026:10:15:30 +0800] "GET /index.html HTTP/1.1" 200 1024
第一个字段就是客户端IP,想统计哪些IP访问量最大,执行:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
输出的结果按访问次数从高到低排列,排在前面的就是高频访客,这个命令可以改成统计昨天、上周或某个时间段的日志,只要把文件路径换成对应的日志轮转文件即可。
日志轮转与保存周期
服务器上日志一般按天轮转,昨天的Nginx日志可能叫access.log-20260224或access.log.1,这是logrotate定时任务生效的结果,查历史访问记录之前先确认日志文件存在,常见问题是运维配置了短保留周期,可能只留下最近7天或30天的日志,太久远的数据只能另想办法。
对于数据库类服务,MySQL的通用查询日志、PostgreSQL的日志也能记录客户端IP,但默认大多关闭,需要修改配置文件开启后重启服务,行业共识认为,提前规划日志保存策略比事后从监控系统里翻记录要省心得多,保存周期和日志格式最好在服务上线时就定好。
局域网服务器怎么看访问主机ip的常见问题
为什么netstat查到的IP都是一堆内网地址
局域网内服务器看到的访问IP自然以私网地址为主,比如192.168.x.x、10.x.x.x、172.16.x.x到172.31.x.x,这些地址由DHCP自动分配,租约时间到期后可能重新分配给别人,想让IP和具体电脑精准对应,最稳妥的办法是在路由器或交换机上开启DHCP静态绑定,把MAC地址和IP固定绑定,排查问题时查到IP后,配合arp -a命令查看IP对应的MAC地址,再到交换机上查这个MAC接在哪个端口。
服务器本机网卡为什么看不到访问IP
netstat显示的来源IP来自TCP连接的四元组信息,与服务器网卡配置无关,只要远端设备能通过路由到达服务器,连接建立成功就能看到来源IP,如果连接被防火墙拦截在半路,TCP握手都没完成,netstat自然看不到,此时需要检查防火墙规则、安全组策略和网络路由,用tcpdump -i eth0 port 80抓包看看SYN包有没有到达网卡。
禁止ping的情况下还能查到访问IP吗
能,ICMP协议被防火墙丢弃不代表网络层没有数据交互,只要业务服务(SSH、Web、数据库)在运行,建立的TCP连接就会出现在netstat输出里,禁止ping只是让探测工具无法通过ICMP发现主机,并不影响现有连接的可见性。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/686826.html





