比方说,我有一个eth0
带有 IPv4 地址接口的服务器192.168.0.1/24
。我有一个应用程序在这个服务器上运行,它必须绑定到192.168.0.0/24
网络中的另一个 IPv4 地址,但是在服务器上运行的其余应用程序需要继续192.168.0.1
用作出口连接的源地址。比方说,这个另一个地址必须是192.168.0.2
. 我可以添加192.168.0.2/24
并eth0
确保ip route change default via 192.168.0.254 dev eth0 src 192.168.0.1
默认情况下传出连接192.168.0.1
用作源地址。或者,我可以添加192.168.0.2/32
而不是添加192.168.0.2/24
到eth0
,这样我就不需要触及路由表了。
保持次要地址与主地址具有相同的子网掩码有什么好处吗?192.168.0.2/32
或者更具体地说,根据我的例子,在网络接口上配置而不是在配置上有什么区别192.168.0.2/24
?
我不确定,但指定掩码
/32
可能意味着点对点链接,这可能会禁用 ARP。这可能会导致一些意外行为。您可以通过进一步设置(可能在使用 192.168.0.2 地址的连接的两端)解决它。但这只是一种过于聪明的黑客攻击,它会导致你的手机在你的假期中爆炸,你的同事会发来消息:“我换了一个坏掉的网卡,这项服务坏了,我什至不知道它过去是怎么回事之前工作,帮忙!!! ”
或者可能是一年左右后你自己,回到这个系统并想知道:“我记得我在这里做了一些非常聪明的事情,但它的所有部分是什么? ”
在对具有多个 IP 地址的系统进行故障排除时,路由表应该是首先要查看的内容之一,因此有能力的故障排除人员可以很容易地发现自定义的默认路由。“嗯……默认路由多了一个指定源地址的属性……也就是说那个网段必须配置多个可能的源地址! ”
这将有希望引导有问题的人运行
ip address show
(因为旧的ifconfig
不会显示添加到接口的额外地址ip address add
...问我怎么知道的)并发现第二个地址,否则这将是完全正常的,没有风险“点对点”特例。因此,简而言之,我认为使用
/24
和路由表自定义将使配置更加明确,并且更容易确定是否/何时需要。但我承认,这几乎完全是基于意见的。