注: 本文为 “Linux IPv6 ” 相关文章合辑。
略作重排,未整理去重。
如有内容异常,请看原文。
Linux 服务器设备上配置 IPv6 地址方法
aischang 于 2018-08-25 12:56:25 发布
1. 手动执行命令配置:
ifconfig em1 inet6 add 8888::a7/96 up
2. 删除网卡的 IPv6 地址方法:
ifconfig em1 inet6 del 8888::a7
3. 通过写配置文件配置:
IPV6INIT=yes // 网卡初始化 IPv6 协议栈
IPV6_AUTOCONF=no
IPV6ADDR=8888::a6/96 // 配置 IPv6 地址
IPV6_DEFAULTGW=8888::1 // 配置 IPv6 网关
4. 配置样例
如下所示:

Linux 配置 IPv6 地址详细教程
温殿飞于 2020-10-30 11:48:20 发布
1. 自动获取 IPv6 地址
- 修改
/etc/sysconfig/network文件,修改如下字段,不存在则手动添加,部分系统默认是开启的(加上也不影响)
NETWORKING_IPV6=yes
- 修改
/etc/sysconfig/network-script/ifcfg-ethX文件,修改如下字段
IPV6INIT=yes (是否开机启用 IPv6 地址)
- 运行命令
service network restart
用命令 ifconfig -a 查看 IPv6 地址信息,系统会自动分配一个 “fe80:” 开头的本地链路地址。

2. 静态 IPv6 地址设置
- 修改
/etc/sysconfig/network文件,修改如下字段,不存在请手动添加,部分系统默认是开启的
NETWORKING_IPV6=yes
- 修改
/etc/sysconfig/network-script/ifcfg-ethX文件,修改如下字段,没有的手动添加
IPV6INIT=yes (是否开机启用 IPv6 地址)
IPV6_AUTOCONF=no (是否使用 IPv6 地址的自动配置)
IPV6_FAILURE_FATAL=no(如果配置失败,不会关闭网口,保证 IPv4 的配置还能生效)
IPV6ADDR=2001:250:250:250:250:250:250:222/64 (IPv6 地址)
IPV6_DEFAULTGW=2001:250:250:250::1(IPv6 地址网关)
- 然后运行命令
service network restart
用命令 ifconfig 查看 IPv6 地址信息,系统不仅会自动分配一个 “fe80:” 开头的本地链路地址,还有一个我们手动配置的全球唯一的 IPv6 地址。

