如何将 Ubuntu 14.04 设置为网关,使用 1 个 NIC 和不同子网上的 2 个 IP 地址?

如何将 Ubuntu 14.04 设置为网关,使用 1 个 NIC 和不同子网上的 2 个 IP 地址?

我有一台带有一个网卡的 Ubuntu 14.04 服务器。此网卡上的 MAC 地址由网关分配一个子网 (XXX0/24) 中的 IP (XXX100),网关位于同一子网 (XXX1) 中,并且 IP 范围来自完全不同的子网 (YYY0/28)。

我已将 XXX100 和 YYY1 安装在同一个接口 (eth0) 上,并且服务器可以与互联网的其他部分进行联系

我有一些虚拟机使用第二个子网中的 IP 地址。它们可以通过主机的两个 IP 地址与主机联系,但除此之外什么都做不了。我假设它们必须使用主机的第二个 IP 地址 YYY1 作为网关,但我该如何设置主机,以便所有发往或来自 YYY0/28 子网的请求都通过网关 XXX1 路由?

据我所知,我不能简单地扩展网络掩码,因为这可能导致无法联系网络上的其他服务器。

这是服务器的/etc/network/interfaces

auto lo
iface lo inet loopback

auto  eth0

iface eth0 inet static
  address   X.X.X.100
  netmask   255.255.255.0
  gateway   X.X.X.1
  dns-nameservers 8.8.8.8 8.8.4.4

iface eth0 inet static
  address   Y.Y.Y.1
  netmask   255.255.255.240

/etc/sysctl.conf已经启用了这一行:

net.ipv4.ip_forward=1

虚拟机使用 YYYn(其中 n>1)作为 IP 地址,使用 YYY1 作为网关。

更新:

我认为虚拟机无法找到 ISP 网关 XXX1 的 MAC 地址:

$ arp -an
? (Y.Y.Y.1) at c8:60:00:5e:bd:e0 [ether] on eth0
? (X.X.X.1) at <incomplete> on eth0

然而奇怪的是,他们有时会……

$ arp -an
? (X.X.X.1) at c8:60:00:5e:bd:e0 [ether] on eth0
? (Y.Y.Y.1) at cc:e1:7f:07:e0:af [ether] on eth0

当这种情况发生时,一切都会正常!我可以从虚拟机访问互联网,并使用它们的 YYYn 地址从互联网访问它们。但它并不总是有效 - 它“忘记”了 YYY1 的 MAC 地址,并且变得无法访问。

我真的很惊讶它在 arp 列表中列出了 YYY1 - 我以为那只适用于同一子网中的设备。我的目标是让它们只使用主机作为网关地址 (YYY1),并通过让主机进行 XXX0/24 上的所有通信来避免该问题。

我的配置合理吗?

还有其他人使用此配置吗?

这种奇怪的“健忘”现象可能有哪些原因造成呢?

相关内容