Linux 查看打开的网络端口
使用netstat
netstat -nape 可以列出所有已经建立连接和listening状态的端口
对于嵌入式busybox,可能不支持列出打开端口的程序名,方法有两个:
- 配置busybox
重新编译busybox,支持-p选项列出程序名
- 通过/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功能,iptables invalid output会打印出所有被丢弃的数据包,其中会看到对于的端口号