> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/welcome/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/welcome/cn/elastic-compute/get-started/manage-instances/configure-an-ipv6-address.md).

# 配置 IPv6 地址

## 背景信息

在为您的弹性算力实例分配主要 IPv6 地址（无论是内网 IPv6 还是公网 IPv6）之后，对于某些使用特定镜像的实例，您需要访问实例并配置 IPv6 以使其生效。

### IPv4 & IPv6 双栈

在分配主要 IPv6 地址后，您需要手动配置以下镜像的 IPv6 地址：

* Windows
* FreeBSD 14
* Gentoo openrc

### IPv6 单栈

以下镜像不支持 IPv6 地址：

* Windows
* FreeBSD 14
* Gentoo openrc

如果您为实例分配了额外的 IPv6 地址，您还需要在实例上配置它们。规则如下：

<table><thead><tr><th width="237">镜像</th><th>IPv4 &#x26; IPv6 双栈</th><th>IPv6 单栈</th></tr></thead><tbody><tr><td><ul><li>Ubuntu 20.04</li><li>Ubuntu 22.04</li><li>Ubuntu 24.04</li><li>Debian 12</li><li>Debian 11</li><li>Debian 10</li><li>Debian 9</li><li>openSUSE lead 15.6</li><li>Rocky base 9.3</li><li>CentOS 9</li><li>Fedora base 39 1.5</li><li>Alpine 3.19.1</li><li>ArchLinux</li><li>AlmaLinux 9.3</li></ul></td><td><ul><li><strong>主要 IPv6</strong><br>默认生效。无需手动配置。</li><li><strong>额外 IPv6</strong><br>需要手动配置。</li></ul></td><td><ul><li><strong>主要 IPv6</strong><br>默认生效。无需手动配置。</li><li><strong>额外 IPv6</strong><br>需要手动配置。</li></ul></td></tr><tr><td><ul><li>Windows</li><li>FreeBSD 14</li><li>Gentoo openrc</li></ul></td><td><ul><li><strong>主要 IPv6</strong><br>需要手动配置。</li><li><strong>额外 IPv6</strong><br>需要手动配置。</li></ul></td><td>不支持 IPv6 地址。</td></tr></tbody></table>

## 前提条件

在配置 IPv6 地址之前，请确保已启用 IPv6 服务。目前，您需要为使用 FreeBSD 14 镜像的实例启用 IPv6 服务。

