返回列表 发布新帖
查看: 18|回复: 0

[闲聊] 用 Incus/LXD 在 VPS 上开小鸡,给虚拟机分发 /64 的独立 IPv6

灌水成绩
133
6
1081
主题
回帖
积分

等级头衔
U I D : 8
等级 : Lv.13

积分成就
贡献 : 435
金钱 : 12495
在线时间 : 34 小时
注册时间 : 2024-11-24
最后登录 : 2025-1-31

荣誉勋章

2024万圣节纪念币杰出贡献纪念币种子用户纪念币2024龙年纪念币2025蛇年纪念币

发表于 2025-1-25 01:37:54 | 查看全部 |阅读模式
如果手上有 /64 这种整段 IPv6 的 KVM 虚拟机的话,可以玩一下用这种方式开小鸡。

这里操作的是 Ubuntu,主要用 netplan。
Incus/LXD 是另一个虚拟机管理平台,对比 Proxmox VE 的优点是可以在任意 Linux 系统上安装,且不需要更换内核,也更节省资源。缺点是功能不如 PVE 多。关于 Incus 的安装和 Web UI 的使用可以去网上搜搜教程。
Incus 是 LXD 的一个社区版 Fork,两者没什么大的区别。但由于 LXD 改用了 Canonical 的许可证,且需要 snap 安装,所以一般建议用 Incus。
母鸡配置:
  1. 网关:2403:71c0:2000::1

  2. 拥有的子网:2403:71c0:2000:a217::/64
复制代码
首先在/etc/sysctl.conf 里开启 IPv6 转发:
  1. net.ipv6.conf.all.forwarding=1
复制代码


关闭 IPv4 地址和 IPv6 的 NAT。这里给的 vmv6 网卡是/64 整个子网,网关是 2403:71c0:2000:a217::1212(母鸡本机 IPv6)。
母鸡 netplan:
  1. network:
  2.   version: 2
  3.   ethernets:
  4.     eth0:
  5.       addresses:
  6.         - 2403:71c0:2000:a217::1212/128
  7.       routes:
  8.         - to: "2403:71c0:2000::1/128"
  9.           scope: link
  10.         - to: "::/0"
  11.           via: "2403:71c0:2000::1"
复制代码
  1. root@anontokyo:~# ip a
  2. ...
  3. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
  4.     link/ether 00:16:3c:ad:57:5d brd ff:ff:ff:ff:ff:ff
  5.     altname enp0s3
  6.     altname ens3
  7.     inet6 2403:71c0:2000:a217::1212/128 scope global
  8.        valid_lft forever preferred_lft forever
  9.     inet6 fe80::216:3cff:fead:575d/64 scope link
  10.        valid_lft forever preferred_lft forever
  11. ...
  12. 19: vmv6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
  13.     link/ether 00:16:3e:b0:8e:a5 brd ff:ff:ff:ff:ff:ff
  14.     inet6 2403:71c0:2000:a217::1212/64 scope global
  15.        valid_lft forever preferred_lft forever
  16.     inet6 fe80::216:3eff:feb0:8ea5/64 scope link
  17.        valid_lft forever preferred_lft forever

  18. root@anontokyo:~# ip -6 r
  19. 2403:71c0:2000::1 dev eth0 proto static metric 1024 pref medium
  20. 2403:71c0:2000:a217::1212 dev eth0 proto kernel metric 256 pref medium
  21. 2403:71c0:2000:a217::/64 dev vmv6 proto kernel metric 256 pref medium
  22. fe80::/64 dev eth0 proto kernel metric 256 pref medium
  23. fe80::/64 dev veth478de25 proto kernel metric 256 pref medium
  24. fe80::/64 dev br-9714ce2fd96a proto kernel metric 256 pref medium
  25. fe80::/64 dev veth62aa42c proto kernel metric 256 pref medium
  26. fe80::/64 dev docker0 proto kernel metric 256 pref medium
  27. fe80::/64 dev vmv6 proto kernel metric 256 pref medium
  28. default via 2403:71c0:2000::1 dev eth0 proto static metric 1024 pref medium
复制代码
给虚拟机(容器)增加 vmv6 网卡,内部映射的名称为 eth0:

虚拟机(容器)netplan:

network:
  version: 2
  ethernets:
    eth0:
      dhcp6: false
      addresses:
        - 2403:71c0:2000:a217::114/64
      routes:
        - to: default
          via: "2403:71c0:2000::1212"


