¿Cómo configurar pfSense/OPNSense en un host virtual?

¿Cómo configurar pfSense/OPNSense en un host virtual?

Estoy un poco confundido sobre cómo alojar un *Sense Box como una máquina virtual y hacer que proporcione enrutamiento para el host.

Internet -> Modem/Router (bridge mode) -> en1 on Dell r710 -> OPNSense in a VM

Then also:
OPNSense in a VM -> en2 -> 12-port switch

Por ejemplo, ¿para qué configuro las interfaces de red en la máquina virtual y cómo defino OPNSense para que tenga 10.0.2.1 como su IP y sea el enrutador principal (dhcp, etc.) para que OPNSense pueda proporcionar enrutamiento para cualquier dispositivo que conecte? (a través de un conmutador que tengo) y también el host en el que se ejecuta la VM.

Mis máquinas virtuales se ejecutan en KVM con Wok/Kimchi en Ubuntu 16.04.5.

Respuesta1

Desafortunadamente, la pregunta es demasiado imprecisa y no tengo la reputación para hacer más preguntas. Hace unos días configuré OPNSense en un entorno virtual, así que espero poder dejar algunas pistas aquí. No pretendo que esta sea una buena solución, pero funciona para mí. En este escenario tengo un servidor dedicado y una subred IP pública /29. Todo el tráfico de otras máquinas virtuales se enruta a través de OPNSense-VM. El tráfico de la máquina host no se puede enviar a través de la máquina virtual.

Para la administración de las redes y máquinas virtuales que uso.WebvirtNube pero también es posible hacer todo manualmente.

  1. Cree interfaces de red virtuales para cada una de sus IP públicas.

    /etc/network/interfaces
    
    auto eth0
    iface eth0 inet static
            address 103.x.x.104      #Dedicated server IP address
            netmask 255.255.255.255
            gateway 103.x.x.65
            pointopoint 103.x.x.65   #IP of the switch in the data center
    
    auto eth0:0
    iface eth0:0 inet static
    address 103.xx.77.136             #First IP from the public subnet
    netmask 255.255.255.255
    
    auto eth0:1
    iface eth0:1 inet static
    address 103.xx.77.137
    netmask 255.255.255.255
    

    [...]

  2. Utilice libvirt para crear las redes como se describeaquí: (o use WebvirtCloud) Necesita al menos dos puentes, uno para LAN y otro para WAN.

En este punto deberías tener una red llamada LAN (Dispositivo: virbr1)(Red: 192.168.100.0/24) y otra llamada WAN (Dispositivo: virbr0) (Red: 192.168.77.0/24)

  1. Cree la configuración de su máquina OPNSense. Esta es la parte importante:
<interface type='network'>
      <mac address='00:52:66:d7:7e:65'/>
      <source network='WAN' bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='network'>
      <mac address='00:c0:41:50:f9:0b'/>
      <source network='lan' bridge='virbr1'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
      <alias name='net1'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x05' function='0x0'/>
    </interface>
    <interface type='network'>
      <mac address='00:98:c3:b1:b6:b8'/>
      <source network='lan' bridge='virbr1'/>
      <target dev='vnet2'/>
      <model type='virtio'/>
      <alias name='net2'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </interface>
  1. Inicie OPNSense, asigne interfaces de acuerdo con la configuración de su máquina y configure las direcciones IP de las interfaces a través del terminal. He seleccionado 192.168.77.2 para mi dirección IP WAN OPNSense. La puerta de enlace ascendente de WAN está configurada en 192.168.77.1.

También creé LAN separadas para cada una de mis IP públicas en OPNSense.

LAN136 IP-Address: 192.168.100.136/24 
LAN137 IP-Address: 192.168.100.137/32
No upstream Gateways.

[...]

  1. Reglas NAT POST y PREROUTING en la máquina host
iptables -t nat -A POSTROUTING -s 192.168.77.2 -j SNAT --to-source 103.x.x.104
iptables -t nat -A POSTROUTING -s 192.168.77.136 -j SNAT --to-source 103.xx.77.136
iptables -t nat -A POSTROUTING -s 192.168.77.137 -j SNAT --to-source 103.xx.77.137

iptables -t nat -A PREROUTING -p tcp --dport 10:65530 -d 103.xx.77.136 -j DNAT --to 192.168.77.136
iptables -t nat -A PREROUTING -p udp --dport 10:65530 -d 103.xx.77.136 -j DNAT --to 192.168.77.136

iptables -t nat -A PREROUTING -p tcp --dport 10:65530 -d 103.xx.77.137 -j DNAT --to 192.168.77.137
iptables -t nat -A PREROUTING -p udp --dport 10:65530 -d 103.xx.77.137 -j DNAT --to 192.168.77.137

Después de este paso, debería poder abrir OPNSense desde su navegador web. Para hacerlo necesita una máquina virtual que ya sea parte de la LAN. Recomiendo usar un CD en vivo como grml o Ubuntu. En este caso, se puede acceder a OPNSense a través dehttp://192.168.100.136

  1. OPNSense (navegador web): cree IP virtuales en la interfaz WAN
Virtual IP-address    Interface           TYPE
192.168.77.136/32         WAN          IP Alias
192.168.77.137/32         WAN          IP Alias

[...]

  1. Reglas NAT en OPNSense (navegador web) Cree sus reglas de reenvío de puertos y salidas

ejemplo de reenvío de puertos:

Interface Proto   S-address S-port    D-address       D-port       NAT-Ip         Nat-Port
WAN           TCP     *           *       192.168.77.137  80 (HTTP)   192.168.100.101 80 (HTTP)

ejemplo de reglas salientes:

El modo debe configurarse en manual.

Interface     Source                S-port    Dest.    D-port       NAT-IP        Port   static?
WAN               192.168.100.100/32      *        *        *         192.168.77.136  *       no

Asegúrese de que todas sus IP públicas tengan reglas de salida y una IP NAT única.

Respuesta2

Santa mierda... ¡Esto es complejo! He estado buscando reemplazar mi configuración OPNsense ejecutada en miniPC dedicada con una máquina virtual en mi servidor TrueNAS (ahora Scale, pero he ejecutado Core durante muchos años), y me preguntaba... ¿existe una forma más sencilla de ¿Hacer que todo funcione? Todo lo que quiero es que literalmente ejecute mi red y que la VM pueda comunicarse a través de WAN y LAN (dentro y fuera de la VM, por supuesto...). Soy muy consciente de que si reinicio mi servidor TrueNAS (es principalmente mi Plex Media Server), mi conexión a Internet se cortará, etc. También soy muy consciente de que no es ideal en la mayoría de las situaciones hacer esto, pero Quieres probarlo. Lo que más me gusta son las huellas más pequeñas, y si puedo deshacerme de una computadora que se ejecuta en mi red y en mi habitación, sería fantástico.

Ahora, ¿qué he podido hacer hasta ahora? Solo he podido hacer que mi máquina virtual OPNsense vea una conexión WAN, y también puedo acceder a su interfaz de usuario web... a veces...

Se agradecería cualquier ayuda si alguien ve esto en 2023... jajaja. No hay prisa, pero quiero hacerlo porque es interesante.

Gracias, Shiggitay.

información relacionada