服务器ipv6地址显示“scope global dadfailed tentative noprefixroute”无法连通的问题处理一例

56 篇文章 0 订阅
47 篇文章 0 订阅

服务器规模启用ipv6地址后,遇到一起案例 ,配置的服务ipv6地址显示“scope global dadfailed tentative noprefixroute”,无法连通,现将解决过程记录如下。

一、问题情况

1、ipv6信息检查 

某台服务器配置ipv6地址后,发现其IPV6地址异常,检查IP运行情况

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:ab:fa:ff brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.17.113/24 brd 192.168.17.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80:56ff:feab:1::c0ab:1171/120 scope global dadfailed tentative noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:feab:faff/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

对应ipv6地址项报“scope global dadfailed tentative noprefixroute”信息。

"scope global dadfailed tentative noprefixroute"输出描述了本接口地址的运行情况

  • "scope": 这是指该接口的广播范围。 "global"表示这是一个全局广播地址,可以在整个互联网上路由。
  • "dadfailed": 这是指在配置过程中,DAD(Duplicate Address Detection)失败了。DAD是一种检测机制,用于确保网络接口的IP地址在本地网络中是唯一的。如果DAD失败,那么这个接口可能无法正常工作。
  • "tentative": 这个状态表示这个IP地址正在等待变成有效状态。在某些情况下,例如当一个接口正在尝试获取IP地址时,它可能会处于这种状态。
  • "noprefixroute": 这是指该接口没有配置前缀路由。前缀路由是一种路由策略,它指定了数据包应该如何根据其目标IP地址的前缀进行路由。

从以上信息来看,该ipv6地址处于尝试获取IP地址,等待激活状态。

2、检查IP地址基本配置
# cat /etc/sysconfig/network-scripts/ifcfg-ens192 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
#IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.17.113
NETMASK=255.255.255.0
GATEWAY=192.168.17.1
IPV6ADDR=fe80:56ff:feab:1::c0ab:1171/120
IPV6_DEFAULTGW=fe80:56ff:feab:1::c0ab:1101

ip配置信息正常。

 3、本机检查
# ping6 fe80:56ff:feab:1::c0ab:1171
PING fe80:56ff:feab:1::c0ab:1171(fe80:56ff:feab:1::c0ab:1171) 56 字节的数据
来自 fe80::250:56ff:feab:faff%ens192 icmp_seq=1 目标不可达: 地址不可达
来自 fe80::250:56ff:feab:faff%ens192 icmp_seq=2 目标不可达: 地址不可达
来自 fe80::250:56ff:feab:faff%ens192 icmp_seq=3 目标不可达: 地址不可达
^C
--- fe80:56ff:feab:1::c0ab:1171 ping 统计 ---
已发送 6 个包, 已接收 0 个包, +3 错误, 100% packet loss, time 5136ms

本机测试ipv6地址不可达,反馈地址为原生的fe80::250:56ff:feab:faff,可见配置地址确实未生效。

4、外部检查
# ping6 fe80:56ff:feab:1::c0ab:1171
PING fe80:56ff:feab:1::c0ab:1171(fe80:56ff:feab:1::c0ab:1171) 56 字节的数据
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=1 ttl=64 时间=0.343 毫秒
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=2 ttl=64 时间=0.249 毫秒
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=3 ttl=64 时间=0.189 毫秒
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=4 ttl=64 时间=0.269 毫秒
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=5 ttl=64 时间=0.222 毫秒
64 字节,来自 fe80:56ff:feab:1::c0ab:1171: icmp_seq=6 ttl=64 时间=0.231 毫秒
^C
--- fe80:56ff:feab:1::c0ab:1171 ping 统计 ---
已发送 6 个包, 已接收 6 个包, 0% packet loss, time 5133ms
rtt min/avg/max/mdev = 0.189/0.250/0.343/0.048 ms

比较奇怪,在其它主机上测试外部连接该IP可达,经验判断,该IP地址存在地址冲突了。

 二、排查处理

1、交换机协查

因IPV6地址复杂,主机数众多,IP冲突排查困难。于是从交换机上查找冲突IP(CISCO数据中心级交换机):

NL-1# show  ipv6 neighbor   fe80:56ff:feab:1::c0ab:1171

Flags: # - Adjacencies Throttled for Glean
       G - Adjacencies of vPC peer with G/W bit

IPv6 Adjacency Table for VRF default
Total number of entries: 1
Address         Age       MAC Address     Pref Source     Interface
fe80:56ff:feab:1::c0ab:1171
                00:02:27  0050.56ad.c10e  50   icmpv6     Vlan2198        
