我想使用真实网络接口名称(如 eth1)创建一个 Linux 虚拟网络接口(通常标记为 eth0:0)。
换句话说,我可以让 eth0 和 eth1 具有不同的 IP 地址但使用相同的物理网络接口吗?
有可能吗?怎样做?
我有一个旧式应用程序,它需要两个物理网络接口(eth0 和 eth1),我想将其安装在只有一个物理网络接口的平台上。
答案1
您所描述的不是虚拟接口,那些只是一种方式(传统方式,现在您使用IP 地址来自 iproute)将多个 ip 地址分配给单个接口。从技术上讲,eth0:0
只是eth0
。
答案2
一个解决方案是在你的主机上安装 XEN(或 QEmu,或其他虚拟化工具),并设置一个具有两个网络接口的虚拟机。然后在这个虚拟机上安装你的软件。
另一个选项是在 eth0 上设置 2 个 VLAN。假设您决定使用 VLAN 100 和 101,那么您可以将旧版软件设置为使用 eth0.100 和 eth0.101。请注意,您的流量在退出主机时将被标记 (802.1q),这可能不是您想要的。如果您的主机连接到路由器,它可以取消标记数据包以进行正确的路由。
如果您不关心应用程序所需的某个网络接口(例如,假设它需要它发送您不关心的日志数据),那么只需创建 1 个 VLAN(例如 eth0.100)并将您的软件指向 eth0(实际有用的流量,未标记)和 eth0.100(已标记并忽略)。
如果你的应用程序只需要多个本地 IP 地址,那么只需创建别名,例如:
ifconfig eth0:0 192.168.99.5 netmask 255.255.255.0
如果您能告诉我们您到底想做什么,那将会更好。
答案3
创建 NIC 别名时,必须使用别名语法。ethN 名称不能用于别名。您必须遵循 ethN:M 方案。
我曾使用 NIC 别名来为在同一台机器上运行的服务使用不同的 IP(即使在不可路由范围内),但这只是一种用例。通常,它为服务的部署增加了很大的灵活性。对于 Red Hat 系统,我推荐这个虚拟网卡使用方法,其中描述了如何使更改在这些系统上永久生效。
答案4
设置具有两个虚拟网卡的虚拟机,并将两者连接到同一个 VLAN。