3. 配置临时的 IPv6 地址
Linux 下 IPv6 配置:
查看系统是否加载了 IPv6 模块
# lsmod
如果没有加载执行该命令加载
# modprobe ipv6
加载成功后配置临时 IPv6 地址
- 配置临时的 IPv6 地址,配置的地址在系统重启或者网卡重启后失效
# ifconfig eth0 inet6 add 2001:250:250:250:250:250:250:222/64
- 为网卡 ethX 添加 IPv6 网关,配置的网关在系统重启或者网卡重启后失效
# route -A inet6 add default gw 2001:250:250:250::1 dev ethX
- ping 一个可连通的 IPv6 地址
# ping6 2001:250:250:250:250:250:250:222
在 Linux 下禁用 IPv6
作者:Dan Nanni
译者:LCTT ZTinoZ
| 2015-05-09 20:40
问:发现一个应用程序在尝试通过 IPv6 建立连接,但是由于本地网络不允许分配 IPv6 的流量,IPv6 连接会超时,应用程序的连接会回退到 IPv4,这样就会造成不必要的延迟。
由于目前对 IPv6 没有任何需求,所以想在 Linux 主机上禁用 IPv6。有什么比较合适的方法呢?
IPv6 被认为是 IPv4——互联网上的传统 32 位地址空间——的替代产品,它用来解决现有 IPv4 地址空间即将耗尽的问题。然而,由于已经有大量主机、设备用 IPv4 连接到了互联网上,所以想在一夜之间将它们全部切换到 IPv6 几乎是不可能的。
许多 IPv4 到 IPv6 的转换机制(例如:双协议栈、网络隧道、代理)已经被提出来用来促进 IPv6 能被采用,并且很多应用也正在进行重写,如我们所提倡的,来增加对 IPv6 的支持。有一件事情可以确定,就是在可预见的未来里 IPv4 和 IPv6 势必将共存。
理想情况下,向 IPv6 过渡的进程不应该被最终的用户所看见,但是 IPv4/IPv6 混合环境有时会让你碰到各种源于 IPv4 和 IPv6 之间不经意间的相互碰撞的问题。例如,你会碰到应用程序超时的问题,比如 apt-get 或 ssh 尝试通过 IPv6 连接失败、DNS 服务器意外清空了 IPv6 的 AAAA 记录、或者你支持 IPv6 的设备不兼容你的互联网服务提供商遗留下的 IPv4 网络,等等。
当然这不意味着你应该盲目地在你的 Linux 机器上禁用 IPv6。鉴于 IPv6 许诺的种种好处,作为社会的一份子我们最终还是要充分拥抱它的,但是作为给最终用户进行故障排除过程的一部分,如果 IPv6 确实是罪魁祸首,那你可以尝试去关闭它。
这里有一些让你在 Linux 中部分(例如:对于某个特定的网络接口)或全部禁用 IPv6 的小技巧。这些小贴士应该适用于所有主流的 Linux 发行版,包括 Ubuntu、Debian、Linux Mint、CentOS、Fedora、RHEL 以及 Arch Linux。
查看 IPv6 在 Linux 中是否被启用
所有现代 Linux 发行版默认都自动启用 IPv6。为了能看到 IPv6 在你的 Linux 中是否被激活,可以使用 ifconfig 或 ip 命令。如果你在输入这些命令之后看到 “inet6” 字样的输出,那就意味着你的 Linux 系统启用了 IPv6。
$ ifconfig

$ ip addr

临时禁用 IPv6
如果你想要在你的 Linux 系统上临时关闭 IPv6,你可以用 /proc 文件系统。“临时” 的意思是我们所做的禁用 IPv6 的更改在系统重启后将不被保存。IPv6 会在你的 Linux 机器重启后再次被启用。
要将一个特定的网络接口禁用 IPv6,使用以下命令:
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/<interface-name>/disable_ipv6'
例如,将 eth0 接口禁用 IPv6:
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6'

重新启用 eth0 接口的 IPv6:
$ sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6'
如果你想要将整个系统所有接口(包括回环接口)禁用 IPv6,使用以下命令:
$ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'
永久禁用 IPv6
以上方法是不能永久禁用 IPv6 的,你一旦重启系统 IPv6 还是会被启用。如果你想要永久关闭它,有几个方法你可以试试。
方法一
第一种方法是通过 /etc/sysctl.conf 文件对 /proc 进行永久修改。
换句话说,就是用文本编辑器打开 /etc/sysctl.conf 然后添加以下内容:
# 禁用整个系统所有接口的 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用某一个指定接口的 IPv6 (例如:eth0, lo)
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
在 /etc/sysctl.conf 使这些更改生效,运行以下命令:
$ sudo sysctl -p /etc/sysctl.conf
或者直接重启。
方法二
另一个永久禁用 IPv6 的方法是在开机的时候传递一个必要的内核参数。
用文本编辑器打开 /etc/default/grub 并给 GRUB_CMDLINE_LINUX 变量添加 “ipv6.disable=1”。
$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX="xxxxx ipv6.disable=1"
上面的 “xxxxx” 代表任何已有的内核参数,在它后面添加 “ipv6.disable=1”。

