Eug*_*yer -1 networking ipsec proxmox opnsense
此设置应基于 proxmox,位于 Proxmox 上托管的 opnsense VM 后面,该 VM 将保护 proxmox,为 VM 提供防火墙、私有 LAN 和 DHCP/DNS,并提供到 LAN 的 IPsec 连接以访问所有 VM /Proxmox 没有经过 NAT。服务器是典型的 Hetzner 服务器,因此仅在 NIC 上,但在此 NIC 上有多个 IP 或/子网。
为了更好地概述设置,我创建了这个[绘图][1]:(不确定它是否完美,请告诉我要改进的地方)
如何使用 PCI-Passthrough 而不是桥接模式来设置这样的场景。
I) Why i cannot access PROXMOX.2 but access VMEXT.11 (ARP?)
II) 这就是为什么我需要从 * 到 * IPSEC 链式规则来运行 ipsec。这很可能是一个与 opnsense 相关的问题。
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
一般高层次观点
有点超出范围,但你需要的是
em0为新的 WAN 设备时,您将需要它一般来说,它的本指南- 简而言之
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
Run Code Online (Sandbox Code Playgroud)
然后重新启动并确保您有一个 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
Run Code Online (Sandbox Code Playgroud)
现在找到你的网卡
lspci -nn
Run Code Online (Sandbox Code Playgroud)
就我而言
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31)
Run Code Online (Sandbox Code Playgroud)
执行此命令后,您将 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
Run Code Online (Sandbox Code Playgroud)
现在编辑您的 VM 并添加 PCI 网卡:
vim /etc/pve/qemu-server/100.conf
Run Code Online (Sandbox Code Playgroud)
并添加(替换 00:1f.6)
machine: q35
hostpci0: 00:1f.6
Run Code Online (Sandbox Code Playgroud)
ssh root@10.1.7.1从您的 tty proxmox 主机启动 opnsense 连接,编辑接口,将 em0 添加为您的 WAN 接口并将其设置为 DHCP - 重新启动您的 opnsense 实例,它应该会再次启动。
如果您需要快速灾难恢复或您的 opnsense 实例被破坏,基于 CLI 的串行非常方便,特别是如果您使用 LARA/iLO 进行连接。
做这件事,添加
vim /etc/pve/qemu-server/100.conf
Run Code Online (Sandbox Code Playgroud)
并添加
serial0: socket
Run Code Online (Sandbox Code Playgroud)
现在在您的 opnsense 实例中
vim /conf/config.xml
Run Code Online (Sandbox Code Playgroud)
并添加/更改此
<secondaryconsole>serial</secondaryconsole>
<serialspeed>9600</serialspeed>
Run Code Online (Sandbox Code Playgroud)
确保用 9600 替换当前的串行速度。不要重新启动您的 opnsense 虚拟机,然后
qm terminal 100
Run Code Online (Sandbox Code Playgroud)
再次按 Enter,您应该会看到登录提示
提示:您还可以将主控制台设置为串行,帮助您进入引导提示等并进行调试。
更多关于这个在https://pve.proxmox.com/wiki/Serial_Terminal
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
Run Code Online (Sandbox Code Playgroud)
然而,我只涵盖了 ExtraIP 部分,而不是额外的子网部分。为了能够使用额外的 IP,您必须为机器人中的每个 IP 禁用单独的 MAC - 因此所有额外的 IP 都具有相同的 MAC ( IP1,IP2,IP3 )
然后,在 OPN 中,对于每个外部 IP,您在 Firewall-VirtualIPs 中添加一个虚拟 IP(对于每个额外的 IP,而不是您绑定到 WAN 的主 IP)。给每个虚拟 IP 一个很好的描述,因为它稍后会出现在选择框中。
现在您可以为每个端口转到防火墙-> NAT-> 转发
现在你有两个选择,第一个被认为更好,但可能需要更多的维护。
对于您访问 IP2/IP3 服务的每个域,您应该在实际私有 IP 上定义本地 DNS“覆盖”映射。这将确保您可以从内部通信到您的服务,并避免您之前使用 NAT 后会遇到的问题。
否则您需要关心 NAT 反射 - 否则您的 LAN 设备将无法访问外部 IP2/IP3,这至少会导致 Web 应用程序出现问题。执行此设置并激活出站规则和 NAT 反射:
这种设置比我描述的桥接模式的替代方案要好得多。不再有异步路由了,在 proxmox 上不需要海岸墙,在 proxmox 上不需要复杂的网桥设置,它的性能要好得多,因为我们可以再次使用校验和卸载。
对于灾难恢复,您需要更多的技能和工具。您需要一个 LARA/iPO 串行控制台 proxmox hv(因为您没有互联网连接)并且您需要配置您的 opnsense 实例以允许此处提到的串行控制台,因此您可以在根本没有 VNC 连接的情况下访问 opnsense现在 SSH 连接(甚至来自本地 LAN,因为网络可能会中断)。它工作得相当好,但需要训练一次才能与替代方案一样快
据我所知,此设置无法在集群 proxmox 环境中使用。您可以最初设置一个集群,我是通过使用分离集群网络在 proxmox hv 本地使用 tinc-switch 设置来完成的. 第一个设置很容易,没有中断。第二个加入需要已经进入 LARA/iPO 模式,因为您需要关闭并删除加入的虚拟机(因此网关将关闭)。您可以通过临时使用 eth0 网卡来实现互联网。但是加入后,再次移动您的VM,您将无法启动VM(因此网关将无法启动)。您无法启动 VMS,因为您没有仲裁 - 而且您没有仲裁,因为您没有互联网加入集群。所以最后一个鸡蛋问题我看不到被克服。如果应该处理这个问题,实际上只能通过 KVM 不是 proxmox VM 的一部分,而是独立的 qemu - 我现在不需要。