ip_nonlocal_bind=1 如何破坏应用程序?

How can ip_nonlocal_bind=1 break applications?

我有两个 Linux 虚拟机。他们都在同一个 IP 上启动 sshd 服务。当一台机器宕机时,您可以使用相同的 IP 登录另一台 VM。但是,另一个 VM 不会侦听该 IP,因为它尚不存在。

我必须手动重新启动 sshd 服务。但是,如果 sshd 未启动,我将无法登录 VM。我通过将 ip_nonlocal_bind 设置为 1.

找到了解决方案

我在 kernel.org 中搜索了 ip_nonlocal_bind 的描述:

  ip_nonlocal_bind - BOOLEAN
  If set, allows processes to bind() to non-local IPv6 addresses, 
  which can be quite useful - but may break some applications.
  Default: 0

最后一行说 but may break some applications,我担心这会破坏我在虚拟机上 运行 的应用程序。

我的VM主要充当路由器。

最后,我想知道:ip_nonlocal_bind如何破解应用程序?

内核文档说 ip_nonlocal_bind 可能会破坏 某些应用程序,因为顾名思义,它允许 bind() 在非本地地址上机器。如果启用此设置,并且应用程序做出(错误的)假设入站地址是机器本地的,这可能导致它崩溃或在任何情况下错误地处理连接。

文档说这可能会破坏某些应用程序,因为在引入设置之前(如果我没记错的话,在内核 v4.3 中)应用程序可以安全地假定绑定地址是本地的。

我不会担心你的情况,因为正如你所说,你的机器只是充当路由器,所以基本上整个路由工作都是由内核本身完成的。