注意:

小鸡 IPv6 配置 2403:71c0:2000:a217::114/128,这里写/128 或/64 都无所谓,反正子网内 IPv6 都能随便拿。
配置所有 IPv6 走 2403:71c0:2000::1212 网关,也就是母鸡的 IPv6 地址,由母鸡作为路由器帮我们代理上网。
效果:


root@ubuntu:~# ip a
...
22: eth0@if23: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:27:b9:5a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 2403:71c0:2000:a217:216:3eff:fe27:b95a/64 scope global mngtmpaddr noprefixroute
       valid_lft forever preferred_lft forever
    inet6 2403:71c0:2000:a217::114/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe27:b95a/64 scope link
       valid_lft forever preferred_lft forever

root@ubuntu:~# ip -6 r
2403:71c0:2000:a217::/64 dev eth0 proto kernel metric 256 pref medium
2403:71c0:2000:a217::/64 dev eth0 proto ra metric 1024 mtu 1500 hoplimit 64 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::216:3eff:feb0:8ea5 dev eth0 proto ra metric 1024 expires 1727sec mtu 1500 hoplimit 64 pref medium


可以看到小鸡除了我们配置的 IPv6 之外还通过 SLAAC 自己拿到了一个 IPv6。另外这里走网关 2403:71c0:2000::1212 配置好像没生效,走的是 fe80::216:3eff:feb0:8ea5 这个母鸡 vmv6 网卡的本地链路地址,不过没关系,和走公网 IPv6 效果是一样的。

修改完 netplan 都要记得 netplan apply。

然后配置母鸡的 iptables:

  1. ip6tables -A FORWARD -i vmv6 -j ACCEPT
  2. ip6tables -A FORWARD -o vmv6 -j ACCEPT

  3. netfilter-persistent save # 持久化iptables规则
复制代码
  1. ndpresponder -i eth0 -n 2403:71c0:2000:a217::/64
复制代码
  1. root@ubuntu:~# curl ipv6.ip.sb
  2. 2403:71c0:2000:a217:216:3eff:fe27:b95a
复制代码
测试外网能否能联通小鸡(换一台 VPS 运行):
  1. root@dev:~# ping 2403:71c0:2000:a217:216:3eff:fe27:b95a
  2. PING 2403:71c0:2000:a217:216:3eff:fe27:b95a(2403:71c0:2000:a217:216:3eff:fe27:b95a) 56 data bytes
  3. 64 bytes from 2403:71c0:2000:a217:216:3eff:fe27:b95a: icmp_seq=1 ttl=54 time=2.18 ms
  4. 64 bytes from 2403:71c0:2000:a217:216:3eff:fe27:b95a: icmp_seq=2 ttl=54 time=1.66 ms
  5. ^C
  6. --- 2403:71c0:2000:a217:216:3eff:fe27:b95a ping statistics ---
  7. 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
  8. rtt min/avg/max/mdev = 1.658/1.919/2.180/0.261 ms
  9. root@dev:~# ping 2403:71c0:2000:a217::114
  10. PING 2403:71c0:2000:a217::114(2403:71c0:2000:a217::114) 56 data bytes
  11. 64 bytes from 2403:71c0:2000:a217::114: icmp_seq=1 ttl=54 time=1.69 ms
  12. 64 bytes from 2403:71c0:2000:a217::114: icmp_seq=2 ttl=54 time=1.59 ms
  13. ^C
  14. --- 2403:71c0:2000:a217::114 ping statistics ---
  15. 2 packets transmitted, 2 received, 0% packet loss, time 1002ms
  16. rtt min/avg/max/mdev = 1.591/1.642/1.694/0.051 ms
复制代码
不管是我们自己配上的 IPv6 还是 SLAAC 拿到的 IPv6 都是可以联通的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

服务支持

社区监狱 封禁类型
投诉/建议联系

fankui@shequla.com

未经授权禁止转载,复制和建立镜像
如有违反,追究法律责任
  • 微信公众号
  • 哔哩哔哩
Copyright © 2001-2025 社区啦 - 小众的中文社区 版权所有 All Rights Reserved. |网站地图 冀ICP备2022019298号
关灯 在本版发帖
手机扫一扫访问
官方Q群返回顶部
快速回复 返回顶部 返回列表