KVM:所有网络流量都流向一个客户机(防火墙)

KVM:所有网络流量都流向一个客户机(防火墙)

我目前正在使用 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 地址到虚拟防火墙,并且主机上的路由可以按照我的意愿穿过虚拟防火墙。

希望这可以帮助 :-)

相关内容