彻底解决linux系统有ipv6地址但不能用的问题
问题背景
最近在做的项目需要使用google仓库里的镜像,所以需要用到ipv6来拉取镜像。
我使用的是vmware虚拟机上的ubuntu16.04 linux系统,在用桥接模式连上校园网之后,可以看到虚拟机被分配了ipv6地址,但是用le来测试始终都ping不通,在我花了两天尝试了网上说的几乎所有的方法都没有成功之后,我决定彻底了解一下linux的网络配置,再来解决问题。
linux网络配置详解
关于这一点,我参考了这篇文章:
Ubuntu的网络配置详解
当然在实际做的过程发现了和文章的一些出入,以下我简短的总结一下几个需要用到的文件:
/etc/hosts
/f
/etc/network/interfaces
/f
1./etc/hosts
2.该文件默认内容如下:
127.0.0.1 localhost127.0.1.1 ubuntu#The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters
1
2
3
4
5ubuntu网络配置
6
7
8
这个文件主要功能是域名解析时使用的,如果你对域名解析不熟悉,可以这么理解:
你在浏览器里输入网址的时候输入的是类似于www.baidu之类的域名,但是实际上寻址是靠ip地址寻址,所以就需要一个解析器,将www.baidu与该网站服务器的ip对应起来,这就叫域名解析。 linux下域名解析有两种途径,一种叫本地解析,就是利用这个文件里的内容解析,另一种叫dns解析,是在dns服务器中查询ip。
该文件会将右边的域名,对应到左边的ip地址上去,可以看到默认情况下,localhost对应的域名为127.0.0.1,ubuntu(该域名为主机名,可以在/etc/hostname中更改)对应的域名为1
27.0.1.1
而下面几行对应的是ipv6的域名解析。
注意:网上很多教程提到用改hosts文件的方式来获取ip,我个人是不太建议这种方式的,因为很多情况下你以为ipv6一切正常,但其实根本没有连接到dns服务器上,只是hosts文件列的比较全而已
2./f
3.该文件用来指定域名的解析顺序,上文提到域名解析有两种方式,该文件默认规定域名解析时现从hosts文件,不到在到dns服务器上。一般不建议修改该文件
4./etc/network/interfaces
5.这是最重要的文件,大部分的修改都是在这里进行。
6.该文件是确定每个网络的IP类型,IP地址,子网掩码,网关IP,广播地址,MAC物理地址等信息,具体的设置方式网上有很多讲解,就不在此展开
7.我个人一般是用dhcp方式(动态获取)获取所有的信息
8.我的interfaces文件如下:
auto loiface lo inet loopbackauto ens33iface ens33 inet dhcpiface ens33 inet6 dhcp
1
2
3
4
5
6
auto关键字指明接下来配置的网卡,一般前两行都是本地网络循环,不用修改,下面的ens33是我的以太网网络接口(可以用ifconfig指令查到),
iface关键字后指明网卡名称,然后就可以对该网络进行配置,无论是ipv4还是ipv6我都设置成了dhcp(动态获取Ip)方式。
4./f
5.该文件也是经常容易出问题的文件,如果你一开始配置的好好的,重启网卡,或者重启计算机后网络就出问题了,很有可能就和这个文件有关。
6.该文件是用来配置dns服务器ip地址信息的文件,配置方式什么的我推荐的那篇文章里就有讲到,不再赘述,需要注意的是该文件不建议手动修改,因为该文件会根据所在的网络环境,自动更新,覆盖你的手动配置,所以说如果需要手动配置dns服务器,在配置/etc/network/interfaces时就可以配置好。
有了上述相关知识,再解决问题就会容易很多。
查问题
首先我的虚拟机是存在ipv6的地址的,而且我用主机ping是能够成功ping通Ipv6的服务器的,
我怀疑是虚拟机的dns服务器没有配置好的问题,我尝试到了le的Ipv6地址:2404:6800:4008:800::200e,用虚拟机直接ping这个Ip是能够成功的,这样就锁定了是dns域名解析的问题。
但是在修改/etc/network/interfaces来手动设置dns服务器的过程中发现不管怎么改,网络状态都没变,后来我甚至将ipv6从dhcp方式改成手动配置方式来配置,同样没有用,经过查询才知道linux系统的两种网络配置方式。
linux系统的两种网络配置方式
1.系统文件配置
2.利用Network Manager等第三方可视化应用配置
系统文件配置已经介绍的足够多了,除了手动配置之外,linux系统的网络配置还可以靠可视化的第三方软件来配置。
根据网上的说法,系统默认会使用Nerwork Manager等应用的配置,但是一旦/etc/network/in
terfaces等文件遭到修改就会根据系统文件配置来配置网络,但是从我目前的状况来看,很显然系统的网络配置不是从我修改的文件来配置的,所以我先关闭了network manager。
/etc/init.d/network-manager stop
网上说此时查看其配置文件/etc/f可以看到managed=false,但显然我的nm的配置文件并没有受刚才的指令影响,于是我手动修改了该配置文件。同时将/etc/network/interfaces里的配置都改回dhcp方式,重启虚拟机运行。
问题完美解决。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。