TranslateProject/published/201802/20171030 How to bind ntpd to specific IP addresses on Linux-Unix.md
2018-03-02 22:05:19 +08:00

136 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

如何在 Linux/Unix 之上绑定 ntpd 到特定的 IP 地址
======
默认的情况下,我们的 ntpd/NTP 服务器会监听所有的端口或者 IP 地址,也就是:`0.0.0.0:123`。 怎么才可以在一个 Linux 或是 FreeBSD Unix 服务器上,确保只监听特定的 IP 地址,比如 `localhost` 或者是 `192.168.1.1:123`
NTP 是<ruby>网络时间协议<rt>Network Time Protocol</rt></ruby>的首字母简写这是一个用来同步两台电脑之间时间的协议。ntpd 是一个操作系统守护进程,可以设置并且保证系统的时间与互联网标准时间服务器同步。
[![如何在 Linux 和 Unix 服务器,防止 NTPD 监听 0.0.0.0:123 并将其绑定到特定的 IP 地址][1]][1]
NTP 使用 `/etc/directory` 之下的 `ntp.conf` 作为配置文件。
### /etc/ntp.conf 之中的端口指令
你可以通过设置端口命令来防止 ntpd 监听 `0.0.0.0:123`,语法如下:
```
interface listen IPv4|IPv6|all
interface ignore IPv4|IPv6|all
interface drop IPv4|IPv6|all
```
上面的配置可以使 `ntpd` 监听那个地址或者不出来任何请求而直接丢弃。`ignore` 会防止打开匹配的地址,`drop` 会导致 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 之上使用下面的命令][2]
```
$ sudo systemctl restart ntp
```
或者 [在 CentOS/RHEL 7/Fedora Linux 之上使用下面的命令][2]
```
$ 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 命令][3]
```
$ 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 *:*
```
---
作者是 nixCraft 的创始人并且是一位经验丰富的系统管理员、DevOps 工程师,也是一名 Linux 操作系统和 Unix shell 脚本的训练师。他为全球不同行业,包括 IT、教育业、安全防护、空间研究和非营利性组织的客户工作。关注他的 [Twitter][4], [Facebook][5], [Google+][6]。
--------------------------------------------------------------------------------
via: https://www.cyberciti.biz/faq/how-to-bind-ntpd-to-specific-ip-addresses-on-linuxunix/
作者:[Vivek Gite][a]
译者:[Drshu](https://github.com/Drshu)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.cyberciti.biz
[1]:https://www.cyberciti.biz/media/new/faq/2017/10/how-to-prevent-ntpd-to-listen-on-all-interfaces-on-linux-unix-box.jpg
[2]:https://www.cyberciti.biz/faq/restarting-ntp-service-on-linux/
[3]:https://www.cyberciti.biz/faq/freebsd-unix-find-the-process-pid-listening-on-a-certain-port-commands/
[4]:https://twitter.com/nixcraft
[5]:https://facebook.com/nixcraft
[6]:https://plus.google.com/+CybercitiBiz