我目前正在使用 VMWare ESXi 5.5 服务器进行虚拟化。网络设置如下:
PFSense 防火墙是一切的中心,并连接到:LAN 网络(VMWare 分配的物理 NIC 1)DMZ 网络(VMWare 未分配物理 NIC)WAN(VMWare 仅分配给防火墙的物理 NIC 2)
主机是 LAN 网络的成员。DMZ 和 LAN 网络中有几台服务器,它们都是基于 Linux 的,所以总的来说没什么特别的。
在我的场景中,防火墙负责处理所有流量,物理 NIC 2 仅供防火墙(而非主机)使用。这样,防火墙就能够通过 DHCP(有线提供商)获取我的互联网提供商分配的公共 IP 地址。
最后,我现在可以从我的客户端(当然是 LAN 网络的成员)访问我想要和需要的所有服务器,这些服务器由 PFSense 上的特定防火墙规则管理。到目前为止一切都很顺利。
所以我现在的问题是如何在 KVM 中实现这种场景,并使 KVM 主机(可能是 Ubuntu 服务器 13.10 或 14.04 或基于 Debian 的服务器)成为与网络相关的“哑”主机,并让防火墙成为所有网络流量的深渊。
我已经在我的笔记本电脑上使用 KVM 进行了一些实验并安装了客户端(基于 Ubuntu 服务器 13.10),但它只有一个物理网卡,而且我不想为这次测试拔掉网线。:)
因此,非常感谢所有关于如何完成此设置的帮助、建议和想法。如果缺少信息,请告诉我,我会尝试相应地更新此帖子,但我希望在这篇文章中我想要做的事情的总体思路已经变得清晰。
VJ
PS:为了更好地理解,这里有一张我目前的照片VMWare 网络设置。
答案1
很简单。我们假设:
广域网 -> eth0
局域网 -> eth1
您要做的是创建一个带有设备 eth0 的网桥(我们将其命名为 br_wan),并且主机上不配置任何 IP(主机将没有为 br_wan 设置 IP)。
现在使用设备 eth1 创建另一个桥接器(我们称之为 br_lan),并让主机通过 DHCP 从该桥接器获取其 IP(假设 PFSense 是这里的 dhcp 服务器)。
对于 PFSense VM,您将为其提供 br_wan 和 br_lan 作为以太网设备(使用 virtio 以获得更好的性能)。PFSense 最有可能将它们视为 eth0 和 eth1。
一些配置基础知识,尚未测试过,但您需要做的就是在 /etc/network/interfaces 中设置正确的配置,下面的几行来自我的记忆,未经测试但应该几乎正确:
====== 主机上的 /etc/network/interfaces ======
auto br_wan
iface br_wan inet static
address 0.0.0.0
bridge_ports eth0
auto br_lan
iface br_lan inet dhcp
bridge_ports eth1
答案2
据我了解,您想要的设置与我几乎相同,因此我将尝试描述它:
我的 KVM 服务器有 2 个 NIC,运行带有 KVM+Libvirt 的 Ubuntu 13.10 Server。一个 NIC 用作 LAN 上的桥接器,另一个 NIC 直接从 ISP 传递到虚拟防火墙(运行 Vyatta)。
我的 ISP 分配 IP,DHCP 绑定到 MAC 地址。虚拟防火墙处理 ISP 的 DHCP 客户端调用,因此 IP 直接分配给它。在 KVM 服务器/主机上,我必须在面向 ISP 的 NIC 上设置一个静态本地地址,以阻止它进行 DHCP 客户端调用(因为我的 ISP 只会租用一个 IP)
这是主机上的 /etc/network/interfaces (eth0 连接到 LAN 交换机,eth1 直接连接到/来自 ISP):
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
network 10.0.0.0
broadcast 10.0.0.255
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
dns-nameservers 10.0.0.4
dns-search lan
auto eth1
iface eth1 inet static
address 10.0.99.1
netmask 255.255.255.252
这是虚拟机的接口配置:
<interface type='direct'>
<mac address='52:54:00:b6:58:85'/>
<source dev='eth1' mode='vepa'/>
<target dev='macvtap0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<mac address='52:54:00:88:94:6e'/>
<source bridge='br0'/>
<target dev='vnet1'/>
<model type='virtio'/>
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>
Vyatta 接口配置如下所示(eth1 连接至 LAN/bridge,eth0 是来自主机上 eth1 的面向 ISP 的连接):
interfaces {
ethernet eth0 {
address dhcp
duplex auto
firewall {
in {
name wan2lan
}
local {
name wan2gw
}
}
hw-id 52:54:00:b6:58:85
smp_affinity auto
speed auto
}
ethernet eth1 {
address 10.0.0.1/24
duplex auto
hw-id 52:54:00:88:94:6e
smp_affinity auto
speed auto
}
loopback lo {
}
}
这样,我就可以从 ISP 直接获取 DHCP 地址到虚拟防火墙,并且主机上的路由可以按照我的意愿穿过虚拟防火墙。
希望这可以帮助 :-)