既然你要将其作为长期使用的 Debian 12/13 LXC 模板,我们不仅要解决网关连通性问题,还要针对系统性能、安全性以及容器特有的网络环境进行深度优化。

以下是为你整理的配置清单,你可以按照这些步骤修改后再执行“转换为模板”的操作。


1. 网络配置 (/etc/network/interfaces)

由于你提到 fe80::1 不通而 vmbr1 地址通,建议在模板中直接使用静态或明确的 GUA 地址配置。

auto lo
iface lo inet loopback

auto eth0
# IPv4 配置 (根据你的实际情况修改)
iface eth0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1

# IPv6 配置 (重点)
iface eth0 inet6 static
    address 240e:xxxx:xxxx:xxxx::100/64
    # 使用宿主机 vmbr1 的全球单播地址作为网关
    gateway 240e:xxxx:xxxx:xxxx::1 
    # 强制开启受限的邻居发现,防止某些环境下路由丢失
    post-up ip -6 route add default via 240e:xxxx:xxxx:xxxx::1 dev eth0

2. 宿主机关键内核参数 (sysctl)

注意: LXC 共享宿主机内核,因此 sysctl 必须在 PVE 宿主机 上配置(而不是容器内部),否则 IPv6 转发无法穿透。

在 PVE 宿主机 执行:

cat <<EOF >> /etc/sysctl.d/99-pve-lxc-network.conf
# 开启所有网卡的 IPv6 转发 (必须)
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1

# 允许 vmbr1 接受路由通告 (RA),即使开启了转发
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.vmbr1.accept_ra = 2

# 优化网络邻居表条目数 (防止容器多时缓存溢出)
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096
net.ipv6.neigh.default.gc_thresh1 = 1024
net.ipv6.neigh.default.gc_thresh2 = 2048
net.ipv6.neigh.default.gc_thresh3 = 4096
EOF

sysctl -p /etc/sysctl.d/99-pve-lxc-network.conf

3. 模板内部系统优化 (LXC 内执行)

在把容器转成模板前,执行以下操作提升性能和基础体验。

A. 提升文件句柄上限

LXC 默认限制可能偏低,在 /etc/security/limits.conf 末尾添加:

* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535

B. 禁用不必要的服务 (减小体积和启动负载)

# 禁用不需要的硬件时钟同步(LXC 自动同步宿主机时间)
systemctl disable hwclock.sh
systemctl mask systemd-timesyncd.service

# 清理无用包
apt autoremove --purge -y && apt clean

C. SSH 优化

修改 /etc/ssh/sshd_config,加快连接速度:

# 禁用 DNS 反向解析,解决 SSH 登录慢的问题
UseDNS no
# 允许 Root 登录(如果你需要作为初始模板)
PermitRootLogin yes

4. 自动化清理脚本 (转换模板前的最后一步)

在 PVE 网页点击“转换模板”之前,在容器内运行这个脚本,确保克隆出的新容器不会带有旧的 ID 和日志:

#!/bin/bash
# 清理日志和临时文件
find /var/log -type f -exec truncate -s 0 {} \;
rm -rf /tmp/* /var/tmp/*

# 清理 APT 缓存
apt-get clean

# 重置 Machine-ID (关键!否则克隆出的容器会有相同的 D-Bus ID)
truncate -s 0 /etc/machine-id
rm /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id

# 物理删除 SSH 密钥 (克隆后由系统自动重新生成,安全性更高)
rm -f /etc/ssh/ssh_host_*

# 清理 Bash 历史
history -c && exit

最后的验证

配置完上述所有项并关机转换后,建议从该模板克隆一个新容器(ID 200),检查:

  1. ping6 google.com 是否秒通。
  2. 外网 SSH 访问新容器的 IPv6 是否正常。

如果你在克隆后发现 IPv6 还是不通,通常是因为宿主机端的 NDP Proxy 问题。