# 配置 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.console.zenlayer.com/welcome/cn/elastic-compute/get-started/manage-instances/configure-an-ipv6-address.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
