-1

此设置应基于 proxmox,位于托管在 Proxmox 本身上的 opnsense VM 后面,该 VM 将保护 proxmox,为 VM 提供防火墙、私有 LAN 和 DHCP/DNS,并提供到 LAN 的 IPsec 连接以访问所有 VM /Proxmox 未经过 NAT。该服务器是典型的 Hetzner 服务器,因此仅在 NIC 上,但此 NIC 上有多个 IP 或/子网。

  1. 带 1 个 NIC(eth0) 的 Proxmox 服务器
  2. 3个公共1IP,IP2/3由数据中心的MAC路由(到eth0)
  3. eth0 通过 PCI 直通到 OPNsense KVM
  4. vmbr30、10.1.7.0/24 上的专用网络
  5. IPsec 移动客户端连接 (172.16.0.0/24) 到 LAN

为了更好地概述设置,我创建了这个 [绘图] [1]:(不确定它是否完美,告诉我要改进的地方)

问题:

如何使用 PCI-Passthrough 而不是桥接模式来设置这样的场景。

跟进

I) Why i cannot access PROXMOX.2 but access VMEXT.11 (ARP?)

II) 这就是为什么我需要一个从 * 到 * IPSEC 链规则来运行 ipsec。这很可能是一个非常荒谬的问题。

III) I tried to handle the 2 additional external IPs by adding virtual ips in OPNsense, adding a 1:1 nat to the internal LAN ip and opening the firewall for the ports needed ( for each private lan IP ) - but yet i could not get it running. The question is, should each private IP have a seperate MAC or not? What is specifically needed to get a multi-ip setup on WAN

4

1 回答 1

5

一般高层观点

在此处输入图像描述

添加 pci 直通

有点超出范围,但你需要的是

  • proxmox 主机的串行控制台/LARA。
  • 从 opnsense(在我的情况下为 vmbr30)到 proxmox 私有(10.1.7.2)的有效 LAN 连接,反之亦然。当您只有 tty 控制台并且需要重新配置 opnsense 接口以添加em0为新的 WAN 设备时,您将需要它
  • 您之前可能有一个有效的 IPsec 连接,或者在直通之后打开了 WAN ssh/gui 以进一步配置 opnsense

一般来说,它的本指南- 简而言之

vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

update-grub

vi /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

然后重新启动并确保您有一个 iommu 表

find /sys/kernel/iommu_groups/ -type l
  /sys/kernel/iommu_groups/0/devices/0000:00:00.0
  /sys/kernel/iommu_groups/1/devices/0000:00:01.0

现在找到你的网卡

lspci -nn

就我而言

00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31)

执行此命令后,您将 eth0 从 proxmox 中分离出来并失去网络连接。确保你有一个 tty!请用您的 pci 插槽替换"8086 15b7"和(见上文)00:1f.6

echo "8086 15b7" > /sys/bus/pci/drivers/pci-stub/new_id && echo 0000:00:1f.6 > /sys/bus/pci/devices/0000:00:1f.6/driver/unbind && echo 0000:00:1f.6 > /sys/bus/pci/drivers/pci-stub/bind

现在编辑您的虚拟机并添加 PCI 网卡:

vim /etc/pve/qemu-server/100.conf

并添加(替换 00:1f.6)

machine: q35
hostpci0: 00:1f.6

使用从您的 tty proxmox 主机启动 opnsense 连接ssh root@10.1.7.1,编辑接口,将 em0 添加为您的 WAN 接口并将其设置为 DHCP - 重新启动您的 opnsense 实例,它应该会再次启动。

将串行控制台添加到您的 opnsense

如果您需要快速灾难恢复或您的 opnsense 实例出现故障,基于 CLI 的串行非常方便,特别是如果您使用 LARA/iLO 进行连接。

做这件事,添加

vim /etc/pve/qemu-server/100.conf

并添加

serial0: socket

现在在你的 opnsense 实例中

vim /conf/config.xml

并添加/更改此

<secondaryconsole>serial</secondaryconsole>
<serialspeed>9600</serialspeed>

确保用 9600 替换当前的串行速度。不要重新启动您的 opnsense vm,然后

qm terminal 100

再次按 Enter,您应该会看到登录提示

提示:您还可以将主控制台设置为串行,帮助您进入引导提示等并进行调试。

