Files
smartdns/docs/config/ip-alias.md
2023-10-31 22:21:02 +08:00

101 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
hide:
- toc
---
# IP别名
smartdns提供了IP地址别名映射功能可以将查询结果中的IP或IP段映射为特定IP地址
此特性可用用于具有anycast IP的CDN网络加速。比如Cloudflare的CDN加速。
## IP别名映射
映射指定的IP地址到目标地址如将1.2.3.4的C类地址全部映射到192.168.1.1
```
ip-alias 1.2.3.4/24 192.168.1.1
```
## 设置特定域名忽略IP别名
某些情况下需要设置特定域名的结果不进行IP别名转换则可通过域名规则忽略IP别名。
```
domain-rules /example.com/ -no-ip-alias
```
## Cloudflare CDN加速
Cloudflare CDN的IP地址都是anycast IP地址用户可通过任意Cloudflare的IP地址来访问其托管的网站。
通过此特性我们可以找到自己网络访问Cloudflare CDN最快的IP地址并设置IP别名来加速所有托管在Cloudflare上的网站。
其步骤如下:
### 获取Cloudflare的IP地址范围并保持为IP列表文件
Cloudflare公开了其CDN的IP地址范围具体范围在这里可以找到https://www.cloudflare.com/ips/
IPV4https://www.cloudflare.com/ips-v4/#
IPV6https://www.cloudflare.com/ips-v6/#
将上述列表保存为文本,比如:`cloudflare-ipv4.txt`, `cloudflare-ipv6.txt`
* cloudflare-ipv4.txt
```
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22
```
* cloudflare-ipv6.txt
```
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
```
### 查找本网络访问Cloudflare最快的IP
社区提供了找到最快Cloudflare IP地址的工具[CloudflareSpeedTest](https://github.com/XIU2/CloudflareSpeedTest)我们可以使用此工具找到最快的IP地址。
对应命令如下
```
./CloudflareSpeedTest -url https://down.heleguo.top/download/100MB.zip
```
执行成功后将会获得最快的IP地址。
由于工具随机使用了一些IP地址测速可以多执行几次上述命令以确保获取到最快IP地址。
### 配置smartdns加速
原理是通过ip-alias命令将Cloudflare的整个anycast IP映射到CloudflareSpeedTest获取到的最快的IP地址上。
配置smartdns如下
```
# 设置Cloudflare IPV4别名映射
ip-set -name cloudflare-ipv4 -file /path/to/cloudflare-ipv4.txt
ip-rules ip-set:cloudflare-ipv4 -ip-alias 162.159.58.17,162.159.58.124
# 设置Cloudflare IPV6别名映射
ip-set -name cloudflare-ipv6 -file /path/to/cloudflare-ipv6.txt
ip-rules ip-set:cloudflare-ipv6 -ip-alias 2606:4700:17:d8e7:5e98:7d62:6674:c5a7
```