设置应用程序的首选接口/IP

设置应用程序的首选接口/IP

我有一个带有两个 IP 的接口,如下所示(某些防火墙流量管理所必需的)。似乎应用程序可以在启动时绑定到其中一个(如果它们未指定 IP),这可能会干扰我的双 IP 地址的用途。 (RedHat 文档建议不再为每个 IP 创建单独的接口)。

我不想使用修改后的命令行启动每个可执行文件,我希望可以为每个 IP 分配一个权重或其他内容,以确保应用程序更喜欢一个 IP 而不是另一个 IP。

2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:b6:49:04 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 172.31.254.31/24 brd 172.31.254.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 172.31.254.32/24 brd 172.31.254.255 scope global secondary noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feb6:4904/64 scope link
       valid_lft forever preferred_lft forever

答案1

我希望可以为每个 IP 分配一个权重或其他东西,以确保应用程序会更喜欢一个 IP 而不是另一个 IP。

在您的路由上设置 RTA_PREFSRC 属性;当程序未显式绑定到首选源 IP 地址时,这将充当首选源 IP 地址的提示。

  • ip路由2:
    ip 路由通过 172.31.254.1 添加默认值源代码172.31.254.31
  • 系统网络:
    [路由]
    网关=172.31.254.1
    首选来源=172.31.254.31

还可以尝试通过将“首选生命周期”设置为零来将地址标记为“已弃用”;这最初是 IPv6 特定的属性(该技巧已广泛用于具有多个 IPv6 地址的主机),但我认为它也可以与 IPv4 一起使用。 (已弃用的地址仍然可用,但只要有任何未弃用的地址可用,就不会默认选择该地址。)

  • ip路由2:
    ip地址添加172.31.254.32/24 dev eth0首选_lft 0
  • 系统网络:
    [地址]
    地址=172.31.254.32/24
    首选生命周期=0

RedHat 文档建议不再为每个 IP 创建单独的接口。

这些单独的eth0:0接口是 Linux 2.2.x 时代的遗留物——在当前的内核中,它们不再存在,而只是通过 IP 地址上的“标签”属性进行模拟。只有像 ifconfig 这样的旧工具才能“看到”这样的接口,而其他所有工具仍然只能看到一个带有两个 IP 地址的 eth0。

相关内容