MENU

#教程#只有IPv6的VPS如何添加IPv4/Olny ipv6访问ipv4网站/ipv6&ipv4&warp

November 30, 2022 • Read: 2168 • 网络笔记

最近查看便签的时候发现了一家webarena jp的VPS,发现有一台only ipv6,抱着好奇的心去搞了一台,因为我本地就具备ipv6,所以连接也很方便,想着有了今天的折腾,所以一直折腾到现在。

这台ipv6-vps很奇怪,我看网上只需要更改NAT64的DNS就能够访问到ipv4网络去拉脚本,结果一直给我报错以及无连接。
在纯手搓的情况下花费近3h装好了LNMP,然后在网上发现了cloudflare的WR。搜索后找到一个大佬的教程,写的很详细,所以在此记录下。

注意:原作

https://p3terx.com/archives/use-cloudflare-warp-to-add-extra-ipv4-or-ipv6-network-support-to-vps-servers-for-free.html

--------------流媒体解锁--感谢RegionRestrictionCheck开源-------------
 以下为IPV4网络测试
============[ Multination ]============
 Dazn:                                  Yes (Region: JP)
 HotStar:                               No
 Disney+:                               Yes (Region: JP)
 Netflix:                               Yes (Region: JP)
 YouTube Premium:                       Yes (Region: JP)
 Amazon Prime Video:                    Yes (Region: JP)
 TVBAnywhere+:                          Yes
 iQyi Oversea Region:                   JP
 Viu.com:                               No
 YouTube CDN:                           Hong Kong 
 Netflix Preferred CDN:                 Tokyo  
 Spotify Registration:                  Yes (Region: JP)
 Steam Currency:                        JPY

这是用cloudflare WARP所获取到的ipv4解锁的地区,还挺多的。


添加DNS64NAT

添加支持 NAT64 的 DNS 服务器即可

sed -i "s@^\(nameserver.*\)@#\1@" /etc/resolv.conf

tee -a /etc/resolv.conf << NAT64
nameserver 2001:67c:2b0::4
nameserver 2001:67c:2b0::6
NAT64

安装 WireGuard

此处可使用一键脚本

bash <(curl -fsSL git.io/warp.sh) wg

官网安装教程

https://www.wireguard.com/install

使用 wgcf 生成 WireGuard 配置文件

安装 wgcf

curl -fsSL git.io/wgcf.sh | sudo bash

注册 WARP 账户 (将生成 wgcf-account.toml 文件保存账户信息)

wgcf register

生成 Wire­Guard 配置文件 (wgcf-profile.conf)

wgcf generate

生成的两个文件记得备份好,尤其是 wgcf-profile.conf,万一未来工具失效、重装系统后可能还用得着。

wg.png

将配置文件中的节点域名 engage.cloudflareclient.com 解析成 IP。不过一般都是以下两个结果:

162.159.192.1
2606:4700:d0::a29f:c001

wg1.png

这样做是因为后面的操作要根据 VPS 所配备的网络协议的不同去选择要连接 WARP 的节点是 IPv4 或 IPv6 协议。

IPv4 Only 服务器添加 WARP IPv6 网络支持

将配置文件中的 engage.cloudflareclient.com 替换为 162.159.192.1,并删除 AllowedIPs = 0.0.0.0/0。即配置文件中 [Peer] 部分为:

[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = ::/0
Endpoint = 162.159.192.1:2408

原理:AllowedIPs = ::/0参数使得 IPv6 的流量均被 Wire­Guard 接管,让 IPv6 的流量通过 WARP IPv4 节点以 NAT 的方式访问外部 IPv6 网络。
此外配置文件中默认的 DNS 是 1.1.1.1,博主实测其延迟虽然很低,但因为缺少了 ECS 功能所以解析结果并不理想。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),建议小伙伴们请根据实际情况来进行替换,或者直接删除 DNS 这行。以下配置供参考:

DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844

IPv6 Only 服务器添加 WARP IPv4 网络支持

将配置文件中的 engage.cloudflareclient.com 替换为 [2606:4700:d0::a29f:c001],并删除 AllowedIPs = ::/0。即配置文件中 [Peer] 部分为:

