Как настроить pfSense/OPNSense на виртуальном хосте?

Как настроить pfSense/OPNSense на виртуальном хосте?

Я немного не понимаю, как разместить *Sense box в качестве виртуальной машины и как заставить ее обеспечивать маршрутизацию для хоста.

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

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

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

Мои виртуальные машины работают на KVM с Wok/Kimchi на Ubuntu 16.04.5.

решение1

К сожалению, вопрос немного неточен, и у меня нет репутации задавать дополнительные вопросы. Несколько дней назад я настроил OPNSense в виртуальной среде, так что, надеюсь, смогу оставить здесь несколько подсказок. Я не утверждаю, что это хорошее решение, но оно работает для меня. В этом сценарии у меня есть выделенный сервер и публичная IP-подсеть /29. Весь трафик с других виртуальных машин направляется через OPNSense-VM. Трафик хост-машины не может быть отправлен через виртуальную машину.

Для администрирования сетей и виртуальных машин я используюWebvirtCloud но также можно все сделать вручную.

  1. Создайте виртуальные сетевые интерфейсы для каждого из ваших публичных IP-адресов.

    /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. Используйте libvirt для создания сетей, как описаноздесь: (или используйте WebvirtCloud) Вам понадобится как минимум два моста: один для локальной сети, другой для глобальной сети.

На этом этапе у вас должна быть одна сеть под названием LAN (Устройство: virbr1) (Сеть: 192.168.100.0/24) и еще одна под названием WAN (Устройство: virbr0) (Сеть: 192.168.77.0/24)

  1. Создайте конфигурацию машины OPNSense. Это важная часть:
<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. Запустите OPNSense, назначьте интерфейсы в соответствии с конфигурацией вашего компьютера и установите IP-адреса интерфейсов через терминал. Я выбрал 192.168.77.2 для своего WAN IP-адреса OPNSense. WAN upstream gateway установлен на 192.168.77.1.

Я также создал отдельные локальные сети для каждого из моих публичных IP-адресов в OPNSense.

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

[...]

  1. Правила NAT POST- и PREROUTING на хост-машине
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

После этого шага вы сможете открыть OPNSense из вашего веб-браузера. Для этого вам понадобится виртуальная машина, которая уже является частью локальной сети. Я рекомендую использовать live CD, например grml или Ubuntu. В этом случае OPNSense можно открыть черезhttp://192.168.100.136

  1. OPNSense (веб-браузер) — создание виртуальных IP-адресов на интерфейсе WAN
Virtual IP-address    Interface           TYPE
192.168.77.136/32         WAN          IP Alias
192.168.77.137/32         WAN          IP Alias

[...]

  1. Правила NAT в OPNSense (веб-браузер) Создайте правила переадресации портов и исходящего трафика

пример переадресации портов:

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)

пример исходящих правил:

режим должен быть установлен на ручной

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

Убедитесь, что все ваши публичные IP-адреса имеют исходящие правила и уникальный IP-адрес NAT.

решение2

Черт возьми... Это так сложно! Я хотел заменить свою выделенную настройку OPNsense на miniPC на виртуальную машину на моем сервере TrueNAS (сейчас Scale, но я много лет использую Core), и мне было интересно... есть ли более простой способ заставить все это работать? Все, что я хочу, это чтобы она буквально управляла моей сетью и чтобы виртуальная машина могла общаться через WAN и LAN (внутри и снаружи виртуальной машины, конечно...). Я прекрасно понимаю, что если я перезагружу свой сервер TrueNAS (это в первую очередь мой Plex Media Server), мое интернет-соединение прервется и т. д. Я также прекрасно понимаю, что в большинстве ситуаций это не идеальный вариант, но я хочу попробовать. Я за меньшие размеры, и если я смогу избавиться от компьютера, работающего в моей сети и в моей комнате, это будет здорово.

А что мне удалось сделать на данный момент? Мне удалось только заставить свою виртуальную машину OPNsense увидеть WAN-соединение, а также войти в ее веб-интерфейс... иногда...

Буду признателен за любую помощь, если кто-то увидит это в 2023 году... лол. Спешки нет, но мне хочется это сделать, потому что это интересно.

Спасибо, Шиггитай

Связанный контент