请参阅 [**启用 IPv6 服务**](#enable-ipv6-service) 以获取详细步骤。

## 操作步骤

### 启用 IPv6 服务

您可以按照以下步骤启用使用 FreeBSD 14 镜像的实例上的 IPv6 服务：

1. 配置网卡以使用 IPv6。运行以下命令以修改 `/etc/rc.conf` 配置文件。

   ```sh
   sudo vi /etc/rc.conf
   ```
2. 按 `i` 进入编辑模式。添加或更新以下行以在您的网卡上启用 IPv6。

   ```sh
   ipv6_activate_all_interfaces="YES"
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 运行以下命令以重启网络并应用配置。

   <pre class="language-sh"><code class="lang-sh"><strong>/etc/netstart restart
   </strong></code></pre>

### 配置 IPv6 地址

为以下镜像的实例配置 IPv6 地址。

<details>

<summary>Debian 9, Debian 10, Debian 11</summary>

分配的 IPv6 地址会自动生效，但在实例重启后可能失效。\
因此，需要禁用 cloud-init 修改 `/etc/network/interfaces.d` 目录下网络接口文件的功能。

在以下示例中，默认的网络接口配置文件为：\
`/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`。

1. 执行以下命令打开网络接口配置文件。

   ```bash
   sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
   ```
2. 在文件中添加以下内容，保存并退出。

   ```bash
   network: {config: disabled}
   ```
3. 执行以下命令打开网络接口配置文件。

   ```bash
   sudo vi /etc/network/interfaces.d/50-cloud-init
   ```
4. 对于 **Debian 10** 和 **Debian 11**，在文件末尾追加以下内容。

   ```
   iface ens1 inet6 dhcp
   ```

   修改完成后，保存并退出。
5. 对于 **Debian 9**，在文件末尾追加以下内容。

   ```
   iface eth0 inet6 dhcp
   ```

   修改完成后，保存并退出。
6. 最后，执行以下命令重启实例。

   ```bash
   sudo reboot
   ```

</details>

<details>

<summary>openSUSE Leap 15.6</summary>

**配置 DHCPv6**

1. 打开网卡的网络配置文件（例如 `eth0`）。

   ```sh
   sudo nano /etc/sysconfig/network/ifcfg-eth0
   ```
2. 在文件中添加以下内容以启用 IPv6 的 DHCP。

   ```sh
   codeBOOTPROTO='dhcp'
   LLADDR='52:54:00:13:50:20'
   STARTMODE='auto'
   ```
3. 重启系统以使配置生效。

   ```sh
   sudo reboot
   ```

**手动配置 IPv6 地址**

1. 添加 IPv6 地址（将 `2001:2:0:d38e:0:2::2` 替换为你的实际 IPv6 地址）。

   ```sh
   sudo ip -6 addr add dev eth0 2001:2:0:d38e:0:2::2/64
   ```
2. 添加默认 IPv6 路由（将 `2001:2:0:d38e::1` 替换为你的实际 IPv6 网关）。

   ```sh
   sudo ip -6 route add default via 2001:2:0:d38e::1
   ```

**使 IPv6 地址配置持久化**

1. 打开网卡的网络配置文件（例如 `eth0`）。

   ```sh
   sudo nano /etc/sysconfig/network/ifcfg-eth0
   ```
2. 修改文件以同时包含静态 IPv4 和 IPv6 地址。

   ```sh
   BOOTPROTO='static'
   LLADDR='52:54:00:c4:f9:2c'
   STARTMODE='auto'
   # Static IPv4 configuration
   IPADDR_0='10.1.1.2/24'
   # Static IPv6 configuration, use multiple lines for multiple addresses
   IPADDR_1='2001:2:0:d38e:0:2::2/64'
   ```
3. 打开路由配置文件。

   ```sh
   sudo nano /etc/sysconfig/network/routes
   ```
4. 添加默认的 IPv4 和 IPv6 路由。

   ```sh
   default 10.1.1.1
   default 2001:2:0:d38e::1
   ```

</details>

<details>

<summary>FreeBSD 14</summary>

{% hint style="info" %} <mark style="color:blue;">**注意**</mark>

<mark style="color:blue;">在配置前请先</mark>[<mark style="color:purple;">启用 IPv6 服务</mark>](#qi-yong-ipv6-fu-wu)<mark style="color:blue;">。</mark>
{% endhint %}

**前置步骤**

1. 运行以下命令打开网络配置文件。

   ```sh
   sudo vi /etc/rc.conf
   ```
2. 在文件中添加以下内容，以启用 IPv6 地址控制和网络接口。

   ```sh
   ip6addrctl_policy="AUTO"
   ip6addrctl_enable="YES"
   ipv6_network_interface="auto"
   ipv6_activate_all_interface=YES
   ```

**方法一：配置 DHCPv6**

1. 添加以下内容以接受 IPv6 路由通告并指定 DHCP 客户端。

   ```sh
   ifconfig_vtnet0_ipv6="inet6 accept_rtadv"
   dhclient_program="/usr/local/sbin/dual-dhclient"
   ```
2. 安装 `dual-dhclient` 软件包以支持 DHCPv6。

   ```sh
   sudo pkg install dual-dhclient
   ```
3. 配置示例。

   你的 `/etc/rc.conf` 应类似如下。

   ```sh
   growfs_enable="YES"
   growfs_swap_size=0
   cloudinit_enable="YES"
   sshd_enable="YES"
   ifconfig_vtnet0="DHCP"
   hostname="host-1151000555997504712"
   ip6addrctl_policy="AUTO"
   ip6addrctl_enable="YES"
   ipv6_network_interface="auto"
   ipv6_activate_all_interface=YES
   ifconfig_vtnet0_ipv6="inet6 accept_rtadv"
   dhclient_program="/usr/local/sbin/dual-dhclient"
   ```
4. 重启系统使配置生效。

   ```sh
   sudo reboot
   ```

**方法二：手动配置 IPv6 地址**

将占位符 `<your_ipv6_address_1>`、`<your_ipv6_address_2>`、`<subnet_prefix_length>` 和 `<subnet_gateway_ip>` 替换为你的实际网络信息。

1. 配置单个 IPv6 地址。

   修改 `/etc/rc.conf`，添加以下内容手动设置 IPv6 地址和默认路由。

   ```sh
   ifconfig_vtnet0_ipv6="inet6 <your_ipv6_address> prefixlen <subnet_prefix_length> accept_rtadv"
   ipv6_gateway_enable="YES"
   ipv6_defaultrouter="<subnet_gateway_ip>"
   ```
2. 配置多个 IPv6 地址。

   修改 `/etc/rc.conf`，添加以下内容。

   ```sh
   ifconfig_vtnet0_ipv6="inet6 <your_ipv6_address_1> prefixlen <subnet_prefix_length> accept_rtadv"
   ifconfig_vtnet0_ipv6_alias0="inet6 <your_ipv6_address_2> prefixlen <subnet_prefix_length>"
   ipv6_gateway_enable="YES"
   ipv6_defaultrouter="<subnet_gateway_ip>"
   ```
3. 配置示例。

   你的 `/etc/rc.conf` 应类似如下。

   ```sh
   growfs_enable="YES"
   growfs_swap_size=0
   cloudinit_enable="YES"
   sshd_enable="YES"
   ifconfig_vtnet0="DHCP"
   hostname="host-1151000555997504712"
   ip6addrctl_policy="AUTO"
   ip6addrctl_enable="YES"
   ipv6_network_interface="auto"
   ipv6_activate_all_interface=YES
   ifconfig_vtnet0_ipv6="inet6 2001:2:0:d38e:0:2::2 prefixlen 64 accept_rtadv"
   ipv6_gateway_enable="YES"
   ipv6_defaultrouter="2001:2:0:d38e::1"
   ```
4. 重启系统使配置生效。

   ```sh
   sudo reboot
   ```

</details>

<details>

<summary>Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04</summary>

网络配置通常由 **Netplan** 管理。

1. Netplan 配置文件位于 `/etc/netplan/` 目录下，文件名可能类似于 `01-netcfg.yaml` 或 `50-cloud-init.yaml`。

   运行以下命令打开 Netplan 配置文件。

   ```sh
   sudo vi /etc/netplan/01-netcfg.yaml
   ```
2. 添加或修改配置，例如：

   ```yaml
   network:
     version: 2
     ethernets:
       eth0:
         dhcp4: no
         dhcp6: no
         addresses:
           - 2001:db8::1/64
           - 2001:db8::2/64
         gateway6: 2001:db8::ff
         nameservers:
           addresses:
             - 2001:4860:4860::8888
             - 2001:4860:4860::8844
   ```
3. 使用以下命令应用 Netplan 配置。

   ```sh
   sudo netplan apply
   ```

</details>

<details>

<summary>Debian 12</summary>

网络配置通常通过 `/etc/network/interfaces` 文件或 **NetworkManager** 进行管理。

**编辑配置文件**

1. 运行以下命令打开网络配置文件。

   ```sh
   sudo vi /etc/network/interfaces
   ```
2. 添加或修改配置，例如：

   ```ini
   auto eth0
   iface eth0 inet static
       address 192.0.2.1
       netmask 255.255.255.0
       gateway 192.0.2.254

   iface eth0 inet6 static
       address 2001:db8::1
       netmask 64
       gateway 2001:db8::ff
       up /sbin/ip -6 addr add 2001:db8::2/64 dev eth0
   ```
3. 重启网络服务以应用更改。

   ```sh
   sudo systemctl restart networking
   ```

**使用 NetworkManager**

你也可以使用 `nmcli` 命令行工具或图形界面的 NetworkManager 进行配置。

以下是 `nmcli` 的示例命令。

```sh
nmcli connection modify eth0 ipv6.method manual ipv6.addresses 2001:db8::1/64 ipv6.gateway 2001:db8::ff ipv6.dns "2001:4860:4860::8888,2001:4860:4860::8844"
nmcli connection up eth0
```

</details>

<details>

<summary>Rocky base 9.3</summary>

**配置 DHCPv6**

1. 运行以下命令以打开网络接口配置文件。将 `eth0` 替换为您实际的网络接口值。

   ```sh
   sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
   ```
2. 按 `i` 进入插入模式，并添加以下配置。

   ```ini
   IPV6INIT=yes
   DHCPV6C=yes
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启实例以应用配置更改。

   ```sh
   sudo reboot
   ```

</details>

<details>

<summary>CentOS 9</summary>

**配置 DHCPv6**

1. 运行以下命令以打开网络接口配置文件。将 `eth0` 替换为您实际的网络接口值。

   ```sh
   sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
   ```
2. 按 `i` 进入插入模式，并添加以下配置。

   ```ini
   IPV6INIT=yes
   DHCPV6C=yes
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启实例以应用配置更改。

   ```sh
   sudo reboot
   ```

</details>

<details>

<summary>Fedora base 39 1.5</summary>

修改 NetworkManager 连接配置文件以配置 IPv6 地址。

**配置 DHCPv6**

1. 运行以下命令以打开 `cloud-init-eth0.nmconnection` 文件。如有必要，将 `eth0` 替换为您的实际网络接口标识符。

   ```sh
   sudo vi /etc/NetworkManager/system-connections/cloud-init-eth0.nmconnection
   ```
2. 确保在 `[ipv6]` 部分中包含以下设置。

   ```ini
   [ipv6]
   method=auto
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启 NetworkManager 以应用更改。

   ```sh
   sudo systemctl restart NetworkManager
   ```

**手动配置 IPv6 地址**

1. 运行以下命令以打开 `cloud-init-eth0.nmconnection` 文件。将 `eth0` 替换为您的实际网络接口名称。

   ```sh
   sudo vi /etc/NetworkManager/system-connections/cloud-init-eth0.nmconnection
   ```
2. 修改 `[ipv6]` 部分。将 `eth0` 替换为您的实际网络接口名称，并使用您特定的 IPv6 地址、前缀长度和网关。

   ```ini
   [ipv6]
   method=manual
   addresses1=2001:db8::1/64
   gateway=2001:db8::ff
   dns=2001:4860:4860::8888;2001:4860:4860::8844;
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启 NetworkManager 以应用 IPv6 配置。

   ```sh
   sudo systemctl restart NetworkManager
   ```

</details>

<details>

<summary>Alpine 3.19.1</summary>

使用 `dhcpcd` 包来配置 DHCPv6。

1. 安装 `dhcpcd` 包，这是一个 DHCP 客户端守护进程。

   ```sh
   apk add dhcpcd
   ```
2. 启用 `dhcpcd` 在启动时运行，然后启动服务。

   ```sh
   rc-update add dhcpcd default
   rc-service dhcpcd start
   ```
3. 重启系统以应用配置更改。

   <pre class="language-sh"><code class="lang-sh"><strong>sudo reboot
   </strong></code></pre>

</details>

<details>

<summary>ArchLinux</summary>

**配置 DHCPv6**

1. 默认情况下，`cloud-init` 会生成一个位于 `/etc/systemd/network/10-cloud-init-eth0.network` 的 DHCP 配置文件。打开此文件以验证配置。

   ```sh
   sudo vi /etc/systemd/network/10-cloud-init-eth0.network
   ```
2. 确保在 `[Network]` 部分中包含以下行。

   ```ini
   [Match]
   Name=eth0

   [Network]
   DHCP=yes
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启 systemd-networkd 服务以应用配置。

   ```sh
   sudo systemctl restart systemd-networkd
   ```

**配置 IPv6 地址**

1. 运行以下命令以创建或编辑 `/etc/systemd/network` 文件。

   ```sh
   sudo vi /etc/systemd/network/10-static-eth0.network
   ```
2. 向文件中添加以下行。将 `eth0` 替换为您的实际网络接口名称，并使用您特定的 IPv6 地址、前缀长度和网关。

   ```ini
   [Match]
   Name=eth0

   [Network]
   Address=2001:db8::1/64
   Gateway=2001:db8::ff
   DNS=2001:4860:4860::8888 2001:4860:4860::8844
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启 systemd-networkd 服务以应用静态 IPv6 配置。

   ```sh
   sudo systemctl restart systemd-networkd
   ```

</details>

<details>

<summary>AlmaLinux 9.3</summary>

**配置 DHCPv6**

1. 运行以下命令打开网卡配置文件。将 `eth0` 替换为实际的网卡值。

   ```sh
   sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
   ```
2. 按 `i` 进入插入模式，并添加以下配置。

   ```ini
   IPV6INIT=yes
   DHCPV6C=yes
   ```
3. 按 `Esc` 退出编辑模式。键入 `:wq` 并按 `Enter` 保存并退出。
4. 重启实例以应用配置更改。

   ```sh
   sudo reboot
   ```

</details>

<details>

<summary>Gentoo openrc</summary>

Gentoo openrc 默认通过位于 `/etc/init.d/net.*` 的配置文件支持 DHCPv6。您可以手动创建 `/etc/conf.d/net` 文件来配置 IPv6 地址。

**配置 DHCPv6**

1. 运行以下命令创建或编辑 `/etc/conf.d/net` 文件。

   ```sh
   sudo vi /etc/conf.d/net
   ```
2. 添加 DHCP 配置。

   ```ini
   config_eth0="dhcp"
   ```

**手动配置 IPv6 地址**

1. 运行以下命令创建或编辑 `/etc/conf.d/net` 文件。

   ```sh
   sudo vi /etc/conf.d/net
   ```
2. 添加 IPv6 配置。替换为您实际的网络值。

   ```ini
   config_eth0="2001:db8::1/64"
   routes_eth0="default via 2001:db8::ff"
   dns_servers_eth0="2001:4860:4860::8888 2001:4860:4860::8844"
   ```
3. 重启网络服务。

   ```bash
   sudo /etc/init.d/net.eth0 restart
   ```

</details>