最后,不要忘记用以下方法保存对 GRUB/GRUB2 的修改:
Debian、Ubuntu 或 Linux Mint 系统:
$ sudo update-grub
Fedora、CentOS/RHEL 系统:
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
现在只要你重启你的 Linux 系统,IPv6 就会完全被禁用。
禁用 IPv6 之后的其他可选步骤
这里有一些在你禁用 IPv6 后需要考虑的可选步骤,这是因为当你在内核里禁用 IPv6 后,其他程序也许仍然会尝试使用 IPv6。在大多数情况下,应用程序的这种行为不太会影响到什么,但是出于效率或安全方面的原因,你可以为他们禁用 IPv6。
/etc/hosts
根据你的设置,/etc/hosts 会包含一条或多条 IPv6 的 hosts 和它们的地址。用文本编辑器打开 /etc/hosts 并注释掉包含 IPv6 hosts 的脚本行。
$ sudo vi /etc/hosts
# comment these IPv6 hosts
# ::1 ip6-localhost ip6-loopback
# fe00::0 ip6-localnet
# ff00::0 ip6-mcastprefix
# ff02::1 ip6-allnodes
# ff02::2 ip6-allrouters
Network Manager
如果你在用 NetworkManager 来管理你的网络设置,你可以在 NetworkManager 里禁用 IPv6。在 NetworkManager 打开 wired connection,点击 “IPv6 Settings” 选项并在 “Method” 一栏选择 “Ignore”,保存退出。

SSH 服务
默认情况下,OpenSSH 服务 (sshd) 会去尝试捆绑 IPv4 和 IPv6 的地址。
要强制 sshd 只捆绑 IPv4 地址,用文本编辑器打开 /etc/ssh/sshd_config 并添加以下行。inet 只适用于 IPv4,而 inet6 是适用于 IPv6 的。
$ sudo vi /etc/ssh/sshd_config
AddressFamily inet
然后重启 sshd 服务。
IPv6 排障工具之 ping6 完整过程细节剖析
腾讯云开发者于 2020-01-13 21:05:01 发布
本文作者:腾讯云售后架构师 李彬文
导语
通过本文你将了解到 ping 的原理,什么是 ICMPv6 协议,以及一个完整的 ping6 过程究竟是怎样发生的。
一、ICMPv6 简介
ICMPv6(Internet Control Message Protocol for the IPv6)是 IPv6 的基础协议之一。ICMPv6 具备向源地址报告关于向目的地传输 IPv6 数据包过程中的差错信息和控制信息。
ICMPv6 定义了一些消息,如:目的不可达、数据包超长、超时、响应请求和响应应答等。在 IPv6 中,ICMPv6 除了提供 ICMPv4 常用的功能之外,还有其他一些功能,如邻接点发现、无状态地址配置(包括重复地址检测)、PMTUD 等。
二、ICMPv6 报文格式
ICMPv6 报文格式如下图所示:

ICMPv6 属于 OSI 七层协议栈的网络层,虽然和 IPv6 属于同一层,但是 封装时必须先封装 IPv6 报文头部。
ICMPv6 字段注释:
-
Type:表明消息的类型,0 至 127 表示差错报文类型,128 至 255 表示信息报文类型。
-
Code:表示此消息类型细分的类型。
-
Checksum:表示 ICMPv6 报文的校验和。
三、ICMPv6 差错报文
ICMPv6 差错报文用于报告在转发 IPv6 数据包过程中出现的错误,可以分为以下 4 种:
1. 目的不可达错误报文
在 IPv6 中间设备转发 IPv6 报文过程中,当设备发现目的地址不可达时,就会向发送报文的源地址发送 ICMPv6 目的不可达错误报文,同时报文中会携带引起该错误报文的具体原因。
目的不可达错误报文的 Type 字段值为 1,根据错误具体原因又可以细分为:
-
Code=0:没有到达目标设备的路由。
-
Code=1:与目标客户端的通信被管理策略禁止。
-
Code=2:未指定。
-
Code=3:目的 IP 地址不可达。
-
Code=4:目的端口不可达。
2. 数据包过大错误报文
在 IPv6 中间设备转发 IPv6 报文过程中,发现报文超过出接口的链路 MTU 时,则向发送报文的源地址发送 ICMPv6 数据包过大错误报文,其中携带出接口的链路 MTU 值。数据包过大错误报文是 Path MTU 发现机制的基础。
数据包过大错误报文的 Type 字段值为 2,Code 字段值为 0。
3. 时间超时错误报文
在 IPv6 报文收发过程中,当设备收到 Hop Limit 字段值等于 0 的数据包,或者当设备将 Hop Limit 字段值减为 0 时,会向发送报文的源地址发送 ICMPv6 超时错误报文。对于分段重组报文的操作,如果超过定时时间,也会产生一个 ICMPv6 超时报文。
时间超时错误报文的 Type 字段值为 3,根据错误具体原因又可以细分为:
Code=0:在传输中超越了跳数限制。
Code=1:分片重组超时。
4. 参数错误报文
当目的节点收到一个 IPv6 报文时,会对报文进行有效性检查,如果发现问题会向报文的源地址回应一个 ICMPv6 参数错误差错报文。
参数错误报文的 Type 字段值为 4,根据错误具体原因又可以细分为:
Code=0:IPv6 基本头或扩展头的某个字段有错误。
Code=1:IPv6 基本头或扩展头的 NextHeader 值不可识别。
Code=2:扩展头中出现未知的选项。
四、ICMPv6 信息报文
ICMPv6 信息报文提供诊断功能和附加的主机功能,比如组播侦听发现和邻居发现。
常见的 ICMPv6 信息报文主要包括回应请求报文(Echo Request)和回应应答报文(Echo Reply),这两种报文也就是通常使用的 Ping6 报文。可以分为以下 2 种:
1. 回应请求报文
回应请求报文用于发送到目标地址,以使目标地址立即发回一个回应应答报文。回应请求报文的 Type 字段值为 128,Code 字段的值为 0。
2. 回应应答报文
当收到一个回应请求报文时,ICMPv6 会用回应应答报文响应。回应应答报文的 Type 字段的值为 129,Code 字段的值为 0。
五、ping6 完整过程梳理
如下图所示,云主机 CVM1 要和 CVM2 通信(假设 CVM 的 IPv6 地址和 VPC 已经按文档
- 云服务器 配置 IPv6 地址_腾讯云
https://cloud.tencent.com/document/product/213/113687
正常配置且 IPv6 路由和地址检查都正常)。

从 CVM1 输入命令 ping6 2402:4e00:1200:2001::2020 -c 10,输出的结果如下图所示:

这是一次成功的 ping6 测试,但是这次 ping6 的细节大家也许不太了解。接下来我们主要按 OSI 协议栈来剖析整个 ping6 的工作过程以及整个过程会用到的相关报文。

Step1:ICMPv6 创建一个 56 字节的回应请求:

Step2:ICMPv6 在 56 字节的请求数据基础上加上 ICMPv6 头部:

回应请求报文的 Type 字段值为 128,Code 字段的值为 0,然后交给 IPv6 协议封装;
Step3:IPv6 协议在 ICMPv6 基础上增加 IPv6 头部:(网络层封装)

封装的源 IPv6 地址是接口网卡 v6 地址:2402:4e00:1200:2002::2011
封装的目标 IPv6 地址:2402:4e00:1200:2001::2020
Step4:根据目标 IPv6 地址和本地网段前缀做对比,发现目标地址不属于本地网段 2402:4e00:1200:2002::/64。只能查路由表进行跨网段路由,查找路由表发现没有匹配的明细路由,最终只能选择默认路由 ::/0 进行转发。

Step5:通过默认路由找到可以通过网卡 eth0 进行转发,但是需要数据链路层封装成功后才能从网卡转发出去。数据链路层封装的源 MAC 就是出接口 eth0 的 MAC 地址,目标 MAC 地址要从 ip -6 neigh 表(类似 IPv4 的 ARP 表)中查询到。

这里并没有学习到目标 IPv6 地址 2402:4e00:1200:2001::2020 对应的 MAC 地址,导致无法进行数据链路层封装。
Step6:为了学习到目标地址 2402:4e00:1200:2001::2020 对应的 MAC 地址,首先发送 NS 报文:Type 字段值为 135,Code 字段值为 0,在地址解析中的作用类似于 IPv4 中的 ARP 请求报文。

