1

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

由于具有PCI 直通设置的集群阻止程序,这是我的替代方案

  1. 带 1 个 NIC(eth0) 的 Proxmox 服务器
  2. 3个公共1IP,IP2/3由数据中心的MAC路由(到eth0)
  3. KVM 桥接设置( eth0 无 ip,vmbr0 桥接到 eth0 和 IP1 )
  4. vmbr30、10.1.7.0/24 上的专用 LAN
  5. proxmox 服务器上的护岸

为了更好地勾勒设置,我创建了这张:(不确定它是否完美,告诉我要改进的地方)

在此处输入图像描述

文字说明:

Proxmox 上的网络接口

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
    pre-up sleep 2

auto vmbr0
# docs at  
iface vmbr0 inet static
    address  External-IP1(148.x.y.a)
    netmask  255.255.255.192

    # Our gateway is reachable via Point-to-Point tunneling
    # put the Hetzner gateway IP address here twice
    gateway  DATACENTER-GW1
    pointopoint DATACENTER-GW1

    # Virtual bridge settings
    # this one is bridging physical eth0 interface
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    pre-up sleep 2
    bridge_maxwait 0
    metric 1

    # Add routing for up to 4 dedicated IP's we get from Hetzner
    # You need to

    # opnsense
    up route add -host External-IP2(148.x.y.b)/32 dev vmbr0
    # rancher
    up route add -host External-IP2(148.x.y.c)/32 dev vmbr0

    # Assure local routing of private IPv4 IP's from our
    # Proxmox host via our firewall's WAN port
    up ip route add 10.1.7.0/24 via External-IP2(148.x.y.b) dev vmbr0

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

Proxmox 上的护墙

接口

wan     eth0            detect          dhcp,tcpflags,nosmurfs
wan     vmbr0           detect          bridge
lan     vmbr30          detect          bridge

政策:

lan             lan             ACCEPT          -               -
fw              all             ACCEPT          -               -
all             all             REJECT          INFO               -

OPNsense

  1. WAN 是 ExternalIP2,使用 MAC-XX 连接到 vmbr0
  2. LAN 为 10.1.7.1,连接到 vmbr30

什么工作:

  • 基本设置工作正常,我可以使用 IP2 访问 opnsense,我可以在 IP1 上访问 proxmox,我可以在 ip3 上访问 rancher-VM——这不需要任何路由。
  • 我可以将 IPSec 移动客户端连接到 OPNsense,提供从虚拟 IP 范围 172.16.0.0/24 访问 LAN (10.1.7.0/24)
  • 我可以在连接 OpenVPN 时访问 10.1.7.1 ( opnsense )
  • 我可以从 OPNsense(10.1.7.1) (shell) 访问 10.1.7.11 / 10.1.7.151
  • 我可以从 othervm(10.1.7.151) (shell) 访问 10.1.7.11 / 10.1.7.1

什么不起作用:

a) 从 IPsec 客户端连接到 10.1.7.11/10.1.7.151 或 10.1.7.2

b) [在更新 1 中解决]从 10.1.7.1 连接到 10.1.7.2 (opnsense)

c) 好像我有异步路由,虽然我可以访问例如 10.1.7.1:8443,但我看到很多条目

c) 规范

d) IPSec LAN 共享将在 IPSEC 链中包含 i 规则,“从 * 到 LAN ACCEPT”——但这对我不起作用,我必须添加“从 * 到 * ACCEPT”在此处输入图像描述


问题:

I)当然我想修复a)b)c)d),可能从理解c)和d)开始

II) 在此设置中添加第二个 NIC 会有所帮助吗?

III)我在proxmox主机上激活net.ipv4.ip_forward可能是一个问题(不应该路由它吗?)

当我理顺这一点时,我很想提供一个综合指南,介绍如何在 Proxmox 上将 OPNsense 作为具有专用网络的设备运行,使用 HAproxe+LE 将一些服务传递到外部世界,并使用 IPsec 访问专用局域网

更新1:

从 proxmox 上的 vmbr0 中删除up ip route add 10.1.7.0/24 via IP2 dev vmbr0解决了 proxmox 既不能访问 10.1.7.0/24 也不能从 LAN 网络访问的问题。

更新2:

我创建了一个使用 pci-passthrough 的更新/更改设置。目标是相同的 - 它降低了复杂性 -见这里

4

1 回答 1

1

首先需要一些粗略的基础知识:

  • 有路由,即第 3 层上的 IP 和数据包。
  • 有交换,即 MAC 和 layer2 上的帧。

此外,您还谈到了 vmbr0/1/30,但您的配置中只显示了 0 和 30。Shorewall 对您的 vm 连接无关紧要(iptables 是 layer3,ebtables 将是 layer2 相比之下,但是您的框架应该只是飞过shorewall,而不是到达 HV,而是直接到达 VM。shorewall 只是使用 iptables 的前端在后台)。

