1

Я пытаюсь настроить виртуальный межсетевой экран для моей домашней сети. Архитектура выглядит так: Интернет -> виртуализированный pfSense -> локальная сеть. Существует множество примеров того, как сделать это с помощью старого сетевого конфигуратора, но нет примеров использования netplan, сетевого менеджера Ubuntu 18.04.

У меня две карты NIC на хосте и только что установленная версия сервера Ubuntu 18.04.

Вот содержимое файла /etc/netplan/50-cloud-init.yaml

username@scarif:~$ cat /etc/netplan/50-cloud-init.yaml
network:
    version: 2
    renderer: networkd
    ethernets:
        eno1:
            dhcp4: no
            dhcp6: no
        enp5s0:
            dhcp4: no
            dhcp6: no

    bridges:
        br_wan:
            interfaces: [enp5s0]
            dhcp4: no
            dhcp6: no
            addresses: [10.0.0.1/24]
        br_lan:
            interfaces: [eno1]
            dhcp4: no
            dhcp6: no
            addresses: [192.168.1.29/24]
            gateway4: 192.168.1.1
            nameservers:
              addresses: [192.168.1.1,8.8.8.8]

Обратите внимание, что мне нужно иметь статический IP-адрес, назначенный мосту LAN, и я хочу, чтобы виртуализированный pfSense запрашивал DHCP-адрес у провайдера, поэтому я назначил одноразовый IP-адрес мосту WAN и намеренно не назначил шлюз или сервер имен к мосту WAN. (Рад быть исправленным на этой конфигурации netplan, если это неправильно)

Я думал, что мне нужно создать второй виртуальный мост, поэтому я тоже это сделал. Я показываю как по умолчанию (так называемый LAN) и тот, который я создал, который я назвал wan_bridge

username@scarif:~$ sudo virsh net-dumpxml default
<network>
  <name>default</name>
  <uuid>5e5d35c8-c46a-43ed-9fc4-13dcb3853b34</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:dc:57:8f'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

username@scarif:~$ sudo virsh net-dumpxml wan_bridge
<network>
  <name>wan_bridge</name>
  <uuid>37a0163b-ae70-445d-a25f-c62cbe7d5b51</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr1' stp='on' delay='0'/>
  <mac address='52:54:00:dc:57:8d'/>
  <ip address='192.168.133.1' netmask='255.255.255.0'>
  </ip>
</network>

Оба хорошо отображаются в virsh net-list

username@scarif:~$ sudo virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 wan_bridge           active     yes           yes

Я тоже вижу как в brctl

username@scarif:~$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
br_lan          8000.aefa52b9a49b       no              eno1
br_wan          8000.22c9e0f24ba3       no              enp5s0
virbr0          8000.525400dc578f       yes             virbr0-nic
virbr1          8000.525400dc578d       yes             virbr1-nic

Запуск ifconfig после всего этого приводит к:

username@scarif:~$ ifconfig
br_lan: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.29  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::acfa:52ff:feb9:a49b  prefixlen 64  scopeid 0x20<link>
        ether ae:fa:52:b9:a4:9b  txqueuelen 1000  (Ethernet)
        RX packets 20623  bytes 3453527 (3.4 MB)
        RX errors 0  dropped 36  overruns 0  frame 0
        TX packets 4756  bytes 5192472 (5.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

br_wan: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c9:e0ff:fef2:4ba3  prefixlen 64  scopeid 0x20<link>
        ether 22:c9:e0:f2:4b:a3  txqueuelen 1000  (Ethernet)
        RX packets 13  bytes 650 (650.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26  bytes 1996 (1.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 98:90:96:be:eb:02  txqueuelen 1000  (Ethernet)
        RX packets 22673  bytes 4163339 (4.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9632  bytes 5540146 (5.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xf7d00000-f7d20000

enp5s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 68:1c:a2:12:f8:e9  txqueuelen 1000  (Ethernet)
        RX packets 849  bytes 128644 (128.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26  bytes 1996 (1.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 347  bytes 26756 (26.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 347  bytes 26756 (26.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:dc:57:8f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.133.1  netmask 255.255.255.0  broadcast 192.168.133.255
        ether 52:54:00:dc:57:8d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Но когда мне нужно установить pfSense с этой командной строкой:

sudo virt-install \
--name pfsense \
--memory 2048
--graphics vnc,listen=0.0.0.0 \
--disk /var/lib/libvirt/images/pfsense.qcow2,size=8,format=qcow2 \
--autostart \
--os-type linux\
--cdrom /home/dooguls/pfSense-CE-2.4.4-RELEASE-amd64.iso \
--debug

Установка проходит нормально, но pfsense видит только один интерфейс, предоставленный сетью по умолчанию, который является моим интерфейсом / мостом локальной сети.

1 ответ1

0

После вывода всех вопросов я понял, что проблема в том, что виртуальная машина не настроена на «просмотр» другого интерфейса. Итак, чтобы решить проблему, я сделал следующее:

sudo virsh dumpxml pfsense > 20181201-pfsense.txt

что, конечно, дает полное определение xml моей виртуальной машины. Затем я скопировал существующую запись интерфейса:

<interface type='bridge'>
    <mac address='52:54:00:3a:37:7d'/>
    <source bridge='br_lan'/>
    <model type='rtl8139'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

и скопировал его, чтобы создать новый интерфейс, выполнив следующую команду: sudo virsh edit pfsense

и добавив эти строки: (обратите внимание, что я изменил mac-адрес на один бит и назначил виртуальный ник слоту 0x06)

<interface type='bridge'>
    <mac address='52:54:00:3a:37:7e'/>
    <source bridge='br_wan'/>
    <target dev='vnet1'/>
    <model type='rtl8139'/>
    <alias name='net1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>

Затем все, что мне нужно было сделать, это запустить виртуальную машину pfsense и назначить свои интерфейсы для WAN и LAN. WAN взял DHCP у провайдера, и я установил статический IP на интерфейсе локальной сети.

Итак, в конце я думаю, что три ключевых шага на гипервизоре / хосте были:

  1. Установите два моста в netplan, по одному для каждой карты NIC, и назначьте IP-адреса мостам, а не физическим платам NIC.
  2. Создайте новую виртуальную сеть, используя virsh net-define, а не virsh net-create. (первое делает это постоянным)
  3. Добавьте второй интерфейс к определению XML виртуальной машины и направьте этот интерфейс на мост WAN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .