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_HOSTPASSWORD字段, 在跑完后访问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不通