顺便说一句:

通常您不需要在 proxmox BRIDGES 上进行任何路由。就您而言,网桥是一个开关。vmbr0 是您与 eth0 链接的虚拟外部网桥(因此在物理网卡和虚拟接口之间创建了内核内链接,以使数据包完全流动)。网桥也可以在没有附加 IP 的情况下运行。但是要让 HV 可访问,通常会附加一个外部 IP。否则你必须设置你的防火墙网关和一个VPN隧道,给vmbr30一个内部IP,然后你可以在建立隧道连接后从互联网访问HV的内部IP,但这只是为了说明的目的。

您的 ipsec 连接问题听起来很像配置错误的 VPN,但由于协议实现差异,移动 IPSEC 也经常让人头疼,openvpn 工作得更好,但您应该了解有关 PKI 和证书的基础知识来实现这一点。另外,如果在 openvpns 方面 opnsense 与 pfsense 一样违反直觉,那么您可能很容易在黑暗中度过一个星期。对于 pfsense,有一个可安装的 openvpn 配置导出包,它让生活变得更加轻松,不知道这个是否也可用于 opnsense。

它看起来不像您所说的异步路由,而是像您遇到的防火墙问题,关于第一张图片。对于您的隧道防火墙(接口 IPSEC 或 opnsense 上的 openvpn 接口,具体取决于您碰巧使用的隧道)只需将其保留在 ipv4 any:any 到 any:any,无论如何您都应该通过隧道的定义进入 LAN 网络本身,opnsense 会自动将数据包仅从 LAN 接口发送出去,在第二张图片上。

net.ipv4.ip_forward = 1= 在您激活它的 linux 操作系统的接口上启用内核中的路由。您可以通过 iptables 进行 NAT 处理,因此理论上可以通过在 vmbr0 上使用外部 HV IP 进入您的 LAN,但这不是您应该偶然实现的,您可能能够再次禁用转发在不丢失连接的情况下。至少对于 HV,我不确定其他外部 IP 的额外路由,但这些应该可以直接在 opnsense 内以相同的方式进行配置(在那里创建点对点链接,帧将透明地流过vmbr0 和 eth0 到 hetzner 网关)并工作,这样会更干净。

此外,您不应该让 rancher-VM 直接从外部访问,从而绕过您的防火墙,我怀疑这是您想要实现的目标。而是将外部 ip 放到 opnsense 上(作为 ip 别名类型的虚拟 ip),设置从 IP3 到 rancher-vm 的内部 ip 的 1:1 NAT,并通过 opnsense 进行防火墙。

到目前为止,从我从您的信息中可以看出的一些 ascii 艺术可能看起来应该如何,为简洁起见,仅使用接口,物理/虚拟服务器之间没有区别,也没有显示点对点链接。

[hetzner gw]
  |
  |
  |
[eth0] (everything below happens inside your server)
  ||
  || (double lines here to hint at the physical-virtual linking linux does)
  || (which is achieved by linking eth0 to vmbr0)
  ||
  || +-- HV acess to via IP1 -- shorewall/iptables for hv firewalling 
  || |
[vmbr0]                                                    [vmbr30]
 IP1                                                        | | |
  |                                                         | | |
  |                                                         | | |
[wan nic opn]                                               | | | 
  IP2 on wan directly,                                      | | |
  IP3 as virtual IP of type ip alias                        | | |
  x                                                         | | |
  x (here opn does routing/NAT/tunnel things)               | | |
  x                                                         | | |
  x set up 1:1 NAT IP3-to-10.1.7.11 in opn for full access  | | |
  x set up single port forwardings for the 2nd vm if needed | | |
  x                                                         | | |
[lan nic opn]-----------------------------------------------+ | |
 10.1.7.1                                                     | |
                                                              | |
                                                   +----------+ |
                                                   |            |
                                              [vm1 eth0]   [vm2 eth0]
                                               10.1.7.11    10.1.7.151

如果您也想通过 opnsense 为 HV 设置防火墙,这些将是在保持连接性的同时执行此操作的步骤:

  1. 从 [vmbr0] 中删除 IP1
  2. 把它放在 [wan nic opn]
  3. 将内部 ip (IP_INT) 从 opn lan 放到 [vmbr30]
  4. 从 IP 设置 1:1 NAT
  5. 设置所有防火墙规则
  6. 当您打破防火墙并且无法再访问 hv 时,发誓发誓
  7. 看看您是否可以通过 iKVM 解决方案访问 HV,希望获得公共 IP,因此您可以使用 proxmox 中的控制台窗口,希望修复或重新安装防火墙。
于 2017-05-23T08:02:47.420 回答