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

时间:2020-01-09 14:16:51  来源:igfitidea点击:

默认情况下,我的ntpd/NTP服务器侦听所有接口或IP地址,即0.0.0.0:123。
如何确保ntpd仅侦听Linux或FreeBSD Unix服务器上的特定IP地址(例如localhost或192.168.1.1:123)?

NTP是网络时间协议的缩写。
它用于计算机之间的时钟同步。

ntpd程序是一个操作系统守护程序,它与Internet标准时间服务器同步设置和维护系统的一天中的时间。

NTP是使用/etc /目录中的ntp.conf配置的。

/etc/ntp.conf中的接口指令

您可以通过设置interface命令来防止ntpd监听0.0.0.0:123。
语法为:

interface listen IPv4|IPv6|all
interface ignore IPv4|IPv6|all
interface drop IPv4|IPv6|all

上面配置了ntpd侦听或丢弃的网络地址,而不处理任何请求。
忽略将阻止打开匹配的地址,丢弃会导致ntpd打开地址并丢弃所有未检查的数据包。
例如,要忽略所有接口上的列表,请在/etc/ntp.conf中添加以下内容:

interface ignore wildcard

要仅收听127.0.0.1和192.168.1.1地址:

interface listen 127.0.0.1
interface listen 192.168.1.1

这是我的示例来自FreeBSD云服务器的/etc/ntp.conf文件:

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

输出示例:

tos minclock 3 maxclock 6
pool 0.freebsd.pool.ntp.org iburst
restrict    default limited kod nomodify notrap noquery nopeer
restrict -6 default limited kod nomodify notrap noquery nopeer
restrict    source  limited kod nomodify notrap noquery
restrict 127.0.0.1
restrict -6 ::1
leapfile "/var/db/ntpd.leap-seconds.list"
interface ignore wildcard
interface listen 172.16.3.1
interface listen 10.105.28.1

重启ntpd

在FreeBSD Unix上重新加载/重启ntpd:

$ sudo /etc/rc.d/ntpd restart

或在Debian/Ubuntu Linux上使用以下命令:

$ sudo systemctl restart ntp

或在CentOS/RHEL 7/Fedora Linux上使用以下命令:

$ sudo systemctl restart ntpd

验证

使用netstat命令/ss命令进行验证,或确保ntpd仅绑定到特定的IP地址:

$ netstat -tulpn | grep :123

或者

$ ss -tulpn | grep :123

输出示例:

udp        0      0 10.105.28.1:123         0.0.0.0:*                           -               
udp        0      0 172.16.3.1:123          0.0.0.0:*                           

在FreeBSD Unix服务器上使用sockstat命令:

$ sudo sockstat
$ sudo sockstat -4
$ sudo sockstat -4 | grep :123

输出示例:

root     ntpd       59914 22 udp4   127.0.0.1:123         *:*
root     ntpd       59914 24 udp4   127.0.1.1:123         *:*