Linux 查看打开的网络端口

使用netstat

netstat -nape 可以列出所有已经建立连接和listening状态的端口

​对于嵌入式busybox,netstat命令可能不支持列出打开端口的程序名,方法有两个:

  1. 配置busybox

​​重新编译busybox,支持-p选项列出程序名

    2.通过/proc文件系统查找

查看系统打开的所有tcp端口

a)cat /proc/net/tcp

local_address 列就是ip:port ,这里都是16进制的

inode: 打开的socket对应的inode

 

b)查找inodeno对应的进程号

for dir in `find /proc/ -name "fd"`; do ls -l $dir | grep 'socket\:\[13849\]' && echo $dir;done

c)根据进程号得到进程的名字

head -n 1 /proc/2135/status

可以看出3841,对于的10进制为14401,打开该端口的程序名为sshd

通过该方法同样可以查看udp打开的端口,netstat程序实际上就是通过上述过程显示的打开端口信息

对于client端,该方法并不适用,这时就要用到iptables的log功能或者TCPdump工具,iptables invalid output会打印出所有被丢弃的数据包,其中会看到对于的端口号

发布了85 篇原创文章 · 获赞 26 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/whuzm08/article/details/82872900