Proxmox OpenVZ 虚拟机部属 IPv6 地址

前言

最近趁着 Dacentec 的特价服务器上架了,趁机上了一台来玩耍。机子总体的性能还过得去,毕竟一分钱一分货,钱没到位货就不能要求太高。一开始装机的时候,是给了 IP-KVM 让我自行安装的,然而组了软 Raid1 然后 Debian / Ubuntu 等系统我都没做好启动的设置,所以干脆直接就安装了 Proxmax 这个虚拟化系统。

Proxmax 实际上就是基于 Debian 的一个包,为了方便安装官方打包成了 iso 镜像来给我们。安装过程挺顺利的,组好软 Raid1 然后就顺利的进到系统了。

虽然这台服务器的 IP 给的是 /30 ,但是除去一个网关地址、一个广播地址,其实实际上能用的 IP 就只有一个,那么我要用 Proxmax 就只能用 nat 转发了。

后来,在 Dacentec 的 Wiki 上面搜了一下,发现是可以免费拿到一个 IPv6 段的,马上就去发了 Ticket ,然后,很快就有了回复,拿到了我可以用的 IPv6 地址。

下面就讲讲怎么把拿到的 IPv6 地址用上!

步骤

其实正如上面所说的,Proxmox 是基于 Debian 的,那么这篇教程理论上来讲也是适合单纯的 Debian 用户的。

给 Host 配置 IPv6

我们需要修改这个文件 /etc/network/interfaces ,把我们 IPv6 的地址配置上去

一般来说,在文件的最后加上下面的行就可以的了

iface vmbr0 inet6 static
        address 2607:xxxx:xxxx:xxxx::2
        gateway 2607:xxxx:xxxx:xxxx::1
        netmask 64

服务器给我的是 IPv6 格式大概是这个样子的:Network 2607:xxxx:xxxx:xxxx::/48

因此我只需要随便选择一个 IPv6 地址即可,所以我就选了 2607:xxxx:xxxx:xxxx::2, 然后将子网掩码设置成 64

如果并不是 Proxmox 的用户的,就把 vmbr0 改为 eth0 (改成你实际的网卡)

然后执行下面命令重启网络

service networking restart

((如果配置有问题的话,那么你的机子应该就完全离线了....

测试 Host 的IPv6

测试也十分简单,只要 ping 一下几个地址就可以了。

如果都能 ping 通,那就证明没有问题了。

配置系统

系统内核

修改 /etc/sysctl.conf 文件,检查下面的行是否存在,如果存在就确保前面是没有注释的,如果不存在就新增加到最后

# IPv6 Packet Forwarding and Proxy NDP
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.proxy_ndp = 1
net.ipv6.conf.all.proxy_ndp = 1

保存后,重启系统或者执行 sysctl -p 使配置生效

OpenVZ 配置

检查 /etc/vz/vz.conf 中下面这行是没有注释的

IPV6="yes"

分配 IPv6

经过了前面的步骤之后,现在就可以正式去分配 IPv6 地址给 OpenVZ 虚拟机了。

Proxmox 的控制面板上面似乎并不支持分配 IPv6 地址,因此我们就在命令行下面进行,执行下面的语句即可

vzctl set <VEID> --ipadd 2607:xxxx:xxxx:xxxx::3 --save

( 注意不要分配重复的地址....

另外需要记住的是,除非这个 OpenVZ 虚拟机同时有 IPv4 的 nat 以及 IPv6 的地址,不然的话即可把虚拟机里面的 DNS 地址改成 ipv6 的 DNS ,不然的话就什么网站也上不去了。

参考资料

IPv6 OpenVZ VEs and Debian/Proxmox as host system