如何在Linux(RHEL/CentOS 7/8)中配置ipv6地址
在" RHEL"和" CentOS 7"上验证了"配置IPv6地址"的逐步指南。
IPv6可以替代IPv4网络协议。
它解决的主要问题是通过使用更大的网络地址空间来耗尽IPv4地址。
它还为网络配置管理提供了许多增强功能和新功能,并支持将来的协议更改。
IPv6尚未广泛部署的主要原因是,对于只有IPv6地址的系统与只有IPv4地址的系统进行通信,核心协议还没有一种简单的方法。
IPv6地址是一个" 128位数字",通常表示为八个冒号分隔的组,每个组由四个十六进制半字节(半字节)组成。
每个半字节代表IPv6地址的四位,因此每一组代表IPv6地址的16位。
2001:0001:0001:1443:0000:0000:0000:0400
为了使写入IPv6地址更容易,不需要写入以冒号分隔的组中的前导零。
但是,必须在每个字段中至少写入一个半字节。
组中非零字节之后的零无需写入。
2001:1:1:1443:0:0:0:400
由于带有长零字符串的地址是常见的,因此将一组或者多组连续的零与正好一个::
块组合在一起。
2001:1:1:1443::400
注意,根据这些规则,2001:1:1:1443 :: 400
是写示例地址的另一种较不方便的方法。
但这是相同地址的有效表示形式,这会使IPv6新手管理员感到困惑。
写一致可读的地址的一些技巧
始终压制组中的所有前导零
使用
::
尽可能缩短。
如果两个零位游程的长度相等,请按喜好缩短最左边的零位游程。尽管允许,但不要使用
::
来缩短一组零,而要使用:0:
,并保存::
以用于比单个组长的零。对于十六进制数字
a
到f
始终使用小写字母。
重要的提示:
当在IPv6地址后面包含TCP或者UDP网络时,请始终将IPv6地址括在方括号中,以使该端口看起来不像是该地址的一部分
[2001:1:1:1443::400]:80
开始配置IPv6地址之前的准备工作
确保在节点上启用了IPv6. 在sysctl配置中查找以下条目
# sysctl -a | grep ipv6.*disable net.ipv6.conf.all.disable_ipv6 = 0 net.ipv6.conf.default.disable_ipv6 = 0 net.ipv6.conf.eno49.disable_ipv6 = 0
这将列出默认值和每个接口值的IPv6状态。
此处0表示我们节点上的IPv6处于活动状态,如果以上返回1,则意味着节点上IPv6处于禁用状态。
因此,如果禁用了IPv6,则IPv6配置将不起作用。
说明:
上述命令也可能不会返回任何输出,这意味着已通过GRUB禁用了IPv6,因此我们必须从GRUB重新启用IPv6,然后重新启动节点以激活更改。
nm-setting和ifcfg- *指令的比较
下表将与IPv6连接相关的一些关键NetworkManager设置名称映射到ifcfg- *
指令。
使用网络管理器配置IPv6地址。
从Linux节点打开Network Manager控制台
# nmtui
选择"编辑连接",然后单击"确定"。
接下来寻找要在其上配置IPv6地址的以太网卡。
如果NIC卡未出现在列表中,则可以"添加新设备"。
因为对我来说,我的设备(eno50
)存在,所以我将选择该设备并选择Edit
。
这将带我们进入主配置页面,我们必须其中提供所有详细信息以配置IPv6地址。
由于我不想将IPv4地址添加到同一以太网设备,因此我禁用了IPv4选项。
提供" IPv6地址/子网"和"网关"。
确保选择"自动连接"
最后单击"确定"退出该实用程序。
接下来,重新启动网络服务以激活更改
# systemctl restart network
现在让我们检查eno50
的网络配置
# ip addr show dev eno50 3: eno50: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq portid 0200000000000000000000535634393543 state UP qlen 1000 link/ether 00:17:a4:77:00:46 brd ff:ff:ff:ff:ff:ff inet6 2001:1:1:1443::432/122 scope global valid_lft forever preferred_lft forever inet6 fe80::1294:4a99:8233:8aaf/64 scope link valid_lft forever preferred_lft forever
看来我能够使用IPv6地址成功配置我的界面。
通过ping IPv6网关来验证连接性
# ping6 2001:1:1:1443::43F PING 2001:1:1:1443::43F(2001:1:1:1443::43f) 56 data bytes 64 bytes from 2001:1:1:1443::43f: icmp_seq=1 ttl=64 time=17.7 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=2 ttl=64 time=3.52 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=3 ttl=64 time=1.88 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=4 ttl=64 time=20.7 ms ^C --- 2001:1:1:1443::43F ping statistics -- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 1.880/10.954/20.707/8.339 ms
因此,我能够连接到网关,这意味着我的IPv6配置成功。
使用CLI配置IPv6地址
以下命令将为接口eno49
添加一个新连接,该接口将在启动时自动连接,并使用DHCPv4获取IPv4网络信息。
它还将通过侦听locallink上的路由器AD来获取IPv6网络设置。
# nmcli con add con-name eno49 type ethernet ifname eno49 Connection 'eno49' (2ff6c44e-f016-4359-8eaf-121071bc612d) successfully added.
下面的命令使用IPv6地址和网络前缀2001:1:1:1443 :: 433/122和默认的IPv6网关
2001:1:1:1443 :: 43F'静态配置eno49
接口。
仍会在启动时自动连接,并将其配置保存到/etc/sysconfig/network-scripts/ifcfg-eno49
中。
# nmcli con add con-name eno49 type ethernet ifname eno49 ip6 2001:1:1:1443::433/122 gw6 2001:1:1:1443::43F Connection 'eno49' (e6f51cfa-4dba-4fbb-b7fa-9c777a6edb52) successfully added.
# ip addr show dev eno49 2: eno49: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq portid 0100000000000000000000535634393543 state UP qlen 1000 link/ether 00:17:a4:77:00:44 brd ff:ff:ff:ff:ff:ff inet6 2001:1:1:1443::433/122 scope global valid_lft forever preferred_lft forever inet6 fe80::9345:4602:8d7d:e1dd/64 scope link valid_lft forever preferred_lft forever
让我们通过使用eno49
接口ping通网关来验证我们的配置
# ping6 -I eno49 2001:1:1:1443::43F ping6: Warning: source address might be selected on device other than eno49. PING 2001:1:1:1443::43F(2001:1:1:1443::43f) from 2001:1:1:1443::432 eno49: 56 data bytes 64 bytes from 2001:1:1:1443::43f: icmp_seq=1 ttl=64 time=30.0 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=2 ttl=64 time=98.7 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=3 ttl=64 time=3.05 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=4 ttl=64 time=47.5 ms ^C --- 2001:1:1:1443::43F ping statistics -- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 3.051/44.847/98.766/34.933 ms
再次使用CLI看来,这些步骤对我来说是成功的。
修改现有的IPv6配置
在下面的命令中,我们将接口eno49的IPv6地址从2001:1:1:1443 :: 433更改为2001:1:1:1443 :: 434,而网关保持不变。
# nmcli con mod eno49 ipv6.addresses "2001:1:1:1443::434/122" gw6 "2001:1:1:1443::43F" # nmcli con mod eno49 ipv6.method manual
重启eno49
界面
# nmcli con down eno49 Connection 'eno49' successfully deactivated (D-Bus activepath:/org/freedesktop/NetworkManager/ActiveConnection/178)
接下来带来界面
# nmcli con up eno49 Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager/ActiveConnection/180)
验证eno49设备的新IP地址
# ip addr show dev eno49 2: eno49: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq portid 0100000000000000000000535634393543 state UP qlen 1000 link/ether 00:17:a4:77:00:44 brd ff:ff:ff:ff:ff:ff inet6 2001:1:1:1443::434/122 scope global valid_lft forever preferred_lft forever inet6 fe80::9345:4602:8d7d:e1dd/64 scope link valid_lft forever preferred_lft forever
检查从eno49
到它的网关的连接
# ping6 -I eno49 2001:1:1:1443::43F ping6: Warning: source address might be selected on device other than eno49. PING 2001:1:1:1443::43F(2001:1:1:1443::43f) from 2001:1:1:1443::432 eno49: 56 data bytes 64 bytes from 2001:1:1:1443::43f: icmp_seq=1 ttl=64 time=16.0 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=2 ttl=64 time=4.40 ms 64 bytes from 2001:1:1:1443::43f: icmp_seq=3 ttl=64 time=8.54 ms ^C --- 2001:1:1:1443::43F ping statistics -- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 4.403/9.671/16.063/4.827 ms
检查配置文件中的" eno49"
# cat /etc/sysconfig/network-scripts/ifcfg-eno49 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp 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=eno49 UUID=2ff6c44e-f016-4359-8eaf-121071bc612d DEVICE=eno49 ONBOOT=yes IPV6ADDR=2001:1:1:1443::434/122 IPV6_DEFAULTGW=2001:1:1:1443::43f
接下来,重新启动网络服务以激活更改
# systemctl restart network