admin管理员组

文章数量:1530517

2024年7月31日发(作者:)

彻底解决linux系统有ipv6地址但不能用的问题

问题背景

最近在做的项目需要使用google仓库里的镜像,所以需要用到

ipv6来拉取镜像。

我使用的是vmware虚拟机上的ubuntu16.04 linux系统,在用

桥接模式连上校园网之后,可以看到虚拟机被分配了ipv6地址,但是

用ping6 来测试始终都ping不通,在我花了两天

尝试了网上说的几乎所有的方法都没有成功之后,我决定彻底了解一

下linux的网络配置,再来解决问题。

linux网络配置详解

关于这一点,我参考了这篇文章:

Ubuntu的网络配置详解

当然在实际做的过程发现了和文章的一些出入,以下我简短的总

结一下几个需要用到的文件:

/etc/hosts

/etc/

/etc/network/interfaces

/etc/

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

5

6

7

8

这个文件主要功能是域名解析时使用的,如果你对域名解析不熟

悉,可以这么理解:

你在浏览器里输入网址的时候输入的是类似于

之类的域名,但是实际上寻址是靠ip地址寻址,所以就需要一个解析

器,将与该网站服务器的ip对应起来,这就叫域名

解析。 linux下域名解析有两种途径,一种叫本地解析,就是利用这个

文件里的内容解析,另一种叫dns解析,是在dns服务器中查询ip。

该文件会将右边的域名,对应到左边的ip地址上去,可以看到默

认情况下,localhost对应的域名为127.0.0.1,ubuntu(该域名为主

机名,可以在/etc/hostname中更改)对应的域名为127.0.1.1

而下面几行对应的是ipv6的域名解析。

注意:网上很多教程提到用改hosts文件的方式来获取ip,我个

人是不太建议这种方式的,因为很多情况下你以为ipv6一切正常,但

其实根本没有连接到dns服务器上,只是hosts文件列的比较全而已

2. /etc/

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. /etc/

5. 该文件也是经常容易出问题的文件,如果你一开始配置的好好

的,重启网卡,或者重启计算机后网络就出问题了,很有可能就和这

个文件有关。

6. 该文件是用来配置dns服务器ip地址信息的文件,配置方式什

么的我推荐的那篇文章里就有讲到,不再赘述,需要注意的是该文件

不建议手动修改,因为该文件会根据所在的网络环境,自动更新,覆

盖你的手动配置,所以说如果需要手动配置dns服务器,在配置

/etc/network/interfaces时就可以配置好。

有了上述相关知识,再解决问题就会容易很多。

查找问题

首先我的虚拟机是存在ipv6的地址的,而且我用主机ping是能

够成功ping通Ipv6的服务器的,我怀疑是虚拟机的dns服务器没有

配置好的问题,我尝试找到了的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/interfaces等文件遭到修改就会根据系

统文件配置来配置网络,但是从我目前的状况来看,很显然系统的网

络配置不是从我修改的文件来配置的,所以我先关闭了network

manager。

/etc/init.d/network-manager stop

网上说此时查看其配

到/etc/NetworkManager/

managed=false,但显然我的nm的配置文件并没有受刚才的指令影

响,于是我手动修改了该配置文件。同时将/etc/network/interfaces

里的配置都改回dhcp方式,重启虚拟机运行。

问题完美解决。

本文标签: 配置文件网络方式服务器