Cra*_*Tux 9 networking ubuntu port process
我决定发布这个问题,尽管有很多类似的问题,但没有一个回答我的问题。
lsb_relase -a:Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
Run Code Online (Sandbox Code Playgroud)
netstat -tulpn4,输出显示未知端口:tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 580/systemd-resolve
tcp 0 0 0.0.0.0:62176 0.0.0.0:* LISTEN 900/sshd: /usr/sbin
tcp 0 0 0.0.0.0:1122 0.0.0.0:* LISTEN 1158/sshd: username
tcp 0 0 0.0.0.0:3333 0.0.0.0:* LISTEN 1158/sshd: username
udp 0 0 0.0.0.0:51820 0.0.0.0:* -
udp 0 0 127.0.0.53:53 0.0.0.0:* 580/systemd-resolve
udp 0 0 X.X.X.X:1194 0.0.0.0:* 870/openvpn
Run Code Online (Sandbox Code Playgroud)
51820但没有找到答案。sudo lsof -i :51820- 并得到一个空的输出。sudo netstat -ltnp | grep -w ':51820'- 并得到一个空的输出。sudo fuser 51820/udp- 并得到一个空的输出。sudo netstat -peanut | grep ":51820"- 输出是:udp 0 0 0.0.0.0:51820 0.0.0.0:* 0 26262 -
udp6 0 0 :::51820 :::* 0 26263 -
Run Code Online (Sandbox Code Playgroud)
sudo ss -nlp | grep 51820输出是:udp UNCONN 0 0 0.0.0.0:51820 0.0.0.0:*
udp UNCONN 0 0 [::]:51820 [::]:*
Run Code Online (Sandbox Code Playgroud)
在网上搜索有关端口的信息后,51820我发现我安装的“wireguard”正在该端口上侦听,但问题仍然与我尝试过的任何命令相同,我无法找到答案。
您正在运行的操作系统将 Wireguard 实现为内核模块。您的内核正在侦听此端口,并且由于没有进程拥有该套接字,因此 不会报告 PID netstat。
一般:
经过两天的搜索后,我围绕这个问题进行了搜索,我发现像 Michael Hampton 和 Peter Zhabin 一样,没有现有的解决方案可以通过侦听端口显示内核进程 ID。
另外,在那两天里,我还搜索了一些commands 可以带来想要的答案的组合,但没有找到简单或方便的方法来做到这一点。
我创建的解决方案是初步的,我相信社区成员可以对其进行改进。
查找流程的折扣
lsof、netstat、ss、fuser。关于grep:
我们将用来grep查找有关开放端口的更多信息。
grep- 打印与模式匹配的行。
通过命令从grep手册页man grep。
DESCRIPTION
grep searches for PATTERNS in each FILE. PATTERNS is one or more
patterns separated by newline characters, and grep prints each line
that matches a pattern. Typically PATTERNS should be quoted when grep
is used in a shell command.
Run Code Online (Sandbox Code Playgroud)
如何通过以下方式找到 PID 或使用给定端口的程序grep:
在我的例子中,执行sudo grep --exclude-dir={sys,proc} -rnw / -e 51820 | grep -i port解决了问题并显示了有关使用该端口的程序的分配信息。
给定的输出:
iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ACCEPT
/home/username/wireguard-install.sh:238: read -p "Port [51820]: " port
/home/username/wireguard-install.sh:241: read -p "Port [51820]: " port
/home/username/wireguard-install.sh:243: [[ -z "$port" ]] && port="51820"
/usr/share/doc/netplan/examples/wireguard.yaml:9: port: 51820
/etc/wireguard/wg0.conf:8:ListenPort = 51820
/etc/systemd/system/wg-iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ACCEPT
/etc/systemd/system/wg-iptables.service:10:ExecStop=/usr/sbin/iptables -D INPUT -p udp --dport 51820 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
许多标志的原因是我尝试过的其他组合有大量不需要的输出。
命令参数grep代表什么:
--exclude-dir- 跳过名称后缀与模式匹配的任何命令行目录。在我们的特定情况下,特定的忽略sys和proc目录 是为了避免不需要的输出。
示例:grep --exclude-dir={dir1,dir2}在搜索过程中将避开 dir1 和 dir2。
-r或者-R是递归的。-n是行号。-w代表匹配整个单词。/代表“最高”目录,从上到下开始搜索。-e- 是搜索期间使用的模式。51820在我们的具体情况中,是上面的网络监控命令之一找到的端口号。|- 是将第一个命令部分的输出重定向到第二个命令部分的管道。在我们的例子中:将输出sudo grep --exclude-dir={sys,proc} -rnw / -e 51820重定向到下一个命令grep -i port
-i- 忽略模式和输入数据中的大小写区别,以便仅大小写不同的字符相互匹配。port- 找到的目的是将结果范围缩小到我们执行搜索的目的,查找有关标志后定义的特定端口的更多信息-e。尖端:
/通过从目录开始,并使用最小标志来过滤输出,在第一步中使扫描尽可能最大,以确保您不会错过我们可以实现的任何细节。grep命令将第一次扫描重定向到port模式过滤器,它可以精确定位我们并加快解决速度,毕竟我们正在寻找数字作为模式,这可能会导致许多不需要的结果。| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |