Я немного не понимаю, как разместить *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 но также можно все сделать вручную.
Создайте виртуальные сетевые интерфейсы для каждого из ваших публичных 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
[...]
Используйте libvirt для создания сетей, как описаноздесь: (или используйте WebvirtCloud) Вам понадобится как минимум два моста: один для локальной сети, другой для глобальной сети.
На этом этапе у вас должна быть одна сеть под названием LAN (Устройство: virbr1) (Сеть: 192.168.100.0/24) и еще одна под названием WAN (Устройство: virbr0) (Сеть: 192.168.77.0/24)
- Создайте конфигурацию машины 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>
- Запустите 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.
[...]
- Правила 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
- OPNSense (веб-браузер) — создание виртуальных IP-адресов на интерфейсе WAN
Virtual IP-address Interface TYPE 192.168.77.136/32 WAN IP Alias 192.168.77.137/32 WAN IP Alias
[...]
- Правила 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 году... лол. Спешки нет, но мне хочется это сделать, потому что это интересно.
Спасибо, Шиггитай