Назад | Перейти на главную страницу

KVM: весь сетевой трафик к одному гостю (межсетевой экран)

В настоящее время я использую сервер VMWare ESXi 5.5 для виртуализации. Настройка сети такая:

Брандмауэр PFSense является центром всего и подключен к: сети LAN (физическая сетевая карта 1, назначенная VMWare) сеть DMZ (физическая сетевая карта не назначена VMWare) WAN (физическая сетевая карта 2, назначенная только межсетевому экрану VMWare)

Хост является членом сети LAN. В сети DMZ и LAN есть несколько серверов, которые основаны на Linux, так что в целом ничего особенного.

В моем сценарии брандмауэр заботится обо всем трафике, а физическая сетевая карта 2 доступна исключительно брандмауэру (а не хосту). Таким образом, брандмауэр может получить общедоступный IP-адрес, назначенный моим интернет-провайдером через DHCP (провайдер кабельного телевидения).

Наконец, теперь я могу с помощью своего клиента, который является членом сети LAN, конечно же, получить доступ ко всем серверам, которые мне нужны и которые мне нужны, и которые я управлял определенными правилами брандмауэра в PFSense. Пока все персиковое.

Итак, мой вопрос теперь заключается в том, как мне реализовать этот сценарий в KVM и сделать хост KVM (который, вероятно, будет сервером Ubuntu 13.10 или 14.04 или основанным на Debian) связанным с сетью «тупым» хостом, и пусть брандмауэр будет ямой для всех сетевой трафик.

Я немного поэкспериментировал на своем ноутбуке с KVM и установкой гостя (на базе Ubuntu server 13.10), но у него была только одна физическая сетевая карта, и я не хотел тянуть за интернет-кабель для этого теста. :)

Так что вся помощь, предложения и идеи о том, как выполнить эту настройку, приветствуются. Если информации недостаточно, дайте мне знать, и я постараюсь соответствующим образом обновить этот пост, но я надеюсь, что общее представление о том, что я хочу сделать, стало ясным во время этого поста.

VJ

P.S .: Для лучшего понимания вот фото моего текущего Настройка сети VMWare.

Просто. Предположим:

WAN -> eth0

LAN -> eth1

Что вам нужно сделать, так это создать мост (назовем его br_wan) с устройством eth0 и оставить его без IP-адреса, настроенного на хосте (у хоста не будет IP-адреса для br_wan).

Теперь создайте еще один мост (назовем его br_lan) с устройством eth1 и позвольте хосту взять свой IP-адрес с этого моста через DHCP (при условии, что PFSense является здесь DHCP-сервером).

Для виртуальной машины PFSense вы дадите ей br_wan и br_lan в качестве устройств Ethernet (используйте 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

Насколько я понимаю, вам нужна почти такая же настройка, как и у меня, поэтому я постараюсь ее описать:

Мой KVM-сервер с двумя сетевыми адаптерами работает под управлением Ubuntu 13.10 Server с KVM + Libvirt. Одна сетевая карта служит мостом в локальной сети, а другая передается напрямую от провайдера к виртуальному межсетевому экрану (под управлением Vyatta).

Мой интернет-провайдер назначает IP-адреса с DHCP, привязанными к MAC-адресу. Виртуальный брандмауэр обрабатывает вызовы DHCP-клиента к Интернет-провайдеру, поэтому IP-адрес назначается непосредственно ему. На сервере / хосте KVM мне пришлось установить статический локальный адрес на ISP, обращенном к сетевой карте, чтобы он не выполнял вызовы DHCP-клиентов (поскольку мой интернет-провайдер будет арендовать только один IP-адрес)

Это / etc / network / interfaces на хосте (eth0 подключен к коммутатору LAN, eth1 напрямую к / от провайдера):

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 / мост, а eth0 - это ISP, обращающийся к подключению с eth1 на хосте):

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 {
    }
}

Таким образом, я получаю DHCP-адрес от своего провайдера напрямую на виртуальный брандмауэр, а маршрутизация на хосте проходит через виртуальный брандмауэр, как я хочу.

Надеюсь это поможет :-)