Hetzner单公网IP环境下Proxmox+OPNsense的NAT配置咨询
Hetzner单公网IP环境下Proxmox+OPNsense的NAT配置咨询
Hey Katia,看起来你正在Hetzner单公网IP的环境下搭建Proxmox+OPNsense的NAT转发架构,我先帮你梳理下当前的配置细节,再给出几个关键的注意点和优化建议:
你当前的/etc/network/interfaces配置
source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface lo inet6 loopback auto enp4s0 iface enp4s0 inet static address 78.46.XX.76/27 gateway 78.46.XX.65 up route add -net 78.46.XX.64 netmask 255.255.255.224 gw 78.46.XX.65 dev enp4s0 post-up iptables -t nat -A PREROUTING -i enp4s0 -p tcp -m multiport ! --dports 8022,8006 -j DNAT --to 10.10.10.1 post-up iptables -t nat -A PREROUTING -i enp4s0 -p udp -j DNAT --to 10.10.10.1 # route 78.46.XX.64/27 via 78.46.XX.65 iface enp4s0 inet6 static address 2a01:4f8:121:4c9::2/64 gateway fe80::1 auto vmbr0 iface vmbr0 inet static address 10.10.10.0/31 bridge ports none bridge-stp off bridge-fd 0 post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/31' -o enp4s0 -j MASQUERADE
(注:我帮你补上了POSTROUTING的MASQUERADE规则,这是NAT生效的核心,你原配置里可能没写完这部分)
配置分析与实操建议
- 基础架构合理性:你的物理网卡enp4s0的IPv4/IPv6配置完全符合Hetzner的网段要求,vmbr0采用
/31点对点网段连接Proxmox主机和OPNsense虚拟机的设计很巧妙,既避免了地址浪费,又能实现隔离的管理通道。 - NAT规则核心补全:
你已经通过PREROUTING规则保留了Proxmox自身的SSH(8022)和WebUI(8006)端口,把其他所有TCP/UDP流量转发给OPNsense,这个逻辑没问题,但必须补上POSTROUTING的MASQUERADE规则,否则OPNsense返回的流量无法正确回传给公网客户端,我已经在上面的配置里补全了这条规则。 - 开启IP转发功能:一定要确保Proxmox主机开启了IP转发,编辑
/etc/sysctl.conf,添加或修改以下两行:
执行net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1sysctl -p让配置立即生效。 - 规则持久化处理:当前的iptables规则会在服务器重启后丢失,建议把规则保存到文件并设置开机自动加载:
然后在iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6/etc/network/interfaces的开头添加:pre-up iptables-restore < /etc/iptables/rules.v4 pre-up ip6tables-restore < /etc/iptables/rules.v6 - IPv6转发(可选):如果你需要把IPv6流量也交给OPNsense处理,可以添加对应的ip6tables规则,或者直接给OPNsense分配一个Hetzner子网内的IPv6地址,通过路由转发实现完整的IPv6支持。
- OPNsense虚拟机配置:确保OPNsense的网卡绑定到vmbr0,IP设置为
10.10.10.1/31,网关指向10.10.10.0(Proxmox主机的vmbr0地址),这样才能和Proxmox主机正常通信并接收转发的流量。
备注:内容来源于stack exchange,提问作者KatiaSisHost
相关产品推荐
相关产品推荐

