多宿主服务器上应用程序的绑定地址

多宿主服务器上应用程序的绑定地址

我有一个通过 quagga 运行 bgp 的多宿主服务器

如果我在此服务器上启动一个发起连接的应用程序,默认情况下它将选择具有最低度量的接口,即 bgp 路由器邻居的地址,这很不幸,因为这些邻居地址甚至无法向上游传递。

如果启动连接的软件无法绑定到特定 IP 地址,是否可以通过其他方法让应用程序绑定到特定 IP?使用动态路由调整指标以偏好接口似乎不可行。

如果没有其他办法,可以选择在 jail 中运行 bgp 并使用 vnic

编辑

如果有人能解释:我将奖励他:
如何做到这一点。
解释如何在 Linux 上做到这一点(如果在 BSD 上不可能做到)。
提供为什么目前不可能做到这一点的权威参考。

答案1

我们通常会向服务器添加路由,告诉它下一跳是某个 IP 地址。它将在下一跳使用位于同一子网中的卡。

您没有说是什么操作系统,但我在您的标签中看到了 freebsd,所以我假设是那样。

您必须将 freebsd 变成路由器,然后添加静态路由。有关以下内容的更多详细信息,请访问 freebsd.org,使用此链接。以下信息来自那里。

30.2.2. 使用静态路由配置路由器

由 Al Hoang 贡献。

如果 FreeBSD 系统是双宿主系统,则可以将其配置为网络的默认网关或路由器。双宿主系统是驻留在至少两个不同网络上的主机。通常,每个网络都连接到单独的网络接口,但可以使用 IPaliasing 将多个地址(每个地址位于不同的子网上)绑定到一个物理接口。

为了使系统能够在接口之间转发数据包,必须将 FreeBSD 配置为路由器。 Internet 标准和良好的工程实践阻止 FreeBSD 项目默认启用此功能,但可以通过在 /etc/rc.conf 中添加此行将其配置为在启动时启动:

gateway_enable="YES" # 如果此主机将作为网关,则设置为 YES

要立即启用路由,请将 sysctl(8) 变量 net.inet.ip.forwarding 设置为 1。要停止路由,请将此变量重置为 0。

路由器的路由表需要额外的路由,以便知道如何到达其他网络。可以使用静态路由手动添加路由,也可以使用路由协议自动学习路由。静态路由适用于小型网络。

有关配置示例和更多详细信息,请访问此链接在 freebsd.org

相关内容