要通过 **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**:用 Bind9
或 Unbound
搭建支持 DNS64 的 DNS 服务。
---
5. 注意事项
- 如果你的网络通过 IPv6 访问 NAT64,但 IPv4-only 的资源无法正常解析,可能需要联系你的 ISP 确认是否支持 NAT64。
- 确保你的 NAT64 网关和 DNS64 服务地址长期可用。
以上步骤完成后,你的机器应能够通过 IPv6 网络访问 IPv4-only 的资源。如果有其他问题,欢迎随时提问!
评论