如何在虚拟主机上设置 pfSense/OPNSense?

如何在虚拟主机上设置 pfSense/OPNSense?

我有点困惑如何将 *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 路由。主机的流量不能通过虚拟机发送。

为了管理网络和虚拟机,我使用虚拟云 但也可以手动完成所有操作。

  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,另一座用于 WAN。

此时您应该有一个名为 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 作为我的 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.

[...]

  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

完成此步骤后,您应该能够从 Web 浏览器打开 OPNSense。为此,您需要一个已经属于 LAN 的虚拟机。我建议使用 grml 或 Ubuntu 等实时 CD。在这种情况下,可以通过以下方式访问 OPNSensehttp://192.168.100.136

  1. OPNSense(网络浏览器)-在 WAN 接口上创建虚拟 IP
Virtual IP-address    Interface           TYPE
192.168.77.136/32         WAN          IP Alias
192.168.77.137/32         WAN          IP Alias

[...]

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

相关内容