我有一个带有两个 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。