Jér*_*dix 3 networking bsd openbsd
当我执行以下操作时netstat
:
$ netstat -nap udp -f inet
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
udp 0 0 192.168.1.23.37177 212.83.160.142.123
udp 0 0 192.168.1.23.44025 195.154.189.15.123
udp 0 0 192.168.1.23.48639 163.172.228.190.123
udp 0 0 192.168.1.23.26792 5.135.3.88.123
udp 0 0 *.514 *.*
udp 0 0 *.* *.*
Run Code Online (Sandbox Code Playgroud)
我看到前四行 udp 是用于 NTP 的:好的
下一行(端口 514)用于 syslogd:OK
但是下一行是什么意思?
udp 0 0 *.* *.*
Run Code Online (Sandbox Code Playgroud)
任何人都可以从任何地方连接到任何端口?或者侦听我机器上任何端口的过程是什么?我怎样才能找到那个过程?
编辑
$ fstat | grep udp
_ntp ntpd 35059 6* internet dgram udp 192.168.1.23:5862 <-> 212.83.158.83:123
_ntp ntpd 35059 7* internet dgram udp 192.168.1.23:45616 <-> 51.255.141.154:123
_ntp ntpd 35059 8* internet dgram udp 192.168.1.23:23331 <-> 5.135.3.88:123
_ntp ntpd 35059 9* internet dgram udp 192.168.1.23:18127 <-> 129.250.35.251:123
_syslogd syslogd 58451 4* internet dgram udp *:514
_syslogd syslogd 58451 5* internet6 dgram udp *:514
_dhcp dhclient 57064 3* internet dgram udp *:0
root dhclient 42561 3* internet dgram udp *:0
Run Code Online (Sandbox Code Playgroud)
是 dhclient 在 netstat 中创建该行吗?进程(它不是守护进程)如何绑定到 *:0 ?
更多信息 :
$ ps aux | grep -i dhclient
root 42561 0.0 0.0 616 484 ?? Is 10:39PM 0:00.01 dhclient: em0 [priv] (dhclient)
_dhcp 57064 0.0 0.0 744 516 ?? Isp 10:39PM 0:00.00 dhclient: em0 (dhclient)
Run Code Online (Sandbox Code Playgroud)
编辑 2: 在 dhclient(8) 中,我读到:
dhclient 监视系统以了解默认路由的更改,并在检测到可能的更改时重新检查是否应写入其 resolv.conf。
会不会是这样?
它是一个未指定或通配符的端口(或地址);从netstat(1)
未指定或“通配符”地址和端口显示为单个“*”
*.514
syslog 也是如此,每个/etc/services
监听来自任何地方的连接(listen(2)
有关详细信息,请参阅有关此内容的详细信息)并且*.*
监听系统可能具有的任何地址上的任何端口。外部地址*.*
用于这些,因为没有任何连接,这与端口 123 上的 NTP 相关连接不同。
根据fstat | grep udp
@Kusalananda的命令,听众是为了dhclient
;侦听端口0实际上有可能在某些系统(IRIX我记得有一个TCP / 0监听)尽管在这种情况下,dhclient
代码是做一个稍微不寻常的套接字调用,这样ioctl
可以进行相关的界面,看到get_ifname
子程序dhclient.c
下src/sbin
的源代码树对于该代码的一部分。