这里面存在着两个问题,下面我们也会给出相应的解释:
(1)被请求节点组播 IPv6 地址 FF02::1:FF00:2020 如何生成?
IPv6 中没有广播地址,也不使用 ARP。但是仍然需要从 IP 地址解析到 MAC 地址的功能。
在 IPv6 中,这个功能通过邻居请求 NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个 IPv6 地址对应的 MAC 地址时,会发送 NS 报文,该报文的目的 IP 就是需要解析的 IPv6 地址对应的被请求节点组播地址,只有具有该组播地址的节点会检查处理。
被请求节点组播地址由前缀 FF02::1:FF00:0/104 和目标单播地址的最后 24 位组成。由于目标单播地址是 2402:4e00:1200:2001::2020, 所以生成的被请求节点组播地址是:FF02::1:FF00:2020。
(2)被请求节点组播 MAC 地址 33:33:ff:00:20:20 如何生成?
组播 MAC 地址 48bit 的前 24bit 默认固定是 33:33:ff,后半部分是被请求节点组播地址的后 24bit,所以生成的组播 MAC 地址是 33:33:ff:00:20:20。
Step7:CVM1 发送的 NS 请求报文给到虚拟网关路由器,虚拟网关路由器收到 NS 报文后查看路由表匹配到路由 2402:4e00:1200:2001::/64,代理目标地址回复一个 NA 报文:Type 字段值为 136,Code 字段值为 0,在地址解析中的作用类似于 IPv4 中的 ARP 应答报文。

IPv6 地址解析示意图:

学习到目标地址 2402:4e00:1200:2001::2020 对应的 MAC 地址是 fe:ee:1e:1b:cb:e0。学习到的 MAC 存入到 IPv6 邻居表中:

Step8:回到 Step5 有了目标 IPv6 地址 2402:4e00:1200:2001::2020 对应的 MAC 地址可以进行数据链路层封装,然后从网卡 eth0 发出第一个 ICMPv6 的回应请求报文:

从第一个 NS 到第一个 ICMPv6 回应请求的发出顺序如下:(CVM1 的网卡抓包)

Step9:该回应请求报文到达虚拟网关路由器 A 后查路由表找到对应的 overlay 网络隧道(这里的虚拟网关和 overlay 网络暂不用展开)转发到目标虚拟网关路由器 B,然后由虚拟网关路由器 B 转发给 CVM2 的 eth0 网卡。

Step10:CVM2 的网卡 eth0 收到回应请求报文后通过二层帧头的 type 字段,确认递交给 IPv6 协议处理。

Step11:IPv6 协议处理头部,检查目标 IP 正确,检查下一个协议头部类型是 ICMPv6。


Step12:当收到一个回应请求报文时,ICMPv6 会用回应应答报文响应。回应应答报文的 Type 字段的值为 129,Code 字段的值为 0。
CVM2 按同样的方式去查路由表封装网络层报文,按 Step5 到 Step7 解析到 MAC 后,查 ipv6 邻居表封装数据链路层的目的 MAC。
具体 CVM2 从收到第一个回应请求报文到发出第一个回应应答报文顺序如下:

NS 报文:

NA 报文:

学习到 MAC 后发送回应应答报文:

Step13:该回应应答报文到达虚拟网关路由器 B 后查路由表找到对应的 overlay 网络隧道转发到目标虚拟网关路由器 A,然后由虚拟网关路由器 A 转发给 CVM1 的 eth0 网卡。
Step14:CVM1 和 CVM2 以及虚拟路由器 A 和 B 都已经缓存了对应 IPv6 地址的 MAC,后续封装无效再发送 NS 与 NA,直接数据链路层封装后路由转发即可。
CVM1 完整的 10 个 ping6 报文截图如下:

CVM2 完整的 10 个 ping6 报文截图如下:

CVM1 的 ping6 成功的截图如下:

