IPv6小鸡利用WARP打造匿名Wireguard
IPv6小鸡
用的是scaleway的星辰主机, 1U1G10G, €0.45一个月
开通命令:
scw instance server create type=STARDUST1-S zone=fr-par-1(法国区, 开的位置这里改) image=debian_bullseye(Debian, 你可以自己改) root-volume=l:10G name=scw-now-hertz ip=none project-id=51b4e5be-9xxx-4xxx-bxxx-4fxxxxx(换成你自己的)
scw instance server create type=STARDUST1-S zone=nl-ams-1(荷兰区, 开的位置这里改) image=ubuntu_jammy(Ubuntu, 你可以自己改) root-volume=l:10G name=scw-now ip=none project-id=51b4e5be-9xxx-4xxx-bxxx-4fxxxxx(换成你自己的)
命令来源: https://www.lizi.tw/web/22113.html
接入WARP
目的是为了让纯IPv6小鸡拥有IPv4地址, 使得可以用于访问IPv4的站点
命令wget -N --no-check-certificate https://gitlab.com/rwkgyg/CFwarp/raw/main/CFwarp.sh && bash CFwarp.sh
来源 https://gitlab.com/rwkgyg/CFwarp
或者
wget -N https://raw.githubusercontent.com/dxomg/vpsfreescripts/main/main.sh && bash main.sh
选择[1] Install Warp to enable Ipv4 on Ipv6 only
注意
建议使用CFwarp.sh
脚本, 并且接入你自己的Cloudflared ZeroTrust账户(也就是WARP Teams版账户)
搭建Wireguard前的命令准备
临时写法
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/src_valid_mark
echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
echo 1 > /proc/sys/net/ipv6/conf/all/proxy_ndp
永久生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.src_valid_mark = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 0" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.forwarding = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.proxy_ndp = 1" >> /etc/sysctl.conf
安装Docker
请务必在接入WARP后安装Docker, 否则可能导致无法接入WARP
apt-get update && apt-get install -y docker.io
命令来源Docker常用命令
搭建Wirdguard
需要使用Docker, 请确保已经安装
请修改WG_HOST
和PASSWORD
字段, 在跑完后访问http://[你的IPv6地址]:51821
进入管理界面生成配置文件即可
方法A
docker run -d \
--name=wg-easy \
-e WG_HOST=[你的IPv6地址] \
-e PASSWORD=你的密码 \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--privileged=true \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--sysctl="net.ipv6.conf.all.disable_ipv6=0" \
--sysctl="net.ipv6.conf.all.forwarding=1" \
--sysctl="net.ipv6.conf.default.forwarding=1" \
--sysctl="net.ipv6.conf.eth0.proxy_ndp=1" \
--restart unless-stopped \
weejewel/wg-easy:latest
方法B
docker run -d \
--name=wg-easy \
-e WG_HOST=[你的IPv6地址] \
-e PASSWORD=你的密码 \
-v ~/.wg-easy:/etc/wireguard \
--network=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--privileged=true \
--restart unless-stopped \
weejewel/wg-easy:latest
转发命令
目的是为了让传入服务器的流量在wg网卡和warp网卡中相互转发, 实现使用warp IP访问
方法A
需要转发两次, 重启失效
eth0为Docker容器里的网卡, wg0为Wireguard在容器里面的接入网卡
docker0为物理机docker网卡, WARP为可出网网卡
转发顺序是从wg0转发到eth0, 在从docker0(也就是eth0)转发到WARP
Docker内转发 (似乎不是必要, 如果无法上网再尝试)
首先进入容器命令docker exec -it wg-easy /bin/bash
iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
完成后按Ctrl + D
退出容器
Docker转发到WARP (似乎不是必要, 如果无法上网再尝试)
iptables -A FORWARD -i docker0 -o WARP -j ACCEPT
iptables -A FORWARD -i WARP -o docker0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o WARP -j MASQUERADE
方法B
只需要转发一次, 重启失效
wg0为不可上网网卡, WARP为可出网网卡
wg0转发到WARP
iptables -A FORWARD -i wg0 -o WARP -j ACCEPT
iptables -A FORWARD -i WARP -o wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o WARP -j MASQUERADE
转发命令参考https://serverfault.com/questions/431593/iptables-forwarding-between-two-interface
Wireguard使用
在完成上述操作后, 访问http://[你的IPv6地址]:51821
进入管理界面生成配置文件, 导入到客户端后即可开始使用
实际演示
接入WARP
-> wget -N --no-check-certificate https://gitlab.com/rwkgyg/CFwarp/raw/main/CFwarp.sh && bash CFwarp.sh
-> 1. 方案一:安装/切换WARP-GO
-> 3. 安装/切换WARP双栈IPV4+IPV6
此时提示成功, 可以 curl -4 IP.sb 以及 curl -6 ip.sb 查看效果
如果需要接入你的Teams账户, 则继续
-> cf
-> 7. WARP三类账户升级/切换(WARP/WARP+/WARP Teams)
-> 3. WARP Teams (Zero Trust)团队账户(无限流量)
-> 进入显示的网页按提示操作以获取Token
-> 填入Token
安装Docker
-> apt-get update && apt-get install -y docker.io
配置转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.src_valid_mark = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 0" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.forwarding = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.proxy_ndp = 1" >> /etc/sysctl.conf
安装Wireguard
docker run -d \
--name=wg-easy \
-e WG_HOST=[你的IPv6地址] \
-e PASSWORD=你的密码 \
-v ~/.wg-easy:/etc/wireguard \
--network=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--privileged=true \
--restart unless-stopped \
weejewel/wg-easy:latest
配置网卡转发
由于是方法B, 所以选择对应的转发命令
iptables -A FORWARD -i wg0 -o WARP -j ACCEPT
iptables -A FORWARD -i WARP -o wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o WARP -j MASQUERADE
下载配置文件
访问http://[你的IP]:51821
进入管理界面并登录
注意
根据Cloudflared设定, 使用WARP访问接入了Cloudflared的页面使用的是你原有的IP地址, 所以当你用本文介绍的方法配置的Wireguard访问这类站点时, 使用的IP是你小鸡的IP
例如: ip.sb 和 ipw.cn得到的IP不通