手上有台小内存的纯ipv6 vps,考虑到内存不是很大,一直想换成32位的Debian操作系统。为了最小化安装,采取了网络重装的方式,也很方便。随后就遇到了麻烦,发现无法进行ssh连接。
一、检查镜像
按理说,网络重装下载的是原始的镜像,不太可能出现问题。但在实际的使用过程当中,当我直接应用镜像安装时,是可以直接获取到IP v6地址的。于是,我手动挂挂载了厂商的镜像,通过vnc进行了手动安装,但还是没能获取到ipv6。
除了直接使用厂商的镜像安装之外,通过网络安装,我还选择了手动模式,可见这不是安装镜像的问题。
二、检查配置
一开始我觉得是没有获取到IP地址的问题,所以我将IP地址设置为固定ip。cd /etc/network && sudo cp interfaces interfaces.old
nano interfaces
auto ens18
iface ens18 inet static
address 厂商给的ipv6地址
netmask 255.255.255.0(对应修改)
gateway 192.168.0.1(对应修改)
but,还是无法正常访问。.随后我将系统还原为厂商镜像,在正常访问的镜像系统中,我查看了网络设置:source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens18
iface ens18 inet dhcp
这就十分让人费解了,因为这个配置嗯跟网络进行安装是一模一样的,所以还是在其他地方需要设置一下。
三、解决问题
1、执行如下命令,查看当前云服务器是否启用IPv6。ip addr
如果没有开启IPv6协议栈,则只能看到IPv4地址,如果已开启IPv6协议栈,则可以看到LLA地址(fe80开头)有inet6字样开头
2、开启Linux虚拟机IPv6协议栈。
确认内核是否支持IPv6协议栈,执行如下命令sysctl –a | grep ipv6
如果没有任何输出,说明内核不支持ipv6协议栈,需要先加载IPv6模块modprobe ipv6
修改/etc/sysctl.conf配置文件,增加如下配置:net.ipv6.conf.all.disable_ipv6=0
保存配置并退出,然后执行如下命令,加载配置sysctl –p
其实大部分的公共镜像都已经开启了
划重点划重点!!
编辑 /etc/network/interfaces 文件,使之包含以下内容:auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp
pre-up sleep 3
如果有多个网卡,则在/etc/network/interfaces文件中,增加对应网卡的配置,以eth1为例,需要增加:auto eth1
iface eth1 inet dhcp
iface eth1 inet6 dhcp
pre-up sleep 3
重启网络后,就发现正常了!!注意不是所有的网卡都是eth开头,比如我的是ens18,注意做好修改。