Installieren Sie pfSense über KVM in Ubuntu 18.04 mit Netplan

653
user3158437

Ich versuche, eine virtualisierte Firewall für mein Heimnetzwerk einzurichten. Architektur sieht so aus: Internet -> virtualisiert pfSense -> LAN. Es gibt viele Beispiele dafür, wie Sie dies mit dem alten Netzwerkkonfigurator tun können, aber keine Beispiele für die Verwendung von netplan, dem Netzwerkmanager von Ubuntu 18.04.

Ich habe zwei NIC-Karten auf dem Host und die neu installierte Ubuntu 18.04 Server Edition.

Hier ist der Inhalt der Datei /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] 

Beachten Sie, dass ich glaube, dass ich der LAN-Bridge eine statische IP zugewiesen haben muss, und ich möchte, dass der virtualisierte pfSense eine DHCP-Adresse vom ISP anfordert. Daher habe ich der WAN-Bridge eine Wegwerf-IP zugewiesen und absichtlich nicht zugewiesen ein Gateway oder Nameserver für die WAN-Bridge. (Wir freuen uns, dass Sie in dieser Netplan-Konfiguration korrigiert werden, wenn dies falsch ist.)

Ich dachte, ich müsste eine zweite virtuelle Brücke erstellen, also habe ich das auch getan. Ich zeige sowohl den Standard (alias das LAN) als auch den von mir erstellten 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> 

Beide zeigen sich in der virsh net-list gut

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

Ich sehe auch beides in 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 

Wenn Sie ifconfig nach all dem ausführen, führt dies zu:

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 

Aber als ich pfSense mit dieser Befehlszeichenfolge installieren konnte:

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 

Die Installation läuft gut, aber pfsense sieht nur eine Schnittstelle, die vom Standardnetzwerk bereitgestellt wird, nämlich meine LAN-Schnittstelle / Bridge.

1

1 Antwort auf die Frage

0
user3158437

Nachdem ich alle Fragen eingetippt hatte, stellte ich fest, dass das Problem darin bestand, dass die VM nicht so konfiguriert war, dass sie eine andere Schnittstelle "sieht". Um das Problem zu beheben, habe ich Folgendes getan:

sudo virsh dumpxml pfsense > 20181201-pfsense.txt 

Das gibt natürlich die vollständige XML-Definition meiner VM. Ich habe dann den vorhandenen Schnittstelleneintrag kopiert:

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

und kopierte es, um eine neue Schnittstelle zu erstellen, indem Sie diesen Befehl ausführen: sudo virsh edit pfsense

und fügen Sie diese Zeilen hinzu: (Beachten Sie, dass ich die MAC-Adresse um ein Bit geändert und die virtuelle NIC dem Steckplatz 0x06 zugewiesen hat.)

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

Dann musste ich lediglich die pfsense VM starten und meine Schnittstellen WAN und LAN zuweisen. WAN hat ein DHCP vom ISP bezogen und ich habe eine statische IP-Adresse für die LAN-Schnittstelle festgelegt.

Am Ende glaube ich, die drei wichtigsten Schritte auf dem Hypervisor / Host waren:

  1. Richten Sie in netplan zwei Bridges ein, eine für jede NIC-Karte, und weisen Sie den Bridges die IP-Adressen zu, nicht den physischen NIC-Karten.
  2. Erstellen Sie ein neues virtuelles Netzwerk mit virsh net-define und nicht virsh net-create. (Ersteres macht es hartnäckig)
  3. Fügen Sie der XML-Definition der VM die zweite Schnittstelle hinzu und verweisen Sie auf die WAN-Bridge.