更多关于这在https://pve.proxmox.com/wiki/Serial_Terminal

Proxmox 上的网络接口

auto vmbr30
iface vmbr30 inet static
    address  10.1.7.2
    address  10.1.7.1
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    pre-up sleep 2
    metric 1

OPNsense

  1. WAN 是 External-IP1,附加 em0(eth0 pci-passthrough),DHCP
  2. LAN 为 10.1.7.1,连接到 vmbr30

多 IP 设置

然而,我只介绍 ExtraIP 部分,而不是额外的子网部分。为了能够使用额外的 IP,您必须为机器人中的每个 ip 禁用单独的 MAC - 所以所有额外的 IP 都具有相同的 MAC ( IP1,IP2,IP3 )

然后,在 OPN 中,对于每个外部 IP,您在 Firewall-VirtualIPs 中添加一个虚拟 IP(对于每个额外 IP,而不是您将 WAN 绑定到的主 IP)。给每个虚拟 IP 一个好的描述,因为它稍后会在选择框中。

现在您可以为每个端口转到防火墙-> NAT-> 转发

  • 目的地:您要转发的 ExtIP (IP2/IP3)
  • 目标端口响:您要转发的端口,例如 ssh
  • 重定向目标 IP:您要映射的 LAN 虚拟机/IP,例如 10.1.7.52
  • 设置重定向端口,如 ssh

现在您有两个选择,第一个被认为更好,但可能需要更多维护。

对于您访问 IP2/IP3 服务的每个域,您应该在实际私有 IP 上定义本地 DNS“覆盖”映射。这将确保您可以从内部与您的服务进行通信,并避免您之前使用 NAT 时遇到的问题。

否则你需要关心 NAT 反射——否则你的 LAN 盒子将无法访问外部 IP2/IP3,这至少会导致 Web 应用程序出现问题。执行此设置并激活出站规则和 NAT 反射:

在此处输入图像描述

什么工作:

  • OPN 可以路由 a] 5 ] 5访问互联网并在 WAN 上拥有正确的 IP
  • OPN 可以访问局域网中的任何客户端(VMPRIV.151 和 VMEXT.11 和 PROXMOX.2)
  • 我可以将 IPSec 移动客户端连接到 OPNsense,提供从虚拟 IP 范围 172.16.0.0/24 访问 LAN (10.1.7.0/24)
  • 我可以在与 IPsec 连接时访问 10.1.7.1 ( opnsense )
  • 我可以使用 IPsec 客户端访问 VMEXT
  • 我可以将端口或 1:1NAT 从额外的 IP2/IP3 转发到特定的私有虚拟机

底线

这种设置比我描述的桥接模式的替代方案好得多。不再有异步路由,proxmox 上不需要岸墙,proxmox 上不需要复杂的网桥设置,而且它的性能要好得多,因为我们可以再次使用校验和卸载。

缺点

灾难恢复

对于灾难恢复,您需要更多技能和工具。您需要 proxmox hv 的 LARA/iPO 串行控制台(因为您没有互联网连接),并且您需要配置您的 opnsense 实例以允许此处提到的串行控制台,这样您就可以在没有 VNC 连接的情况下访问 opnsense现在还有 SSH 连接(甚至来自本地 LAN,因为网络可能被破坏)。它工作得相当好,但它需要训练一次才能与替代品一样快

据我所知,此设置无法在集群 proxmox 环境中使用。您最初可以设置一个集群,我通过使用单独的集群网络在 proxmox hv 上本地使用 tinc-switch 设置来完成. 第一个设置很容易,没有中断。第二次加入需要已经进入 LARA/iPO 模式,因为您需要关闭并删除用于加入的 VM(因此网关将关闭)。您可以通过临时使用 eth0 NIC 上网来做到这一点。但是在您加入后,再次移动您的虚拟机,您将无法启动虚拟机(因此网关不会启动)。您无法启动 VMS,因为您没有仲裁 - 而且您没有仲裁,因为您没有互联网可以加入集群。所以最后一个鸡蛋问题我看不到被克服。如果这应该被处理,那么实际上只有一个 KVM 不是 proxmox VM 的一部分,而是独立的 qemu - 我现在不需要。

于 2017-05-24T06:35:32.690 回答