如何强制BIND9绑定到特定的IP?

这是我的设置:

$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet 10.0.2.0/24 scope global lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 

'lo'在10.0.2.0/24行实际创build〜250个可绑定地址的意义上是神奇的。 大多数守护进程都没有麻烦。 但是,这在我的BIND9-config中不起作用:

 listen-on port 53 { 10.0.2.15; }; 

(我也尝试过没有“端口53”)。 问题在于,对于BIND,listen-on就像是一个“绑定白名单”,它匹配它可以在所有接口上find的所有IP。 在这种情况下,它在任何接口上都找不到10.0.2.15,所以它不会绑定。

任何人都可以推荐一个解决方法吗? 我应该指出,这是一个testing设置,我一直在移动的东西,所以我宁愿一个解决scheme,不涉及太多的运动部件。

经过一些testing…绑定似乎不像你观察其他守护进程一样工作。 我已经注意到2个解决方法,首先是添加一个额外的地址,以允许绑定绑定到它

 ip addr add 10.0.2.15/32 dev lo 

其次是更改地址绑定监听到10.0.2.0

你可以做的testing解决方法是创build一个虚拟接口lo:1并分配地址10.0.2.15给它,并把它

我不认为你可以这样做。 loopback interface在configuration的子网上响应每个IP的事实(即, ping 10.0.2.15按预期工作)并不意味着每个 IP都是可绑定的。

尝试绑定到,例如, 127.0.0.2 ,看看它是否工作。

我认为唯一的解决办法是做@ m0ntassar说。