要通过 **NAT64 + DNS64** 实现 IPv6 机器访问 IPv4 网络资源,并永久设置相应的配置,你可以按照以下步骤操作。这个方案适用于 Linux 系统。

---

查看网卡信息

通常是通过 ip route show ifconfig 命令获得

配置解析

  iface eth0 inet6 static

        address 2a01:4f8:200:8095::4   # 静态IPv6地址

        netmask 128                     # 子网掩码为128,表示这是单一设备的地址

        gateway 2a01:4f8:200:8095::2    # 设置默认IPv6网关

        dns-nameservers 2a00:1098:2b::1 2001:67c:2b0::4  # 设置DNS服务器

1. 确认环境要求

- **IPv6 网络环境**:确保你的网络支持 IPv6。

- **NAT64 网关**:需要一个可用的 NAT64 网关。你可以使用公共的 NAT64 服务(如 Google 或 Cloudflare 提供的免费服务)或者搭建自己的 NAT64 网关。

- **DNS64 服务器**:选择一个支持 DNS64 功能的公共 DNS 服务器,或自行部署(常见的公共 DNS64 地址见下文)。

---

2. 配置 DNS64 服务器

DNS64 是 NAT64 的关键部分。它将 IPv4 地址转换为 IPv6 可解析的地址(例如64:ff9b::/96 前缀)。

常见的 DNS64 公共服务器

- Google:

- **2001:4860:4860::6464**

- **2001:4860:4860::64**

- Cloudflare:

- **2606:4700:4700::64**

- **2606:4700:4700::6400**

- 第三方:

- **2a00:1098:2b::1**

- **2001:67c:2b0::4**

- 提供商特定的 NAT64/DNS64 地址:根据你的 ISP 或托管服务查询其 NAT64 服务地址。

永久设置 DNS 服务器

编辑系统的 DNS 配置文件(通常是 /etc/resolv.conf 或 NetworkManager 配置)。

echo -e "nameserver 2001:67c:2b0::4\nnameserver 2001:67c:2b0::6" | sudo tee /etc/resolv.conf > /dev/null

方式一:编辑 /etc/resolv.conf

1. 打开配置文件:

```bash

sudo nano /etc/resolv.conf

```

2. 添加 DNS64 地址:

```plaintext

nameserver 2a00:1098:2b::1

nameserver 2001:67c:2b0::4

```

3. 保存并退出。

> 注意:如果系统重启后 /etc/resolv.conf 会被覆盖,你需要使用 **NetworkManager** 或其他工具设置静态 DNS。

方式二:编辑 手动配置

如果你的系统使用其他网络管理工具(例如 netplan 或手动配置),可以直接修改对应配置文件:

#### **手动修改 /etc/network/interfaces(适用于 Debian/Ubuntu)**

1. 打开文件:

```bash

sudo nano /etc/network/interfaces

```

2. 为你的网络接口添加静态 IPv6 DNS 服务器:

```plaintext

iface eth0 inet6 static

address 2a01:4f8:200:8095::4

netmask 128

gateway 2a01:4f8:200:8095::2

dns-nameservers 2a00:1098:2b::1 2001:67c:2b0::4

```

3. 重启网络服务:

```bash

sudo systemctl restart networking

```

---

拓展

--

在你打开 /etc/network/interfaces 文件时看到的 source /etc/network/interfaces.d/* 这一行,实际上是一个指令,告诉系统 **加载 /etc/network/interfaces.d/ 目录下的所有配置文件**。

### 不需要删除,应该保留

这种配置方式在很多现代的 Linux 发行版中是常见的,它允许将网络配置文件拆分成多个小文件进行管理,而不是将所有内容都放在一个大文件里。这使得网络配置更加灵活和易于管理。

- *source /etc/network/interfaces.d/***: 这个指令会加载 /etc/network/interfaces.d/ 目录中的所有文件。可以把每个网络接口的配置单独放入这个目录下的一个文件中。

### 如何操作

1. **保留 source /etc/network/interfaces.d/***,这样配置的方式就不会有问题。

2. 你可以将你的配置放在 /etc/network/interfaces 文件中,也可以创建一个新的配置文件放在 /etc/network/interfaces.d/ 目录下。

### 两种选择:

方式一:直接在 /etc/network/interfaces 文件中配置

你可以将之前的配置直接放在 /etc/network/interfaces 文件的末尾(在 source /etc/network/interfaces.d/* 之后):

```plaintext

source /etc/network/interfaces.d/*

iface eth0 inet6 static

address 2a01:4f8:200:8095::4 # 静态IPv6地址

netmask 128 # 子网掩码为128,表示这是单一设备的地址

gateway 2a01:4f8:200:8095::2 # 设置默认IPv6网关

dns-nameservers 2a00:1098:2b::1 2001:67c:2b0::4 # 设置DNS服务器

```

这样,系统会首先加载 /etc/network/interfaces 中的配置,然后继续加载 /etc/network/interfaces.d/ 目录中的所有文件。

方式二:将配置移到 /etc/network/interfaces.d/ 目录

你也可以选择在 /etc/network/interfaces.d/ 目录下创建一个新的配置文件,来专门配置 eth0 的 IPv6 地址。

1. 创建一个新的配置文件(例如eth0.cfg):

```bash

sudo nano /etc/network/interfaces.d/eth0.cfg

```

2. 在文件中添加以下内容:

```plaintext

iface eth0 inet6 static

address 2a01:4f8:200:8095::4

netmask 128

gateway 2a01:4f8:200:8095::2

dns-nameservers 2a00:1098:2b::1 2001:67c:2b0::4

```

3. 保存并退出文件。

---

总结

- **保留 source /etc/network/interfaces.d/***,不需要删除。

- 你可以选择将配置放在 /etc/network/interfaces 中,或者将其放在 /etc/network/interfaces.d/ 目录下的单独文件中,两者都可以工作。

3. 验证 NAT64 配置

确保你的 IPv6 网络能够通过 NAT64 网关访问 IPv4 网络。

#### 检查 NAT64 的工作

1. 使用 ping 测试 IPv4 域名:

```bash

ping -6 ipv4.google.com

```

如果解析成功并返回 64:ff9b:: 前缀的 IPv6 地址,则 DNS64 和 NAT64 工作正常。

2. 测试访问纯 IPv4 的资源:

```bash

wget https://github.com/icret/EasyImages2.0/archive/refs/tags/2.8.3.zip

```

如果能正常返回内容,说明配置成功。

---

4. 本地搭建 NAT64 和 DNS64 服务

如果需要独立的 NAT64/DNS64,建议部署:

- **NAT64**:使用 tayga 搭建一个本地 NAT64。

- **DNS64**:用 Bind9Unbound 搭建支持 DNS64 的 DNS 服务。

---

5. 注意事项

- 如果你的网络通过 IPv6 访问 NAT64,但 IPv4-only 的资源无法正常解析,可能需要联系你的 ISP 确认是否支持 NAT64。

- 确保你的 NAT64 网关和 DNS64 服务地址长期可用。

以上步骤完成后,你的机器应能够通过 IPv6 网络访问 IPv4-only 的资源。如果有其他问题,欢迎随时提问!