Установите pfSense через KVM в Ubuntu 18.04 с помощью netplan

967
user3158437

Я пытаюсь настроить виртуальный межсетевой экран для моей домашней сети. Архитектура выглядит так: Интернет -> виртуализированный 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
user3158437

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

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.