linux获取侦听端口失败ircv=198

linux获取侦听端口失败ircv=198,第1张

程序监听了“需要root权限开启的端口”,但是以非root权限运行,此时,程序会随机监听一个不需要root权限的端口。

解决办法:1. 以root权限运行程序。2. 把监听的端口改为不需root权限的端口。

防火墙为设置允许该端口通过。以root权限执行以下命令。

/sbin/iptables -I INPUT -p 协议名 --dport 端口号 -j ACCEPT

排查问题思路:

先ping看ip通不通。

netstat查看对应进程监听端口,是否正确。

查看防火墙规则,是否允许端口通过。

1. 列出所有端口 (包括监听和未监听的)

列出所有端口: netstat -a

列出所有tcp端口: netstat -at

列出所有udp端口: netstat -au

2. 列出所有处于监听状态的 Sockets

只显示监听端口: netstat -l

只列出所有监听tcp端口: netstat -lt

只列出所有监听udp端口: netstat -lu

只列出所有监听UNIX端口: netstat -lx

3. 显示每个协议的统计信息

显示所有端口的统计信息 netstat -s

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"


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存