服务器的ipv6配置 (配置搭建hdr集群等,~/.rhosts 和 /etc/hosts.equiv都配置+ +)
- 编辑配置文件加入以下内容, sudo vi /etc/sysctl.conf
bash
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
- 永久加入ipv6地址
bash
nmcli connection show ##先确认你的网卡连接名称
在 172.16.37.101 上执行(假设连接名为 ens3,请替换为实际名称):
sudo nmcli connection modify "ens3" ipv6.method manual ipv6.addresses "3ffe:ffff:ffff:ffff::101/64"
在 172.16.37.102 上执行:
sudo nmcli connection modify "ens3" ipv6.method manual ipv6.addresses "3ffe:ffff:ffff:ffff::102/64"
- 使配置生效并验证
bash
sudo nmcli connection down "ens3" && sudo nmcli connection up "ens3"
- 验证地址是否绑定成功
bash
ip -6 addr show dev ens3
- 互ping6对端机器
bash
ping6 3ffe:ffff:ffff:ffff::101
ping6 3ffe:ffff:ffff:ffff::102
6.如果虚拟机加入下面两步:(MAC地址是 52:54:00:...,这是典型的KVM虚拟机。KVM经常会拦截IPv6的NDP多播包,解决方法:静态邻居表配置)
6.1临时测试绝招:在 101 和 102 上,手动给对方的 IP 绑定一个"假"的 MAC 地址(欺骗一下系统,让它别去问了,直接发)。
bash
下面两行可忽略,add有时候因为记录已存在报错;直接使用那两条replace即可
--#在 101 上执行:sudo ip -6 neigh add 3ffe:ffff:ffff:ffff::102 lladdr 52:54:00:xx:xx:xx dev ens3 (把 52:54 换成 102 实际的 MAC 地址)。
--#在 102 上执行:sudo ip -6 neigh add 3ffe:ffff:ffff:ffff::101 lladdr 52:54:00:yy:yy:yy dev ens3 (把 52:54 换成 101 实际的 MAC 地址)。
在 101 上执行:sudo ip -6 neigh replace 3ffe:ffff:ffff:ffff::102 lladdr 52:54:00:fa:8b:54 dev ens3
在 102 上执行:sudo ip -6 neigh replace 3ffe:ffff:ffff:ffff::101 lladdr 52:54:00:7c:e2:64 dev ens3
如果你加了这条命令后,ping 瞬间通了,就百分之百证明是虚拟交换机把 NDP 多播包吃掉了。
配置完成再ping6
7.想让6步骤永久生效
7.1 新建这个文件(每个涉及到的机器都得创建)
sudo vi /etc/NetworkManager/dispatcher.d/99-ipv6-neighbor.sh
bash
(文件里放入除本机外的其他机器ip+其他机器ip对应的网卡mac)
#!/bin/bash
# 这里的 $1 代表网卡名(请确保你的网卡名确实是 ens3),$2 代表事件状态
if [ "$2" = "up" ] && [ "$1" = "ens3" ]; then
# 注意:这里把你临时测试用的 IP 和 MAC 换成真实对应的
/usr/sbin/ip -6 neigh replace 3ffe:ffff:ffff:ffff::102 lladdr 52:54:00:xx:xx:xx dev ens3 nud permanent
fi
实际举例,101机器上文件内容:
#!/bin/bash
if [ "$2" = "up" ] && [ "$1" = "ens3" ]; then
/usr/sbin/ip -6 neigh replace 3ffe:ffff:ffff:ffff::81 lladdr 52:54:00:7c:e2:64 dev ens3 nud permanent
/usr/sbin/ip -6 neigh replace 3ffe:ffff:ffff:ffff::82 lladdr 52:54:00:fa:8b:54 dev ens3 nud permanent
/usr/sbin/ip -6 neigh replace 3ffe:ffff:ffff:ffff::102 lladdr 52:54:00:08:92:e7 dev ens3 nud permanent
fi
7.2 给每台机器的脚本加上执行权限
bash
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-ipv6-neighbor.sh
7.3 手动触发涉及的网卡生效一下
bash
sudo nmcli connection up ens3
7.4 每台机器查看邻居表状态
bash
[root@localhost ~]# ip -6 neigh show
3ffe:ffff:ffff:ffff::82 dev ens3 lladdr 52:54:00:fa:8b:54 PERMANENT
3ffe:ffff:ffff:ffff::102 dev ens3 lladdr 52:54:00:08:92:e7 PERMANENT
3ffe:ffff:ffff:ffff::81 dev ens3 lladdr 52:54:00:7c:e2:64 PERMANENT
#如果邻居表里面有红色的失败的,也可以删除或者不用管:(可忽略)
sudo ip -6 neigh del 3ffe:ffff:ffff:ffff::102 dev ens3 有时候删除几秒又回来了,再用下面的就行
sudo ip -6 neigh delete 3ffe:ffff:ffff:ffff::102 dev ens3 nud permanent
7.5 重启reboot -f查看
bash
ping6 3ffe:ffff:ffff:ffff::102之类的
ip -6 neigh show 里有 PERMANENT就永久配置成功
8.其他实际配置内容参考:
[root@localhost gbase8s]# cat etc/sqlhosts.gbase02
db_group group - - i=10
gbase01 onsoctcp 3ffe:ffff:ffff:ffff::101 9088 g=db_group
gbase02 onsoctcp 3ffe:ffff:ffff:ffff::102 9088 g=db_group
[root@localhost gbase8s]# ip addr show
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:1f:78:93 brd ff:ff:ff:ff:ff:ff
inet 172.16.37.102/21 brd 172.16.39.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 3ffe:ffff:ffff:ffff::102/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::2e84:f540:c6c:3073/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost gbase8s]# ping6 3ffe:ffff:ffff:ffff::101
PING 3ffe:ffff:ffff:ffff::101(3ffe:ffff:ffff:ffff::101) 56 data bytes
64 bytes from 3ffe:ffff:ffff:ffff::101: icmp_seq=1 ttl=64 time=0.609 ms
64 bytes from 3ffe:ffff:ffff:ffff::101: icmp_seq=2 ttl=64 time=0.578 ms
^C
--- 3ffe:ffff:ffff:ffff::101 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.578/0.593/0.609/0.015 ms
[root@localhost gbase8s]# ping6 3ffe:ffff:ffff:ffff::102
PING 3ffe:ffff:ffff:ffff::102(3ffe:ffff:ffff:ffff::102) 56 data bytes
64 bytes from 3ffe:ffff:ffff:ffff::102: icmp_seq=1 ttl=64 time=0.014 ms