在配置前需要确保 proxmox ve 版本高于 8.2。

示例网络配置

公网 IPv4123.1.2.3/24
公网 IPv62001:41d0::1/128
虚拟机 IPv410.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 区域:

simple

这里命名为 vm,注意打开高级设置,勾选自动 DHCP:

区域设置

2.创建 VNet

在数据中心 -> SDN -> VNets 中,新增 VNet:

vnet

这里命名为 vmlan,然后选中此 VNet,创建子网:

子网配置

可以是任意 ipv4 私网地址,这里选择 10.0.0.0/24,网关地址为 10.0.0.1,启用 SNAT。

dhcp

点击 DHCP 范围选项卡,配置起始地址 10.0.0.100,结束地址 10.0.0.105。

VNet 配置完成后如下:

Vnet

同理添加 IPv6 子网 2001:41d0::/125,网关地址为 2001:41d0::2,不要勾选 SNAT。

点击 DHCP 范围选项卡,配置起始地址 2001:41d0::3,结束地址 2001:41d0::7。

3.应用配置

在数据中心 -> SDN 点击应用:

应用配置

可以看到创建完毕。

4.使用

创建 LXC 在使用时选择桥接 vmlan,配置为 DHCP:

proxmox-8.png

创建后启动,就可以正常获取到 ip 并访问网络。

5.防火墙相关

如果开启了防火墙,由于默认规则下 input 为 drop, 需要手动放行 vmlan dhcp 相关数据,否则无法自动获取 ip 地址。

标签:无

你的评论