我必须设置几个服务器,每个服务器有 2 个网络接口。由于我对服务器配置和网络还不熟悉,所以我目前正在尝试在虚拟机上模拟一切。
每台服务器将有 2 个 NIC,eth0 和 eth1。所有 eth0 将连接到网关并通过网关连接到互联网。所有 eth1 将连接到私有交换机。eth0 应用于所有外部流量(互联网)。服务器之间的所有流量都应仅通过每台服务器的 eth1(不使用网关)。
如果我理解正确的话,我必须定义(静态)路由。我真正不明白的是网络掩码,以及我是否必须为每个服务器设置路由,或者我是否必须定义一个具有特定网络掩码的路由来覆盖所有 eth1 IP 地址。
假设:
Server A eth0 has the IP 192.168.1.91 (will be later internet).
Server A eth1 has the IP 192.168.1.92 (local network).
Server B eth0 has the IP 192.168.1.93 (will be later internet).
Server B eth1 has the IP 192.168.1.94 (local network).
Server C eth0 has the IP 192.168.1.95 (will be later internet).
Server C eth1 has the IP 192.168.1.96 (local network).
我现在在服务器 A 上定义了一条路由:
route add -net 192.168.1.94 netmask 255.255.255.255 dev eth1
route add -net 192.168.1.96 netmask 255.255.255.255 dev eth1
ip route get 192.168.1.94
结果是
192.168.1.94 dev eth1 src 192.168.1.91
ip route get 192.168.1.96
结果是
192.168.1.96 dev eth1 src 192.168.1.91
如果我理解正确,那么发往 192.168.1.94(和 96)的数据包现在将通过 eth1 发送。但为什么源 IP 是 192.168.1.91,即使这是 eth0,而 eth1 应该是 192.168.1.92?是否有可能在服务器 B 上看到来自服务器 A 的每个 IP 的请求?假设我在服务器 A 上执行类似 ping 192.168.1.93 的操作,那么我可以在服务器 B 上检查 ping 请求来自哪个 IP 吗?
答案1
您应该能够仅使用默认路线即可。
正如@所解释的那样罗恩·莫平,您的私有网络不需要路由,它是第 2 层,因此主机可以“找到”彼此。不过,在需要此配置的任何配置中,您都需要使用私有 IP(或主机名)。
对于您的互联网 NIC,您可以配置其 IP,并将系统的默认路由设置为您的互联网网关。
具体如何操作取决于您使用什么,但在 CentOS/RedHat/Fedora 上,假设您的互联网网关的 IP 为 10.0.0.1,我会编辑/etc/sysconfig/network
以添加:
GATEWAY=10.0.0.1