惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog
W
WeLiveSecurity
P
Proofpoint News Feed
月光博客
月光博客
NISL@THU
NISL@THU
L
LINUX DO - 最新话题
Webroot Blog
Webroot Blog
T
Threatpost
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Vercel News
Vercel News
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
S
Schneier on Security
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
MyScale Blog
MyScale Blog
N
News and Events Feed by Topic
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
The Hacker News
The Hacker News
Schneier on Security
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Help Net Security
Help Net Security
Recent Announcements
Recent Announcements
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Securelist
T
The Exploit Database - CXSecurity.com
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
雷峰网
雷峰网
量子位
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
I
Intezer
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
D
DataBreaches.Net
V
Vulnerabilities – Threatpost
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
罗磊的独立博客

Dallas Lu

OpenWRT 使用 udp2raw 对抗 WireGuard 阻断 博客程序架构的思考与展望 如何证明你是原创作者 Nginx 泛域名配置的隐患与对策 WISeID S/MIME 证书 V2EX 刑满释放记 使用 Radicale 在 Ubuntu 24.04 中搭建 vCards CardDav 服务 邮件服务的域名成功从 SURBL 黑名单移除 网站多语言的设计细节 网站评论系统的目前进展和展望 在公网使用 iptables 转发端口时保留客户端 IP 邮件投递平台 Postal 的使用经验 自建 Postal 完美替代 SendGrid 互联网在崩塌吗,然后呢 在 SvelteKit 应用中使用 JSON-LD 网页的打印样式应该怎么写 “茴字的四种写法”之 IP 与域名 怎么伪造 Git 提交的时区 供大众交流的论坛和其它替代产品还是不好用 改编不是照搬 一次排查诡异的网络问题的经历 在 OpenWRT 23 中使用 nftset 配置 Shadowsocks 规则 使用自建 Tabby Web 来同步 Tabby 配置 手动建立自己的 IPv6 Tunnel 服务 在 PVE 中缩小 Ubuntu 虚拟机的磁盘 Beancount 摊销与折旧的使用以及相关插件 Nginx 反代 Apache Subversion 添加 HTTPS 使用你的主域名作为 Mastodon 实例名 Firefox 和 Chrome 为何要革 EV 证书的命
在 PVE 手动配置网络及虚拟机 IPv6 公网
达拉斯・卢 · 2024-02-15 · via Dallas Lu

独立服务器主机商提供了一个 IPv4 地址,以及 /64 的 IPv6 地址。尽管额外购买了 IPv4 地址,但并不够用。有几个虚拟机本身并不需要公共的 IPv4 地址,只需要能访问 IPv4 和 IPv6 网络即可,比如监控服务。另有一些临时测试服务,也可能只需要 IPv6 地址。本文记述一台独立服务器上 PVE 的网络配置,尤其是 IPv6 部分,方便虚拟机同时拥有内网 IPv4 地址和公网 IPv6 地址。

PVE 自身网络 vmbr0 配置

PVE 会默认创建 vmbr0,桥接了第一个物理端口。需要确认一下,已插入网线的端口是哪一个,也许不是 eno1 而是 eno2。我曾在此处浪费了半个多小时。

公网 IPv4 的配置

主机商提供了明确的配置信息,假设是:

IPv4: 1.2.3.4/30
IPv4 Gateway: 1.2.3.1
IPv6: 1:2:3:4::/64
IPv6 Gateway: 1:2:3:4::1

使用 IPMI 或 VNC 连接至服务器,编辑 /etc/network/interfaces

auto vmbr0
iface vmbr0 inet static
        address 1.2.3.4/30
        gateway 1.2.3.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

然后重启网络:

systemctl restart networking

访问 https://1.2.3.4:8006 即可访问 PVE 的控制面板注1。接下来的操作都可在 PVE 控制面板完成。

PVE 自身 IPv6 配置

编辑 vmbr0 的配置,已经在界面上看到刚刚的 IPv4 配置,继续设置 IPv6:

  • IPv6/CIDR: 1:2:3:4::a/64
  • IPv6 网关: 1:2:3:4::1

保存后应用更改,可通过 https://ping6.ping.pe 来验证 1:2:3:4::a/64 是否可从外部访问,以及在 PVE 节点 shell 中检查是否可通过 IPv6 连接互联网。

# Google DNS
ping6 2001:4860:4860::8888

其他

网络正常使用后,即可进行其他依赖网络的操作,比如加入另一机房的 PVE 集群等。

如果一台虚拟机需要使用额外的独立 IP,可直接连接到默认建立的 vmbr0,然后按主机商提供的信息配置网络地址即可连接 IPv4 和 IPv6 网络。因为 vmbr0 桥接了已插入网线的物理端口,基于此网络直接配置公网 IP 地址即可,无需其他操作。

配置虚拟机专用桥接网络 vmbr1

更多的时候,虚拟机不需要公网 IPv4,只需 NAT 内网地址或者 IPv6。所以在 PVE 的节点上添加一个桥接网络(Linux Bridge)vmbr1

  • IPv4/CIDR: 1.0.0.1/16
  • IPv6/CIDR: 1:2:3:4:a::1/80

