Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障
注: 本文为 “Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | 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 地址
1)修改 /etc/sysconfig/network
文件,修改如下字段,不存在则手动添加,部分系统默认是开启的(加上也不影响)
NETWORKING_IPV6=yes
2)修改 /etc/sysconfig/network-script/ifcfg-ethX
文件,修改如下字段
IPV6INIT=yes (是否开机启用 IPV6 地址)
3)运行命令 service network restart
用命令 ifconfig -a
查看 IPV6 地址信息,系统会自动分配一个 “fe80:” 开头的本地链路地址。
2、静态 IPV6 地址设置
1)修改 /etc/sysconfig/network
文件,修改如下字段,不存在请手动添加,部分系统默认是开启的
NETWORKING_IPV6=yes
2)修改 /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 地址网关)
3)然后运行命令 service network restart
用命令 ifconfig 查看 IPV6 地址信息,系统不仅会自动分配一个 “fe80:” 开头的本地链路地址,还有一个我们手动配置的全球唯一的 IPv6 地址。
3、配置临时的 IPV6 地址
Linux 下 IPV6 配置:
查看系统是否加载了 IPV6 模块
\# lsmod
如果没有加载执行该命令加载
\# modprobe ipv6
加载成功后配置临时 IPV6 地址
1)配置临时的 IPV6 地址,配置的地址在系统重启或者网卡重启后失效
\# ifconfig eth0 inet6 add 2001:250:250:250:250:250:250:222/64
2)为网卡 ethX 添加 IPV6 网关,配置的网关在系统重启或者网卡重启后失效
\# route -A inet6 add default gw 2001:250:250:250::1 dev ethX
3)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 已经按文档 https://cloud.tencent.com/document/product/213/40010 正常配置且 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 虚拟机上的 ubuntu16.04 linux 系统,在用桥接模式连上校园网之后,可以看到虚拟机被分配了 ipv6 地址,但是用 ping6 ipv6.google.com 来测试始终都 ping 不通,在我花了两天尝试了网上说的几乎所有的方法都没有成功之后,我决定彻底了解一下 linux 的网络配置,再来解决问题。
linux 网络配置详解
关于这一点,我参考了这篇文章:
- Ubuntu 的网络配置详解(链接已 404 )
https://blog.csdn.net/GDUTLYP/article/details/73087476t
当然在实际做的过程发现了和文章的一些出入,以下我简短的总结一下几个需要用到的文件:
/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 服务器上找。一般不建议修改该文件
/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)方式。
3. /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 系统的网络配置还可以靠可视化的第三方软件来配置。
根据网上的说法,系统默认会使用 Nerwork 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 无法访问自己网关,要重启机器才可以修复问题。-20201119
一念一生~one 于 2020-11-20 12:43:31 发布
1、故障现象
有几台业务虚机,经常会出现 ipv6 无法访问自己网关,要重启机器才可以修复。
2、解决过程
虚拟化层排查下来,虚拟化平台,宿主机,网络负载,没看出什么问题。
但查看故障机器系统日志 /var/log/messages 里的信息,发现一直报
“Nov 18 15:32:35 hostname kernel: Route cache is full: comsider increasing sysctl net.ipv [416].route.max_size.”log。
我个人判断可能是:
1,是否有修改过内核参数(关于网络层面的)
- 机器 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 地址 - CSDN 博客 aischang 于 2018-08-25 12:56:25 发布
https://blog.csdn.net/zhangmingcai/article/details/82050390 -
linux 配置 IPV6 地址详细教程_linux 主机 ipv6 地址怎么设置 - CSDN 博客 温殿飞于 2020-10-30 11:48:20 发布
https://blog.csdn.net/qq_26711103/article/details/103823918 -
彻底解决 linux 系统有 ipv6 地址但不能用的问题_linux 配置 ipv6 地址不生效 - CSDN 博客 一花 e 世界于 2019-02-01 21:12:04 发布
https://blog.csdn.net/weixin_41603832/article/details/86744122 -
via: http://ask.xmodulo.com/disable-ipv6-linux.html(链接已沉寂)
作者:Dan Nanni 译者:ZTinoZ 校对:wxy -
IPv6 排障工具之 ping6 完整过程细节剖析 - CSDN 博客 腾讯云开发者于 2020-01-13 21:05:01 发布
https://blog.csdn.net/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-CSDN 博客 (通过 secretCRT 工具连接 IPv6 地址方法)
https://blog.csdn.net/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/
相关文章:

Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障
注: 本文为 “Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障” 相关文章合辑。 Linux 服务器设备上配置 IPV6 地址方法 aischang 于 2018-08-25 12:56:25 发布 1. 手动执行命令配置: ifconfig em1 inet6 add 8888::a7/96 up2. 删…...