到此一次完整的 ping6 的过程就结束了,同样的道理,其他协议报文也是有这样的一个封装和解封装过程,希望本文能够让对大家有所帮助。
彻底解决 Linux 系统有 IPv6 地址但不能用的问题
一花 e 世界于 2019-02-01 21:12:04 发布
问题背景
最近在做的项目需要使用 Google 仓库里的镜像,所以需要用到 IPv6 来拉取镜像。
我使用的是 VMware 虚拟机上的 Ubuntu 16.04 Linux 系统,在用桥接模式连上校园网之后,可以看到虚拟机被分配了 IPv6 地址,但是用 ping6 ipv6.google.com 来测试始终都 ping 不通,在我花了两天尝试了网上说的几乎所有的方法都没有成功之后,我决定彻底了解一下 Linux 的网络配置,再来解决问题。
Linux 网络配置详解
关于这一点,我参考了这篇文章:
- Ubuntu 的网络配置详解
https://blog.youkuaiyun.com/GDUTLYP/article/details/73087476
当然在实际做的过程中发现了和文章的一些出入,以下我简短的总结一下几个需要用到的文件:
/etc/hosts/etc/host.conf/etc/network/interfaces/etc/resolv.conf
1. /etc/hosts
该文件默认内容如下:
127.0.0.1 localhost
127.0.1.1 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这个文件主要功能是域名解析时使用的。如果对域名解析不熟悉,可以这样理解:
你在浏览器里输入网址的时候输入的是类似于 www.baidu.com 之类的域名,但是实际上寻址是靠 IP 地址寻址,所以就需要一个解析器,将 www.baidu.com 与该网站服务器的 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/host.conf
该文件用来指定域名的解析顺序。上文提到域名解析有两种方式,该文件默认规定域名解析时先从 hosts 文件找,找不到再从 DNS 服务器上找。一般不建议修改该文件。
3. /etc/network/interfaces
这是最重要的文件,大部分的修改都是在这里进行。
该文件是确定每个网络的 IP 类型,IP 地址,子网掩码,网关 IP,广播地址,MAC 物理地址等信息,具体的设置方式网上有很多讲解,就不在此展开。
我个人一般是用 DHCP 方式(动态获取)获取所有的信息。我的 interfaces 文件如下:
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet dhcp
iface ens33 inet6 dhcp
auto 关键字指明接下来配置的网卡,一般前两行都是本地网络循环,不用修改。下面的 ens33 是我的以太网网络接口(可以用 ifconfig 指令查到),iface 关键字后指明网卡名称,然后就可以对该网络进行配置,无论是 IPv4 还是 IPv6 我都设置成了 DHCP(动态获取 IP)方式。
4. /etc/resolv.conf
该文件也是经常容易出问题的文件,如果你一开始配置的好好的,重启网卡,或者重启计算机后网络就出问题了,很有可能就和这个文件有关。
该文件是用来配置 DNS 服务器 IP 地址信息的文件。需要注意的是该文件不建议手动修改,因为该文件会根据所在的网络环境,自动更新,覆盖你的手动配置。所以说如果需要手动配置 DNS 服务器,在配置 /etc/network/interfaces 时就可以配置好。
有了上述相关知识,再解决问题就会容易很多。
查找问题
首先我的虚拟机是存在 IPv6 的地址的,而且我用主机 ping 是能够成功 ping 通 IPv6 的服务器的,我怀疑是虚拟机的 DNS 服务器没有配置好的问题,我尝试找到了 ipv6.google.com 的 IPv6 地址:
2404:6800:4008:800::200e
用虚拟机直接 ping 这个 IP 是能够成功的,这样就锁定了是 DNS 域名解析的问题。
但是在修改 /etc/network/interfaces 来手动设置 DNS 服务器的过程中发现不管怎么改,网络状态都没变,后来我甚至将 IPv6 从 DHCP 方式改成手动配置方式来配置,同样没有用,经过查询才知道 Linux 系统的两种网络配置方式。
Linux 系统的两种网络配置方式
- 系统文件配置
- 利用 Network Manager 等第三方可视化应用配置
系统文件配置已经介绍的足够多了,除了手动配置之外,Linux 系统的网络配置还可以靠可视化的第三方软件来配置。
根据网上的说法,系统默认会使用 Network Manager 等应用的配置,但是一旦 /etc/network/interfaces 等文件遭到修改就会根据系统文件配置来配置网络,但是从我目前的状况来看,很显然系统的网络配置不是从我修改的文件来配置的,所以我先关闭了 Network Manager。
/etc/init.d/network-manager stop
网上说此时查看其配置文件 /etc/NetworkManager/NetworkManager.conf,可以看到 managed=false,但显然我的 NM 的配置文件并没有受刚才的指令影响,于是我手动修改了该配置文件。
同时将 /etc/network/interfaces 里的配置都改回 DHCP 方式,重启虚拟机运行。
问题完美解决。
【故障解决】Linux 机器经常会出现 IPv6 无法访问自己网关,要重启机器才可以修复问题
一念一生~one 于 2020-11-20 12:43:31 发布
1. 故障现象
有几台业务虚机,经常会出现 IPv6 无法访问自己网关,要重启机器才可以修复。
2. 解决过程
虚拟化层排查下来,虚拟化平台、宿主机、网络负载,没看出什么问题。
但查看故障机器系统日志 /var/log/messages 里的信息,发现一直报
“Nov 18 15:32:35 hostname kernel: Route cache is full: consider increasing sysctl net.ipv [416].route.max_size.”log。

