OVH 服务器使用 Proxmox SDN 配置 IPv4 NAT + 单独公网 IPv6
在配置前需要确保 proxmox ve 版本高于 8.2。
示例网络配置
公网 IPv4 | 123.1.2.3/24 |
公网 IPv6 | 2001:41d0::1/128 |
虚拟机 IPv4 | 10.0.0.0/24 |
Proxmox 宿主机命令行配置
1.安装 dnsmasq 并关闭默认配置:
apt update
apt install dnsmasq
systemctl disable --now dnsmasq
2.开启转发和 ndp 代理配置
打开 /etc/sysctl.conf
,写入:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.vmbr0.proxy_ndp = 1
3.创建 ndp 代理脚本
创建 /etc/network/ipv6-proxy.sh
,写入:
#!/bin/bash
# 配置代理的前缀
prefix="2001:41d0::"
# 起始地址(十六进制形式)
start="2"
# 结束地址(十六进制形式)
end="7"
# 网络接口
interface="vmbr0"
# 将起始地址转换为十进制
start_dec=$((16#${start}))
end_dec=$((16#${end}))
# 循环生成范围内的地址并添加NDP代理
for i in $(seq $start_dec $end_dec); do
# 将十进制地址转换回十六进制
hex_address=$(printf "%x" $i)
# 生成完整的IPv6地址并添加代理
ip_addr="${prefix}${hex_address}"
ip neigh add proxy $ip_addr dev $interface
echo "代理地址:$ip_addr"
done
注意添加执行权限:
chmod +x /etc/network/ipv6-proxy.sh
4.添加脚本启动
打开 /etc/network/interfaces
,写入:
post-up /etc/network/ipv6-proxy.sh
完整文件示例如下:
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet static
address 123.1.2.3/24
gateway 123.1.2.1
bridge-ports eno1
bridge-stp off
bridge-fd 0
iface vmbr0 inet6 static
address 2001:41d0::1/128
gateway 2001:41d0::00ff:00ff:00ff:00ff
post-up /etc/network/ipv6-proxy.sh
source /etc/network/interfaces.d/*
Proxmox 宿主机 webui 配置
1.创建区域
在数据中心 -> SDN -> 区域中,新增 Simple 区域:
这里命名为 vm,注意打开高级设置,勾选自动 DHCP:
2.创建 VNet
在数据中心 -> SDN -> VNets 中,新增 VNet:
这里命名为 vmlan,然后选中此 VNet,创建子网:
可以是任意 ipv4 私网地址,这里选择 10.0.0.0/24,网关地址为 10.0.0.1,启用 SNAT。
点击 DHCP 范围选项卡,配置起始地址 10.0.0.100,结束地址 10.0.0.105。
VNet 配置完成后如下:
同理添加 IPv6 子网 2001:41d0::/125,网关地址为 2001:41d0::2,不要勾选 SNAT。
点击 DHCP 范围选项卡,配置起始地址 2001:41d0::3,结束地址 2001:41d0::7。
3.应用配置
在数据中心 -> SDN 点击应用:
可以看到创建完毕。
4.使用
创建 LXC 在使用时选择桥接 vmlan,配置为 DHCP:
创建后启动,就可以正常获取到 ip 并访问网络。
5.防火墙相关
如果开启了防火墙,由于默认规则下 input 为 drop, 需要手动放行 vmlan dhcp 相关数据,否则无法自动获取 ip 地址。
标签:无