【YashanDB知识库】XMLAGG方法的兼容
本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802943.html?templateId1718516 【关键字】 XMLAGG方法的兼容 【问题描述】 崖山数据库不支持将XMLAGG相关的函数内容,需要替换成支持的功能函数WM_CONCAT(T.COLUMN_NAME…...

echarts加载区域地图,并标注点
效果如下,加载了南海区域的地图,并标注几个气象站点; 1、下载区域地图的JSON:DataV.GeoAtlas地理小工具系列 新建nanhai.json,把下载的JSON数据放进来 说明:如果第二步不打勾,只显示省的名字&a…...

echarts画风向杆
1.安装echarts 2.引入echarts 4.获取数据,转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…...

【LeetCode每日一题】LeetCode 345.反转字符串中的元音字母
LeetCode 345.反转字符串中的元音字母 题目描述 给定一个字符串 s,你需要反转字符串中所有的元音字母,并返回新的字符串。 元音字母是 a, e, i, o, u,这些字母的大小写都会被考虑。 示例 1: 输入: s "hello" 输出: "holle…...

蓝桥杯练习生第四天
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间&#x…...

cesium 常见的 entity 列表
Cesium 是一个用于创建3D地球和地图的开源JavaScript库。它允许开发者在Web浏览器中展示地理空间数据,并且支持多种类型的空间实体(entities)。 Entities是Cesium中用于表示地面上或空中的对象的一种高层次、易于使用的接口。它们可以用来表示点、线、多边形、模型等,并且可…...

Java旅程(五)Spring 框架与微服务架构 了解 JVM 内部原理和调优
在现代企业级应用中,Spring 框架和微服务架构已经成为主流技术,而 Java 虚拟机(JVM)的理解和调优对于保证应用的高性能和稳定性也至关重要。本篇博客将深入讲解 Spring 框架与微服务架构,并进一步探讨 JVM 内部原理和调…...

Niushop-master靶场漏洞
靶场搭建 将 niushop-master.zip 压缩包放到网站的根目录,解压后访问 浏览器访问 install.php ,根据提示安装即可 1.SQL注入漏洞 随便选择一种商品分类,发现有参数,测试注入 测试闭合发现页面报错有sql注入 应该是环境的问题&am…...

35道面向初中级前端的基础面试题
新鲜出炉的8月前端面试题 跨域资源共享 CORS 阮一峰 3. JSONP 是什么? 这是我认为写得比较通俗易懂的一篇文章jsonp原理详解——终于搞清楚jsonp是啥了。 4. 事件绑定的方式 嵌入dom 按钮 直接绑定 btn.onclick function(){} 事件监听 btn.addEventList…...

MFC用List Control 和Picture控件实现界面切换效果
添加List Control 和Picture控件 添加 3个子窗体 把子窗体边框设置为None, 样式设为Child 声明 CListCtrl m_listPageForm;void ShowForm(int nIndex);void CreatFormList();void CMFCApplication3Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DD…...

1. 解决前端vue项目 vite打包内存溢出问题
探索问题原因: 项目开发时正常运行不影响,打包出现上图错误,意味着打包过程中消耗了太多的内存导致的。 解决方法: 在 package.json中的打包命令替换如下: 解决前: "build:dev": "vite…...

Springboot高并发乐观锁
Spring Boot分布式锁的主要缺点包括但不限于以下几点: 性能开销:使用分布式锁通常涉及到网络通信,这会引入额外的延迟和性能开销。例如,当使用Redis或Zookeeper实现分布式锁时,每次获取或释放锁都需要与这些服务进行交…...

【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等
WPS编译错误总结:WPS编译失败仅编译成功ungrib等 WPS编译过程问题1:WPS编译失败错误1:gfortran: error: unrecognized command-line option ‘-convert’; did you mean ‘-fconvert’?解决方案 问题2:WPS编译三个exe文件只出现u…...

pytorch MoE(专家混合网络)的简单实现。
专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...

虚拟机VMware的安装问题ip错误,虚拟网卡
要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了,又重新安装,一般都会有问题 卸载重装vmware: 第一…...

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门hello world输出【入门一】
开发环境搭建:Linux-Ubuntu下搭建ESP32的开发环境的步骤,使用乐鑫最新稳定版的esp-idf-CSDN博客 一、安装好开发环境后,在esp目录下再创建一个esp32的目录【用于编程测试demo】 二、进入esp32目录,打开终端【拷贝esp-idf的hello工…...

重温设计模式--命令模式
文章目录 命令模式的详细介绍C 代码示例C代码示例2 命令模式的详细介绍 定义与概念 命令模式属于行为型设计模式,它旨在将一个请求封装成一个对象,从而让你可以用不同的请求对客户端进行参数化,将请求的发送者和接收者解耦,并且能…...

电力通信规约-104实战
电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中,主要用来进行数据传输和转发,本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java,所以本篇将采用Java实例来进行讲解。首先我们搭建一…...

什么是事务
在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Ato…...

数据结构:双向循坏链表
目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …...

3.1、SDH的5种标准容器
1、定义与作用 在 SDH(同步数字体系)中,标准容器(C)是一种用来装载各种速率的 PDH(准同步数字系列)信号的信息结构。它的主要作用是进行速率适配,使不同速率的 PDH 信号能够在 SDH 的…...

Jenkins介绍
Jenkins 是一款流行的开源自动化服务器,在软件开发和持续集成 / 持续交付(CI/CD)流程中发挥着关键作用。 一、主要功能 1.持续集成(CI) (1).自动构建:Jenkins 可以配置为监听代码仓…...

5G学习笔记之Non-Public Network
目录 0. NPN系列 1. 概述 2. SNPN 2.1 SNPN概述 2.2 SNPN架构 2.3 SNPN部署 2.3.1 完全独立 2.3.2 共享PLMN基站 2.3.3 共享PLMN基站和PLMN频谱 3. PNI-NPN 3.1 PNI-NPN概述 3.2 PNI-NPN部署 3.2.1 UPF独立 3.2.2 完全共享 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】S…...

网页生成鸿蒙App
如何网页生成鸿蒙App 纯鸿蒙发布后,鸿蒙App需求上升。如何快速生成鸿蒙App。变色龙云(http://www.appbsl.cn)推出了鸿蒙App打包服务。可以在线自动打包鸿蒙App。 第一步 创建应用 输入网站网址,上传图标。 第二步 生成鸿蒙证书 打开华为开发者管理中…...

JavaWeb通过Web查询数据库内容:(pfour_webquerymysql)
JavaWeb通过Web查询数据库内容: 数据库: 自行建库建表,主键 id 后端: 新建项目模块选择模块,添加依赖创建配置文件: db.propertiesJava类: query查询 前端: Web添加创建query.html…...

将java项目部署到linux
命令解析 Dockerfile: Dockerfile 是一个文本文件,包含了所有必要的指令来组装(build)一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…...

moviepy将图片序列制作成视频并加载字幕 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...

ROS1入门教程5:简单行为处理
一、新建项目 # 创建工作空间 mkdir -p demo5/src && cd demo5# 初始化工作空间 catkin_make# 创建功能包 cd src catkin_create_pkg demo roscpp actionlib_msgs message_generation tf 二、创建行为 # 创建行为目录 mkdir action && cd action# 创建行为文…...

Vue:实现输入框不能输负数功能
1、使用v-model指令 <input type"number" v-model"value" min"0" input"checkInput"> checkInput() {this.value Math.max(0, parseInt(this.value)); } 2、使用计算属性 <template><div><input type"…...