我个人判断可能是:
- 是否修改过内核参数(关于网络层面的)
- 机器 IPv6 配置是否存在问题
经询问其他同事,给出参考解决方法如下:
sysctl -a | grep route.max_size
业务侧反馈信息如下:
net.ipv6.route.max_size 值为 4096

最后修改配置如下:
vim /etc/sysctl.conf
将 net.ipv6.route.max_size = 40960 参数值修扩大 10 倍;
然后执行
sysctl -p
可能需要重启下网络
个人认为,此故障可能很大,就是因为该因素导致的,待后续进一步观察。
3. 总结
- 通过本次故障,要查找发生故障是否存在共性,以排除干扰因素。
- 要善于对系统日志进行分析。
- 对于如何配置机器 IPv6 要进行总结。
via:
-
Linux 服务器设备上配置 IPV6 地址方法_服务器网卡配置 ipv6 地址 - 优快云 博客 aischang 于 2018-08-25 12:56:25 发布
https://blog.youkuaiyun.com/zhangmingcai/article/details/82050390 -
linux 配置 IPV6 地址详细教程_linux 主机 ipv6 地址怎么设置 - 优快云 博客 温殿飞于 2020-10-30 11:48:20 发布
https://blog.youkuaiyun.com/qq_26711103/article/details/103823918 -
彻底解决 linux 系统有 ipv6 地址但不能用的问题_linux 配置 ipv6 地址不生效 - 优快云 博客 一花 e 世界于 2019-02-01 21:12:04 发布
https://blog.youkuaiyun.com/weixin_41603832/article/details/86744122 -
via: http://ask.xmodulo.com/disable-ipv6-linux.html(链接已沉寂)
作者:Dan Nanni 译者:ZTinoZ 校对:wxy -
IPv6 排障工具之 ping6 完整过程细节剖析 - 优快云 博客 腾讯云开发者于 2020-01-13 21:05:01 发布
https://blog.youkuaiyun.com/QcloudCommunity/article/details/103966719
----------------------------- -
Linux 配置 IPv4 或 IPv6 地址 - Librarookie - 博客园 发布于@ 2022-05-19 14:29 Librarookie
https://www.cnblogs.com/librarookie/p/16288388.html -
linux 上配置 IPv6 地址详细步骤及工具连接 IPv6 地址方法_linux ipv6-优快云 博客 (通过 secretCRT 工具连接 IPv6 地址方法)
https://blog.youkuaiyun.com/2301_79054215/article/details/138351121 -
IPv6: 如何正确 ping ipv6 地址?作者: lesca 发布时间: 2012-06-08 12:13
https://www.lesca.cn/archives/how-to-ping-ipv6-address.html -
IPv6 Ping 测试 | IP 查询 (ipw.cn)
https://ipw.cn/ipv6ping/
9866

被折叠的 条评论
为什么被折叠?