NL-1# show  ip arp  | include  c10e             
192.168.17.133   00:00:20  0050.56ad.c10e  Vlan2198        
NL-1# ping6 fe80:56ff:feab:1::c0ab:1171
PING6 fe80:56ff:feab:1::c0ab:1171 (fe80:56ff:feab:1::c0ab:1171): 56 data bytes
64 bytes from fe80:56ff:feab:1::c0ab:1171: icmp_seq=0 time=1.128 ms
64 bytes from fe80:56ff:feab:1::c0ab:1171: icmp_seq=1 time=0.943 ms
64 bytes from fe80:56ff:feab:1::c0ab:1171: icmp_seq=2 time=0.769 ms
64 bytes from fe80:56ff:feab:1::c0ab:1171: icmp_seq=3 time=0.95 ms
64 bytes from fe80:56ff:feab:1::c0ab:1171: icmp_seq=4 time=0.727 ms

--- fe80:56ff:feab:1::c0ab:1171 ping6 statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 0.727/0.903/1.128 ms
NL-1# ^C

 在交换机上查找“fe80:56ff:feab:1::c0ab:1171”对应主机MAC地址为0050.56ad.c10e,再反查0050.56ad.c10e对应的IPV4地址为192.168.17.133。而根据我们的预设IPV4-IPV6地址对应规则,192.168.17.133对应ipv6地址后四位应是c0ab:1185。问题原因就是192.168.17.133主机ipv6地址配置错误。

2、主机协查

登录到192.168.17.133主机检查:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:ad:c1:0e brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.17.133/24 brd 10.227.17.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80:56ff:feab:1::c0ab:1171/120 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fead:c10e/64 scope link noprefixroute 
       valid_lft forever preferred_lft foreve

问题得到确认。

三、解决办法

将192.168.17.133主机的ipv6地址修正为“fe80:56ff:feab:1::c0ab:1185”,重启网卡生效。然后重启192.168.17.113主机网卡,问题得到解决。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
8数码问题(8-puzzle)是一个经典的搜索问题,目标是将一个3x3的矩阵中的数字1~8按照特定的顺序排列,初始状态是乱序的。每一次可以将数字与空格交换位置,目标是通过交换操作尽快到达目标状态。 A*算法是一种启发式搜索算法,可以用于解决8数码问题。它通过估计从当前状态到目标状态的代价来指导搜索方向,其中估价函数是关键。 以下是一个基于Python实现的A*算法求解8数码问题的程序,包括两种不同的估价函数。 ```python import heapq # 估价函数1:曼哈顿距离 def h1(state): dist = 0 for i in range(3): for j in range(3): if state[i][j] == 0: continue x, y = (state[i][j] - 1) // 3, (state[i][j] - 1) % 3 dist += abs(x - i) + abs(y - j) return dist # 估价函数2:错位数 def h2(state): count = 0 for i in range(3): for j in range(3): if state[i][j] == 0: continue if state[i][j] != 3 * i + j + 1: count += 1 return count # A*算法 def A_star(start, goal, h): open_list = [(h(start), start)] closed_set = set() g_score = {tuple(map(tuple, start)): 0} came_from = {} while open_list: _, current = heapq.heappop(open_list) if current == goal: path = [] while current in came_from: path.append(current) current = came_from[current] path.append(start) return path[::-1] closed_set.add(tuple(map(tuple, current))) for i, j in [(0, 1), (0, -1), (1, 0), (-1, 0)]: new_x, new_y = i + current.index([0]), j + current[current.index([0])].index(0) if 0 <= new_x < 3 and 0 <= new_y < 3: neighbor = [list(row) for row in current] neighbor[current.index([0])][current[current.index([0])].index(0)], neighbor[new_x][new_y] = neighbor[new_x][new_y], neighbor[current.index([0])][current[current.index([0])].index(0)] tentative_g_score = g_score[tuple(map(tuple, current))] + 1 if tuple(map(tuple, neighbor)) in closed_set: continue if (tentative_g_score + h(neighbor), neighbor) not in open_list: heapq.heappush(open_list, (tentative_g_score + h(neighbor), neighbor)) elif tentative_g_score >= g_score.get(tuple(map(tuple, neighbor)), float('inf')): continue came_from[tuple(map(tuple, neighbor))] = tuple(map(tuple, current)) g_score[tuple(map(tuple, neighbor))] = tentative_g_score return None # 测试 start = [[2, 8, 3], [1, 6, 4], [7, 0, 5]] goal = [[1, 2, 3], [8, 0, 4], [7, 6, 5]] print(A_star(start, goal, h1)) print(A_star(start, goal, h2)) ``` 该程序中,`h1`和`h2`分别是两种不同的估价函数。`A_star`函数使用了一个优先队列`open_list`,以及一个集合`closed_set`来存储已经扩展过的状态。`g_score`字典存储了起点到每个状态的最短距离,`came_from`字典则存储了每个状态的前驱状态。在搜索过程中,每次取出`open_list`中代价最小的状态进行扩展,直到找到目标状态或者`open_list`为空。 在测试部分,我们将初始状态和目标状态分别设置为`start`和`goal`,并分别使用`h1`和`h2`求解。程序输出的是求解出的最短路径,即一系列状态的列表。 需要注意的是,在实现中,我们将每个状态都转换成了一个元组,以便于存储在字典中。在比较状态是否相等时,也需要将其转换为元组进行比较。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代先生.重庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值