在仅拥有1个公网IP的Hetzner专属服务器上,基于Proxmox与OpnSense配置两个独立内部VLAN
在仅拥有1个公网IP的Hetzner专属服务器上,基于Proxmox与OpnSense配置两个独立内部VLAN
嘿,我来帮你搞定这个配置!你的需求完全可以实现——不用额外IP、不用vSwitch,就能在现有架构下分出两个隔离的内部VLAN,把不安全内容和工作环境彻底隔开。下面一步步来:
一、Proxmox侧网络配置修改
首先咱们修改Proxmox的网络配置文件 /etc/network/interfaces,替换掉原来的vmbr99,改成两个绑定VLAN的内部桥:
auto lo iface lo inet loopback iface eno1 inet manual # 公网桥(连接Hetzner公网,OpnSense的WAN口接这里) auto vmbr0 iface vmbr0 inet manual bridge-ports eno1 bridge-stp off bridge-fd 0 # 开启VLAN透传,允许VLAN1和VLAN2的流量通过 bridge-vlan-aware yes bridge-vids 1 2 # VLAN1内部桥(对应工作子网10.1.1.0/24) auto vmbr1 iface vmbr1 inet static address 10.1.1.1/24 # 可选:Proxmox在该VLAN的管理IP,方便内部访问Proxmox bridge-ports none bridge-stp off bridge-fd 0 # 绑定到VLAN1,确保该桥的流量都带VLAN1标签 bridge-vlan-aware yes bridge-vids 1 bridge-pvid 1 # VLAN2内部桥(对应不安全子网10.1.2.0/24) auto vmbr2 iface vmbr2 inet static address 10.1.2.1/24 # 可选:Proxmox在该VLAN的管理IP bridge-ports none bridge-stp off bridge-fd 0 # 绑定到VLAN2,确保该桥的流量都带VLAN2标签 bridge-vlan-aware yes bridge-vids 2 bridge-pvid 2
修改完成后,重启Proxmox网络生效:
systemctl restart networking
二、OpnSense侧配置
接下来在OpnSense里配置VLAN接口、DHCP和防火墙规则,实现隔离和NAT转发:
1. 添加VLAN子接口
进入OpnSense的Web管理界面,按以下步骤操作:
- 转到
Interfaces > Other Types > VLAN,点击Add - 创建第一个VLAN:
- 父接口选择OpnSense连接到Proxmox
vmbr0的那个接口(通常是vmx1或类似命名) - VLAN ID 设置为
1 - 点击
Save,然后转到Interfaces > Assign,把这个新VLAN接口分配为LAN1(或自定义名称) - 编辑
LAN1接口,设置IP地址为10.1.1.200/24,勾选Enable,保存并应用
- 父接口选择OpnSense连接到Proxmox
- 重复上述步骤创建VLAN2:
- VLAN ID 设置为
2,分配为LAN2,IP地址设为10.1.2.200/24
- VLAN ID 设置为
2. 配置DHCP(可选)
如果需要给虚拟机自动分配IP:
- 转到
Services > DHCPv4,分别选择LAN1和LAN2接口 - 开启DHCP服务,设置地址池(比如
10.1.1.10-10.1.1.100和10.1.2.10-10.1.2.100),保存并应用
3. 设置防火墙隔离规则
关键一步,确保两个VLAN无法互相访问:
- 转到
Firewall > Rules,选择LAN1接口:- 添加规则:允许所有流量出站到公网,但禁止访问10.1.2.0/24子网
- 同样选择
LAN2接口:- 添加规则:允许所有流量出站到公网,但禁止访问10.1.1.0/24子网
- 检查
Firewall > NAT > Outbound,确保自动生成的NAT规则覆盖了10.1.1.0/24和10.1.2.0/24子网(OpnSense默认会自动配置,若没有则手动添加)
4. 验证VLAN标签剥离
因为OpnSense的WAN接口直接连接到Proxmox的vmbr0(对应物理网卡eno1),且WAN接口未配置VLAN,所以所有内部VLAN的流量经过NAT后,都会以无VLAN标签的形式发送到Hetzner公网,完全符合你的需求。
三、虚拟机配置
在Proxmox的虚拟机设置里:
- 把工作环境的虚拟机网络接口设置为
vmbr1,网关设为10.1.1.200 - 把不安全内容的虚拟机网络接口设置为
vmbr2,网关设为10.1.2.200
四、测试配置
完成所有配置后,做以下验证:
- 分别在两个VLAN的虚拟机上测试能否访问公网
- 测试同VLAN内的设备能否互相ping通
- 尝试跨VLAN ping(比如VLAN1的虚拟机ping VLAN2的IP),应该无法连通,验证隔离效果
- 在Proxmox上执行
tcpdump -i eno1,检查流出公网的数据包,确认没有带VLAN标签
备注:内容来源于stack exchange,提问作者monikan
相关产品推荐
相关产品推荐

