如何在Linux(RHEL/CentOS 7/8)中配置ipv6地址

时间:2020-01-09 10:39:00  来源:igfitidea点击:

在" 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:,并保存::以用于比单个组长的零。

  • 对于十六进制数字af始终使用小写字母。

重要的提示:

当在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