如何在Linux/Unix之上绑定ntpd到特定的IP地址

默认的情况下,我们的ntpd/NTP服务器会监听所有的端口或者IP地址,也就是:0.0.0.0:123。怎么才可以在一个Linux或是FreeBSDUnix服务器上,确保只监听特定的IP地址,比如localhost或者是192.168.1.1:123

NTP是网络时间协议NetworkTimeProtocol的首字母简写,这是一个用来同步两台电脑之间时间的协议。ntpd是一个操作系统守护进程,可以设置并且保证系统的时间与互联网标准时间服务器同步。

如何在Linux/Unix之上绑定ntpd到特定的IP地址

NTP使用/etc/directory之下的ntp.conf作为配置文件。

/etc/ntp.conf之中的端口指令

你可以通过设置端口命令来防止ntpd监听0.0.0.0:123,语法如下:

interfacelistenIPv4|IPv6|all

interfaceignoreIPv4|IPv6|all

interfacedropIPv4|IPv6|all

上面的配置可以使ntpd监听那个地址或者不出来任何请求而直接丢弃。ignore会防止打开匹配的地址,drop会导致ntpd打开该地址并丢弃所有接收到的包,而不做任何检查。举个例子,如果要忽略所有端口之上的监听,加入下面的语句到/etc/ntp.conf:

interfaceignorewildcard

如果只监听127.0.0.1和192.168.1.1则是这样:

interfacelisten127.0.0.1

interfacelisten192.168.1.1

这是我FreeBSD云服务器上的样例/etc/ntp.conf文件:

$egrep-v'^#|$^'/etc/ntp.conf

样例输出为:

tosminclock3maxclock6

pool0.freebsd.pool.ntp.orgiburst

restrictdefaultlimitedkodnomodifynotrapnoquerynopeer

restrict-6defaultlimitedkodnomodifynotrapnoquerynopeer

restrictsourcelimitedkodnomodifynotrapnoquery

restrict127.0.0.1

restrict-6::1

leapfile"/var/db/ntpd.leap-seconds.list"

interfaceignorewildcard

interfacelisten172.16.3.1

interfacelisten10.105.28.1

重启ntpd

在FreeBSDUnix之上重新加载/重启ntpd:

$sudo/etc/rc.d/ntpdrestart

或者在Debian和UbuntuLinux之上使用下面的命令:

$sudosystemctlrestartntp

或者在CentOS/RHEL7/FedoraLinux之上使用下面的命令:

$sudosystemctlrestartntpd

校验

使用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*:*

相关推荐