如果打算使用 VLAN,此处的地址信息可填可不填。如果有临时开测试虚拟机的需要,就以此作为默认的测试网络,此 IPv4 地址即为虚拟机的 IPv4 网关,IPv6 亦同。

vmbr0 中,虚拟机可以任意选择一个可用范围内的 IPv6 地址,而在 vmbr1 中,我们希望虚拟机只使用其中一个子网段注2。选择了 1:2:3:4:aa::/80 中的第一个地址。

配置 VLAN

vmbr1 中,开启 VLAN 感知(VLAN aware)。新建桥接网络,比如 vmbr1.100,VLAN 标记即为 100。配置如下:

  • IPv4/CIDR: 1.0.100.1/24
  • IPv6/CIDR: 1:2:3:4:a:100::1/96

我们希望接入标记为 100 的 VLAN 的虚拟机,只使用更小范围的网段 1.0.100.0/241:2:3:4:a:100::/96 范围内的地址注3

配置虚拟机

这里选择了一个 CT 实例来测试虚拟机的网络配置,好处是可在 PVE 控制面板直接设置网络,非常方便。编辑网络信息:

  • 桥接:vmbr1
  • VLAN 标记:100
  • IPv4:静态
  • IPv4/CIDR: 1.0.100.100/24
  • IPv4 网关:1.0.100.1
  • IPv6:静态
  • IPv6/CIDR: 1:2:3:4:a:100::100/96
  • IPv6 网关:1:2:3:4:a:100::1

此时虚拟机与 PVE 可互相 ping 来测试网络。

配置 IPv4 NAT

目前虚拟机还不能通过 IPv4 访问网络,需要连接到 PVE 节点 shell,编辑 /etc/network/interfaces,为 vmbr1 添加 'post' 开头的语句:

iface vmbr1 inet static
        address 10.0.0.1/16
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        bridge-vlan-aware yes
        bridge-vids 2-4094
        post-up sysctl -w net.ipv4.ip_forward=1
        post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/16' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/16' -o vmbr0 -j MASQUERADE

保存后重启网络注4

配置 IPv6 转发及 NDP 代理

编辑 /etc/network/interfaces,为 vmbr1 添加 'post' 开头的语句:

iface vmbr1 inet6 static
        address 1:2:3:4:a::1/80
        post-up sysctl -w net.ipv6.conf.default.forwarding=1
        post-up sysctl -w net.ipv6.conf.all.forwarding=1
        post-up sysctl -w net.ipv6.conf.default.proxy_ndp=1
        post-up sysctl -w net.ipv6.conf.all.proxy_ndp=1

保存重启网络。PVE 会自动创建相关路由,可通过 ip -6 route 查看。如果缺少相关路由1,可手动添加:

ip -f inet6 route add 1:2:3:4:100::100 dev vmbr1.100

注意重启后可能会消失,自行加入启动脚本或 /etc/network/interfaces 相关接口的 post-up 语句中。

至此外部尚不能连接 vmbr1vmbr1.100 以及虚拟机上配置的 IPv6 地址。添加 NDP 代理:

# vmbr1
ip -f inet6 neigh add proxy 1:2:3:4:a::1 dev vmbr0
# vmbr1.100
ip -f inet6 neigh add proxy 1:2:3:4:a:100::1 dev vmbr0
# 虚拟机
ip -f inet6 neigh add proxy 1:2:3:4:a:100::100 dev vmbr0

可通过 ip -6 neigh show proxy 查看。如网络不通,可尝试刷新 ndp 缓存:ip -6 neigh flush all

NDPPD

未来添加虚拟机时,还会需要手动添加 NDP 代理。可通过 NDPPD 一劳永逸。

apt install ndppd

编辑 /etc/ndppd.conf

proxy vmbr0 {
        rule 1:2:3:4::/64 {
                auto
        }
}

启用 NDPPD

systemctl enable --now ndppd

其他

家庭宽带网络环境不适用本文方案,可使用 DHCP/SLAAC 等方式为虚拟机直接自动配置 IPv623


  1. 有时手动更改 PVE 的网络配置,重启网络也没有效果,可尝试重启 PVE 节点。 ↩

  2. 如果需要限制 vmbr1vmbr1.100 中的虚拟机仅能使用规划网段的地址,可为其添加防火墙规则,抛弃非规划网段的数据。 ↩

  3. 本案例中,三个接口中分别配置了不同的子网网段,以避免路由冲突。 ↩

  4. 为了从外部 IPv4 地址连接 NAT 网络中的虚拟机,可能需要在 PVE 中配置端口转发。 ↩

  1. coldark. 单IPv4独服利用ProxmoxVE建立IPv4-NAT和IPv6虚拟机(小鸡). 方舟基地. 2019. 「……这时只能访问IPv4地址,IPv6这个时候还是不通的,需要在主机输入以下命令开启:... ip -f inet6 route add ...」 ↩

  2. Insylei. PVE Proxmox VE 使用IPv6. 自由de风. 2023. ↩

  3. bruj0. ProxmoxIPv6. Github. 46d1aac. 2023. ↩