linux 查询哪些端口被监听

linux 查询哪些端口被监听,第1张

1. 可以通过"netstat -anp" 来查看哪些端口被打开。

(注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049, ftp->21,因此可以开启两个终端,一一对应一下程序所对应的端口号)

2. 然后可以通过"lsof -i:$PORT"查看应用该端口的程序($PORT指对应的端口号)。或者你也可以查看文件/etc/services,从里面可以找出端口所对应的服务。

(注:有些端口通过netstat查不出来,更可靠的方法是"sudo nmap -sT -O localhost")

3. 若要关闭某个端口,则可以:

1)通过iptables工具将该端口禁掉,如:

"sudo iptables -A INPUT -p tcp --dport $PORT -j DROP"

"sudo iptables -A OUTPUT -p tcp --dport $PORT -j DROP"

2)或者关掉对应的应用程序,则端口就自然关闭了,如:

"kill -9 PID" (PID:进程号)

如:通过"netstat -anp | grep ssh"

有显示:tcp 0 127.0.0.1:2121 0.0.0.0:* LISTEN 7546/ssh

则:"kill -9 7546"

在Linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn。

对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,

我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.

每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方面有关:

- somaxconn参数.

- 使用该端口的程序中listen()函数.

1. 关于somaxconn参数:

定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为1024,具体信息为:

Purpose:

Specifies the maximum listen backlog.

Values:

Default: 1024 connections

Range: 0 to MAXSHORT

Type: Connect

Diagnosis:

N/A

Tuning

Increase this parameter on busy Web servers to handle peak connection rates.

看下FREEBSD的解析:

限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,默认的128太小了(web服务器listen函数的backlog会给我们内核参数的net.core.somaxconn先知道128,比如nginx)。大多数环境这个值建议增加到 1024 或者更多。 服务进程会自己限制侦听队列的大小(例如 sendmail(8) 或者 Apache),常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。

socket tcp的backlog的上限是min(backlog,somaxconn),其中backlog是应用程序中传递给listen系统调用的参数值,somaxconn是内核规定的最大连接数。

使用netstst命令查看正在监听状态的端口: 1、netstat -nupl //n表示用数字形式显示端口号,u,表示UDP协议类型,p是程序PID,l表示处于监听状态的; 2、netstat -nuplf|grep 3306 //这个表示查找处于监听状态的,端口号为3306的进程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8705044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存