Linux 查看打开的网络端口

使用netstat

 

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

Linux 查看打开的网络端口

 

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

  1. 配置busybox

Linux 查看打开的网络端口

 

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

 

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

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

a)cat /proc/net/tcp

Linux 查看打开的网络端口

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

Linux 查看打开的网络端口

 

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

head -n 1 /proc/2135/status

Linux 查看打开的网络端口

 

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

 

 

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

 

 

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