默认情况下,我们的ntpd/NTP服务器会监听所有端口或IP地址,即:0.0.0.0:123。Linux或FreeBSDUnix服务器如何只监听特定的IP地址,例如localhost或192.168.1.1:123?NTP是NetworkTimeProtocol的首字母缩写,是一种用于在两台计算机之间同步时间的协议。ntpd是一个操作系统守护进程,它设置并保持系统时间与Internet标准时间服务器同步。NTP使用/etc/目录下的ntp.conf作为配置文件。/etc/ntp.conf中的端口命令可以通过设置端口命令来防止ntpd监听0.0.0.0:123,语法如下:interfacelistenIPv4|IPv6|allinterfaceignoreIPv4|IPv6|allinterfacedropIPv4|IPv6|以上ntpd的配置可以让ntpd监听那个地址或者只是丢弃任何请求而不出来。ignore将阻止打开匹配的地址,drop将导致ntpd打开该地址并丢弃所有接收到的数据包而不进行任何检查。比如你想忽略所有端口的监听,在/etc/ntp.conf中加入如下语句:interfaceignorewildcard如果你只监听127.0.0.1和192.168.1.1,就是这样的:interfacelisten127.0.0.1interfacelisten192.168.1.1这是我的FreeBSD云服务器上的示例/etc/ntp.conf文件:$egrep-v'^#|$^'/etc/ntp.conf的示例输出是:tosminclock3maxclock6pool0.freebsd.pool.ntp.orgiburststrict默认限制kodnomodifynotrapnoquerynopeerrestrict-6默认限制kodnomodifynotrapnoquerynopeerrestrict源限制kodnomodifynotrapnoqueryrestrict127.0.0.1restrict-6ds::1leapfile"/var.leap-se.list"interfaceignorewildcardinterfacelisten172.16.3.1interfacelisten10.105.28.1Restartntpd在FreeBSDUnix上重新加载/重启ntpd:$sudo/etc/rc.d/ntpdrestart或者在Debian和UbuntuLinux上使用以下命令:$sudosystemctlrestartntp或者在CentOS/RHEL7/FedoraLinux上使用以下命令:$sudosystemctlrestartntpdVerify使用netstat和ss命令检查ntpd是否仅绑定到特定IP地址:$netstat-tulpn|grep:123或:$ss-tulpn|grep:123示例输出:udp0010.105.28.1:1230.0.0.0:*-udp00172.16.3.1:1230.0.0.0:*-在FreeBSDUnix服务器上使用sockstat命令:$sudosockstat$sudosockstat-4$sudosockstat-4|grep:123示例输出:rootntpd5991422udp4127.0.0.1:123*:*rootntpd5991424udp4127.0.1.1:123*:*
