我有点困惑如何将 *Sense 盒作为虚拟机托管并让它为主机提供路由。
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 可以为任何我连接的设备(通过我拥有的交换机)提供路由,以及虚拟机运行的主机?
我的虚拟机在 Ubuntu 16.04.5 上使用 Wok/Kimchi 在 KVM 上运行。
答案1
不幸的是,这个问题有点太不精确了,我也没有资格进一步提问。几天前,我在虚拟环境中设置了 OPNSense,所以希望我可以在这里留下一些提示。我并不是说这是一个好的解决方案,但它对我来说是有效的。在这种情况下,我有一个专用服务器和一个 /29 公共 IP 子网。来自其他虚拟机的所有流量都通过 OPNSense-VM 路由。主机的流量不能通过虚拟机发送。
为了管理网络和虚拟机,我使用虚拟云 但也可以手动完成所有操作。
为每个公共 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,另一座用于 WAN。
此时您应该有一个名为 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 作为我的 OPNSense WAN IP 地址。WAN 上行网关设置为 192.168.77.1。
我还在 OPNSense 中为每个公共 IP 创建了单独的 LAN。
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
完成此步骤后,您应该能够从 Web 浏览器打开 OPNSense。为此,您需要一个已经属于 LAN 的虚拟机。我建议使用 grml 或 Ubuntu 等实时 CD。在这种情况下,可以通过以下方式访问 OPNSensehttp://192.168.100.136
- OPNSense(网络浏览器)-在 WAN 接口上创建虚拟 IP
Virtual IP-address Interface TYPE 192.168.77.136/32 WAN IP Alias 192.168.77.137/32 WAN IP Alias
[...]
- OPNSense(网络浏览器)中的 NAT 规则创建端口转发和传出规则
端口转发示例:
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 都有传出规则和唯一的 NAT IP。
答案2
天哪……这太复杂了!我一直在寻找用 TrueNAS 服务器上的 VM 替换专用 miniPC 运行的 OPNsense 设置的方法(现在规模化,但我已经运行 Core 很多年了),我只是想知道……有没有更简单的方法让一切正常运转?我想要的只是真正运行我的网络,并让 VM 能够通过 WAN 和 LAN 进行通信(当然是在 VM 内部和外部……)。我很清楚,如果我重新启动 TrueNAS 服务器(主要是我的 Plex Media Server),我的互联网连接就会中断等。我也很清楚,在大多数情况下这样做并不理想,但我想尝试一下。我追求更小的占用空间,如果我可以摆脱在我的网络和房间中运行的计算机,那就太棒了。
现在我到目前为止能做什么?我只能让我的 OPNsense VM 看到 WAN 连接,并且我有时能够进入它的 WebUI...
如果有人在 2023 年看到这个,我会很感激任何帮助...哈哈。不着急,但我有点想做,因为它很有趣。
谢谢,Shiggitay