我配置了一个 CentOS 6.5 虚拟服务器并将其部署到远程 VMware vSphere 环境。我们需要两个 IP 地址,因此我添加了一个虚拟 NIC 并在 eth1 上分配了第二个 IP。
我没有在操作系统中配置源路由或其他东西,但它似乎可以正常工作。所以我们在没有它的情况下投入生产。几个月后,我们进行了维护并重新启动了虚拟服务器。
重启后,我们无法访问分配给 eth1 的 IP。它仍然可以从同一子网上的其他计算机访问,但不能从外部访问。我们无法解决这个问题,但第二天它又可以访问了,尽管我什么也没做。
我的问题
- 出现这种情况是因为我没有在操作系统上配置路由吗?
- 所有流量都经过 eth0 没关系,但我仍然需要配置路由表吗?
- 我知道我可以配置一个具有两个 IP 的 NIC(使用别名设备 eth0:1)。
- 这是更好的解决方案吗?
- 使用这种方法我还需要配置静态路由吗?
- 为什么我什么都没做但 eth1 却回来了?
- 该问题是否与 ARP 表有关?
- 为什么我的设置成功但有时却失败?
这里还有一些信息。
- MAC 地址被手动配置为静态,因此不会改变。
- 前面有防火墙(我们无法控制它)。
- eth0 上的 IP 始终可达。
- 我需要两个 IP 来提供 HTTPS(Apache)和 RTMPS(Wowza)。
- VMware Tools 已安装在虚拟机上。
我的配置文件。
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.94
NETMASK=255.255.255.0
GATEWAY=xxx.xxx.xxx.254
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.95
NETMASK=255.255.255.0
GATEWAY=xxx.xx.xxx.254
/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:??:??:??", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:??:??:??", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
任何建议将被认真考虑!
答案1
一些陷阱:
NIC 在启动时被“交换”,即系统认为 eth1 是 eth0,反之亦然。Google“枚举网络接口 linux”获取一些提示。之后,其他一些策略干扰(即您的内部防火墙?),并且如果来自另一个 NIC 的流量来自一个 IP,则会被阻止以防止欺骗。
某些东西改变了 vmware 网络控制面板上的设置,使得一个网卡不再支持“tcp”,而只支持 VMware 的内部协议。
不管你做什么,删除一个默认网关如果它们位于同一子网中。这毫无用处,而且可能会使系统混乱。ip
如果需要,可以使用基于流量策略设置多网关。