[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = 0.0.0.0/0
Endpoint = [2606:4700:d0::a29f:c001]:2408

原理:AllowedIPs = 0.0.0.0/0参数使得 IPv4 的流量均被 Wire­Guard 接管,让 IPv4 的流量通过 WARP IPv6 节点以 NAT 的方式访问外部 IPv4 网络。
此外配置文件中默认的 DNS 是 1.1.1.1,由于是 IPv4 地址,故查询请求会经由 WARP 节点发出。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),为了防止当节点发生故障时 DNS 请求无法发出,建议替换为 IPv6 地址的 DNS 优先,或者直接删除 DNS 这行。以下配置供参考:

DNS = 2001:4860:4860::8888,2001:4860:4860::8844,8.8.8.8,8.8.4.4

双栈 WARP 全局网络置换

双栈 WARP 全局网络是指 IPv4 和 IPv6 都通过 WARP 网络的出口对外进行网络访问,实际上默认生成的 Wire­Guard 配置文件就是这个效果。不过默认的配置文件没有外部对本机 IP 访问的相关路由规则,一旦直接使用 VPS 就会直接失联,所以我们还需要对配置文件进行修改。路由规则需要添加在配置文件的 [Interface] 和 [Peer] 之间的位置,以下是路由规则示例:

...
PostUp = ip -4 rule add from <替换IPv4地址> lookup main
PostDown = ip -4 rule delete from <替换IPv4地址> lookup main
PostUp = ip -6 rule add from <替换IPv6地址> lookup main
PostDown = ip -6 rule delete from <替换IPv6地址> lookup main
[Peer]
...

TIPS: 包含<>(尖括号)的部分一起替换掉,这只是为了看起来明显。

替换配置中的 IP 地址部分为 VPS 的公网 IP 地址,如果 IDC 提供的是 VPC 内网方案则需要替换为内网 IP 。像 AWS 、Azure 、Google Cloud 、Or­a­cle Cloud 等大厂都是 VPC 内网方案,内网地址一般会在网页面板有提供。如果不确定是哪种网络方案,输入 ip a | grep <公网IP地址> 看是否有显示,没有那么就说明是 VPC 内网方案。

启用 WireGuard 网络接口

将 Wire­Guard 配置文件复制到 /etc/wireguard/ 并命名为 wgcf.conf。

sudo cp wgcf-profile.conf /etc/wireguard/wgcf.conf

开启网络接口(命令中的 wgcf 对应的是配置文件 wgcf.conf 的文件名前缀)。

![wg3.png][3]sudo wg-quick up wgcf

执行执行ip a命令,此时能看到名为wgcf的网络接口,类似于下面这张图:

wg4.png

执行以下命令检查是否连通。同时也能看到正在使用的是 Cloud­flare 的网络。

# IPv4 Only VPS
curl -6 ip.p3terx.com
# IPv6 Only VPS
curl -4 ip.p3terx.com

wg5.png

测试完成后关闭相关接口,因为这样配置只是临时性的。

sudo wg-quick down wgcf

正式启用 Wire­Guard 网络接口

# 启用守护进程
sudo systemctl start wg-quick@wgcf
# 设置开机启动
sudo systemctl enable wg-quick@wgcf

IPv4 优先

编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:

precedence ::ffff:0:0/96  100

一键添加命令如下:

# IPv4 优先
grep -qE '^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100' /etc/gai.conf || echo 'precedence ::ffff:0:0/96  100' | sudo tee -a /etc/gai.conf
#IPv6 优先

编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:

label 2002::/16   2

一键添加命令如下:

# IPv6 优先
 grep -qE '^[ ]*label[ ]*2002::/16[ ]*2' /etc/gai.conf || echo 'label 2002::/16   2' | sudo tee -a 
/etc/gai.conf

验证优先级
执行 curl ip.p3terx.com 命令,显示 IPv4 地址则代表 IPv4 优先,否则为 IPv6 优先。

Last Modified: December 3, 2022
Archives QR Code Tip
QR Code for this page
Tipping QR Code