具有两个接口的 Ubuntu 服务器 (VM)。每次只能在一个接口或另一个接口上传输流量

具有两个接口的 Ubuntu 服务器 (VM)。每次只能在一个接口或另一个接口上传输流量

让我先从一张粗略的网络图开始。

内部第 3 层交换机(多个 VLAN,包括 172.16.220.0 网络)--> 内部网络(172.16.220.0/24)--> eth1(172.16.220.100)-Ubuntu 10.04 VM-eth0(192.168.1.100)--> NATed 网络(192.168.1.0/24)--> ASA --> ISP。

这是我在两台不同的服务器上遇到的问题。我构建的服务器只有一个接口 eth0,它连接到 ASA 的内部接口。然后我为内部 172.16.220.0 网络添加了另一个接口。我在 /etc/network/interfaces 中将网关设置在 eth0 上,而不是 eth1 上。我可以从外部访问服务器,但不能从内部访问。如果我从 eth0 中删除网关并为 eth1 设置网关,当然我可以从内部访问它,但不能从外部访问它。

我尝试设置一些基于策略的路由,以便来自内部网络(多个 VLAN - 172.16.0.0/16)的任何流量都将被路由回 eth1,但它没有起作用。显然,我遗漏了这个难题的某些部分,并且可能错误地配置了这些服务器。有人能帮我让它工作吗,这样我就可以从外部和内部访问服务器。我对必须使用 3G 连接通过 SSH 进入我的服务器进行配置感到沮丧!!

这是我的 /etc/network/interfaces 配置:

# This file describes the network interfaces available on your system

 auto loopback network interface
  iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static

    address 192.168.1.100
    netmask 255.255.255.0

#       gateway 192.168.1.1

auto eth1
iface eth1 inet static
    address 172.16.220.100

    netmask 255.255.255.0

    gateway 172.16.220.1

auto eth0
iface eth0 inet static

    address 192.168.1.100

    netmask 255.255.255.0

和我的内核路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
172.16.220.0    *               255.255.255.0   U     0      0        0 eth1
default         172.16.220.1    0.0.0.0         UG    100    0        0 eth1

我曾尝试在 /etc/sysctl.conf 中启用 IPv4 转发,但也没有用。

如果还有其他需要,请告诉我。

感谢您的帮助。

编辑-在设置 faker 建议的静态路由后添加内核路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.220.0    172.16.220.1    255.255.255.0   UG    0      0        0 eth1
172.16.220.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0

答案1

如果我理解正确的话:

显然,您只能有一个默认网关。
您希望将默认网关设置在 eth0 上(这是您的外部网络,对吗?)。

要访问内部网络,您需要设置静态路由,例如:
route add -net 172.16.X.0 netmask 255.255.0.0 gw 172.16.220.1 dev eth1

测试它是否有效,然后使其永久生效(不确定在 Ubuntu 中是如何做到的)。

顺便说一句,您在 /etc/network/interfaces 中设置了两次 eth0。

答案2

我认为 taker 的静态路由是正确的,但他指定的到服务器所在子网的路由是错误的。我认为您需要做的是将网关设置为 192.168.1.1,然后使用 172 路由器地址作为网关为每个子网 (vlan) 创建静态路由。如果您需要更详细的说明来了解要输入哪些命令,请列出所有子网,我会尝试在早上在我的电脑上为您创建路由表,目前在我的手机上,所以这有点棘手!

答案3

有点令人困惑,但听起来您需要从主机服务器访问您的虚拟机,反之亦然。

在虚拟机中,添加静态路由

路由添加-net 172.16.220.0 网络掩码 255.255.255.0 172.16.220.100

在主机上:

路由添加-net 192.168.1.0 网络掩码 255.255.255.0 192.168.1.100

但我很可能错了。

相关内容