这是我的设置:
$ 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 行实际上创建了大约 250 个可绑定地址。大多数守护进程都可以毫无困难地绑定到这些地址。但是,这在我的 BIND9-config 中不起作用:
listen-on port 53 { 10.0.2.15; };
(我也尝试过不使用“端口 53”)。问题是,对于 BIND 来说,listen-on 就像一个“绑定白名单”,它会匹配它在所有接口上找到的所有 IP。在本例中,它在任何接口上都找不到 10.0.2.15,因此它不会绑定。
有人能推荐一种解决方法吗?我应该指出,这是一个测试设置,我一直在移动东西,所以我更喜欢一个不涉及太多移动部件的解决方案。
答案1
经过一些测试...Bind 似乎无法像您观察到的其他守护进程那样工作。我注意到了 2 个解决方法,第一个是添加一个额外的地址以lo
允许 bind 绑定到它
ip addr add 10.0.2.15/32 dev lo
第二个是改变绑定监听的地址10.0.2.0
答案2
作为测试的解决方法,您可以创建一个虚拟接口 lo:1 并为其分配地址 10.0.2.15,然后启动它
答案3
我认为你做不到这一点。事实上loopback interface
回应在配置的子网上的每个 IP 上(即ping 10.0.2.15
按预期工作),并不意味着每一个IP可绑定。
例如,尝试绑定到,127.0.0.2
看看它是否有效。
我认为唯一的解决办法就是按照@m0ntassar 所说的去做。