Azure 市场中的某些 Linux 虚拟机映像默认未配置动态主机配置协议版本 6 (DHCPv6)。 若要支持 IPv6,必须在使用的 Linux OS 发行版中配置 DHCPv6。 各种 Linux 发行版会以不同方式配置 DHCPv6,因为它们使用不同的包。
注意
Azure 市场中最新的 SUSE Linux 和 CoreOS 映像已预先配置 DHCPv6。 使用这些映像不需要进行额外的更改。
本文档介绍如何启用 DHCPv6,使 Linux 虚拟机能够获取 IPv6 地址。
警告
不恰当地编辑网络配置文件的操作可能会使你失去 VM 的网络访问权限。 建议先在非生产系统上测试配置更改。 本文中的说明已根据 Azure 市场中的最新版 Linux 映像进行测试。 有关详细说明,请参阅适用于你所用 Linux 版本的文档。
对于 RHEL 和 Oracle Linux 7.4 或更高版本,请执行以下步骤:
编辑 /etc/sysconfig/network 文件,添加以下参数:
NETWORKING_IPV6=yes
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,添加以下两个参数:
IPV6INIT=yes
DHCPV6C=yes
续订 IPv6 地址:
sudo ifdown eth0 && sudo ifup eth0
Azure 中最新的 SUSE Linux Enterprise Server (SLES) 和 openSUSE 映像已预先配置 DHCPv6。 使用这些映像不需要进行其他更改。 如果 VM 基于旧版或自定义的 SUSE 映像,请使用以下过程之一配置 DHCPv6。
OpenSuSE 13 和 SLES 11
根据需要安装 dhcp-client
包:
sudo zypper install dhcp-client
编辑 /etc/sysconfig/network/ifcfg-eth0 文件,添加以下参数:
DHCLIENT6_MODE='managed'
续订 IPv6 地址:
sudo ifdown eth0 && sudo ifup eth0
OpenSUSE Leap 和 SLES 12
对于 openSUSE Leap 和 SLES 12,请执行以下步骤:
编辑 /etc/sysconfig/network/ifcfg-eth0 文件,并使用以下值替换 #BOOTPROTO='dhcp4'
参数:
BOOTPROTO='dhcp'
编辑 /etc/sysconfig/network/ifcfg-eth0 文件,添加以下参数:
DHCLIENT6_MODE='managed'
续订 IPv6 地址:
sudo ifdown eth0 && sudo ifup eth0
对于 Ubuntu 17.10 或更高版本,请执行以下步骤:
编辑 /etc/dhcp/dhclient.conf
文件,添加以下行:
timeout 10;
在 cloud.cfg.d 文件夹中创建一个新文件,该文件在重新启动后会保留你的配置。 该文件中的信息将替代默认 NETPLAN 配置(在以下位置的 YAML 配置文件中:/etc/netplan/*.yaml)。
创建 /etc/cloud/cloud.config.d/91-azure-network.cfg 文件。 确保 dhcp6: true
位于所需的接口下,如以下示例所示:
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: true
match:
driver: hv_netvsc
set-name: eth0
保存文件并重启。
使用 ifconfig
验证虚拟机是否收到 IPv6 地址。
如果没有安装 ifconfig
,请运行以下命令:
sudo apt update
sudo apt install net-tools
编辑 /etc/dhcp/dhclient6.conf 文件,并添加以下行:
timeout 10;
编辑 /etc/network/interfaces 文件,添加以下配置:
iface eth0 inet6 auto
up sleep 5
up dhclient -1 -6 -cf /etc/dhcp/dhclient6.conf -lf /var/lib/dhcp/dhclient6.eth0.leases -v eth0 || true
续订 IPv6 地址:
sudo ifdown eth0 && sudo ifup eth0
Azure 中最新的 CoreOS 映像已预先配置 DHCPv6。 使用这些映像不需要进行其他更改。 如果 VM 基于旧版的或自定义的 CoreOS 映像,请执行以下步骤:
编辑 /etc/systemd/network/10_dhcp.network 文件:
[Match]
eth0
[Network]
DHCP=ipv6
续订 IPv6 地址:
sudo systemctl restart systemd-networkd