网关是否必须始终与主机 IP 地址位于同一子网上?

网络工程 网络 第 3 层 linux 网关
2022-02-11 07:55:56

我想,显而易见的答案是肯定的,但我的 VPS 提供商似乎不同意。

我刚刚上传了一个 Ubuntu 20.04 实例,提供商告诉我:

IP address: 77.xxx.yyy.zzz/32
Gateway: 10.xxx.yyy.zzz

我不能让它工作 -它可以工作吗?

他们的指令几乎为零,但他们有一个建议的/etc/network/interfaces文件与这种不一致。我还没有尝试过,因为我当前的图像没有ifupdown安装(我认为它已经过时了),并且需要几个小时来准备和上传新图像,因为我怀疑它不会工作。

我可以通过以下方式轻松启动网络 I/F:

# ip addr add 77.xxx.yyy.zzz/32 dev ens192
# ip link set dev ens192 up

但是,如果我按如下方式设置网关,我会得到“Nexthop 的网关无效”:

# ip route add default via 10.xxx.yyy.zzz
2个回答

下一跳地址必须是可达的,这意味着您需要一条通往(“覆盖”)它的路由。在这种情况下,一个简单的ip route add 10.x.y.z/32 dev ens192第一个将让你到达那里。这表示主机在该链接上。

(这是运行数据中心的一种糟糕方式。)

PS:这是用 linux 术语表达的,但几乎任何平台都可以这样做。即(IOS)ip route 10.x.y.z 255.255.255.255 G0/0(提示:我实际上有这样一条到电缆调制解调器内部网络的流量路由。)

网关是网络上知道如何访问其他网络的主机。如果网关配置在不同的网络上,您将需要一个网关才能到达网关,但它不会那样工作。它还带有主机试图在不同网络上引导流量的味道,这是不可取的。

请记住,每个跃点都会根据数据包的目标地址做出自己独立的路由决策,因此在您的配置中到达网关的网关可能不是第一跳路由器发送数据包的方向。它无法知道您打算将数据包发送到其他中间跃点,因为数据包标头中没有任何内容可以说明。

另外,请记住主机/服务器配置在这里是题外话。