本文内容在 wapac 的 HK IPv6 年付 1 刀机,系统选择 “Debian11” 环境下检验成功,如有错误可以重装对应系统尝试一下。 最后更新时间:2024/07/23

1. 了解机器信息

# 1. wapac 系统模板 Debian11
root@wap:~# uname -a   
# Linux wap 6.5.11-4-pve #1 SMP PREEMPT_DYNAMIC PMX 6.5.11-4 (2023-11-20T10:19Z) x86_64 GNU/Linux
root@wap:~# cat /proc/version
# Linux version 6.5.11-4-pve (fgruenbichler@yuna) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC PMX 6.5.11-4 (2023-11-20T10:19Z)
# 2. ping
root@wap:~# ping -4 google.com
# 纯 IPv6 不能访问 IPv4 网络,如下提示,解决看 2. 实现访问 ipv4 功能
# ping: connect: Network is unreachable
root@wap:~# ping -6 google.com
# 3. 查看当前 DNS
root@wap:~# cat /etc/resolv.conf
search wap.ac
nameserver 2606:4700:4700::1111
nameserver 8.8.8.8
root@wap:~# cat /etc/resolv.conf
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
nameserver 2606:4700:4700::1111
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 1.1.1.1
# 4. LXC 查看 tun/tap 是否开启,ls /dev/net, 如果返回 tun 为开启,否则未开启
root@wap:~# ls /dev/net
tun
# 5. 查看宿主机创建容器数
root@wap:~# ls /sys/devices/virtual/block | grep dm | wc -l
1375  
root@wap:~# ls /sys/devices/virtual/block
# 6. 查看 kvm 还是 lxc
root@wap:~# systemd-detect-virt
# 7. 增加 ipv6 dns (如果无 v6 dns)
echo "nameserver 2a00:1098:2c::1" >> /etc/resolv.conf
# 8. warp ipv4
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh

2. 实现访问 ipv4 功能

目前仍有一些主流网站如 GitHub 尚未完全支持 IPv6,纯 IPv6 环境可能无法正常使用部分软件或脚本,可以通过 NAT64 服务或者 Cloudflare WARP 解决部分软件因没有 IPv4 网络无法使用的问题。

  • 使用 NAT64 服务将会使你的上网流量通过对方的服务器转发,当对方服务器距离过远或负载过高时可能会严重影响网络速度,请酌情使用。
  • NAT64 是全局的,但速度可能较慢,warp 往往有着更快的速度,但并非是全局的,需要进行配置才可使用。

建议先使用 NAT64 进行开局,安装所需要的脚本,再使用 warp 作为为日常使用

2.1. 使用公共代理访问 github

使用 Github IPv6 proxy 提供的 proxy 访问 github,追加指向到 /etc/hosts,IPv6 网络就能够使用尚未完全支持 IPv6 的 GitHub 的服务,如安装各种一键脚本。

root@wap:~# cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
# --- BEGIN PVE ---
2400:8a20:112:1::389 wap.OuNrfh wap
# --- END PVE ---

# >> 追加
cat >> /etc/hosts <<-'EOF'
# https://danwin1210.de/github-ipv6-proxy.php
2a01:4f8:c010:d56::2 github.com
2a01:4f8:c010:d56::3 api.github.com
2a01:4f8:c010:d56::4 codeload.github.com
2a01:4f8:c010:d56::5 objects.githubusercontent.com
2a01:4f8:c010:d56::6 ghcr.io
2a01:4f8:c010:d56::7 pkg.github.com npm.pkg.github.com maven.pkg.github.com nuget.pkg.github.com rubygems.pkg.github.com
EOF

2.2. 添加 nat64

通过 DNS64,修改 nameserver 实现 ipv6 能访问 ipv4 网络

DNS64 解析器是 Web 浏览器和其他程序使用的递归 DNS 服务器,用于将主机名映射到数字地址,反之亦然。DNS64 规范定义了一种方法,服务器用于将在 A 记录中找到的 IPv4 地址转换为解析器在 AAAA 记录中提供的 IPv6 地址,否则将没有 AAAA 记录。

一些可用的 NAT64 服务地址

# Cloudflare: 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001
# Google:     8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
# Quad9:      9.9.9.9 2620:fe::fe
# Trex        2001:67c:2b0::4 2001:67c:2b0::6
# Nat64       2a00:1098:2c::1 2a01:4f8:c2c:123f::1 2a00:1098:2b::1

修改 DNS 启用 NAT64 服务:修改文件 /etc/systemd/resolved.conf 或者 /etc/resolv.conf 添加对应的 nameserver。

一键设置

# 备份添加
cp /etc/resolv.conf /etc/resolv.conf.bak && echo -e "nameserver 2001:67c:2b0::4\nnameserver 2001:67c:2b0::6" > /etc/resolv.conf
# 追加添加
echo "nameserver 2a00:1098:2c::1" >> /etc/resolv.conf

DNS 设置持久化

LXC 容器 DNS 修改可能会在重启后被覆盖。如果希望修改永久生效,使用以下命令:

touch /etc/.pve-ignore.resolv.conf

2.3. 非全局 warp

2.3.1. 安装 cloudflare-warp(proxy 模式)+ proxychains4

一键脚本

apt install -y curl && bash <(curl -Ls https://raw.githubusercontent.com/Lynn-Becky/v6_only/main/v4.sh)

选择使用 warp 服务,根据提示执行。

2.3.2. 测试 warp 可用性

curl -4 -x socks5://127.0.0.1:1835 ip.sb

正常输出: 104.28.*.* 或 2a09:bac5:*:*:* 如出现错误或其它,请检查注册与设置 warp 部分是否出现错误。

2.3.3. 使用 warp 代理

2.3.3.1. 临时为部分软件启用代理

适合软件支持读取环境变量中的代理设置,常用软件大多数支持自动读取代理,如 curl、wget 等工具。如果不确定或不支持请参考后续的强制代理部分。

# 首选
export all_proxy=socks5://192.168.0.104:10808
# 不推荐,可能会遇到问题
export http_proxy=http://192.168.0.104:10809 && export https_proxy=http://192.168.0.104:10809 && export no_proxy="localhost, 127.0.0.1, ::1"
# 检查设置
env | grep -i proxy
# 使用代理
curl -4 ip.sb
# 取消终端代理
unset all_proxy
unset http_proxy https_proxy no_proxy

如果希望以上设置永久生效,可以通过使用 vi ~/.bashrc 命令编辑 BASH 配置文件,选择一种方式加到文件最后一行。

2.3.3.2. 为不支持的软件强制启用代理

对于不支持设置代理的软件,可以通过使用 proxychains4 的方式为它们强制启用代理,但注意这种方式只支持 TCP 连接

在你需要代理的命令前加入 proxychains4 使用, 例如:

proxychains4 curl ip.sb
proxychains4 python example.py

2.3.3.3. 卸载

# 卸载
warp-cli delete
apt remove --purge cloudflare-warp
apt remove --purge proxychains4

2.4. 全局 warp

使用 f 佬新的 warp 脚本解决全局 warp

cp /etc/resolv.conf{,.bak}; echo -e "nameserver 2a00:1098:2b::1\nnameserver 2a01:4f9:c010:3f02::1\nnameserver 2a01:4f8:c2c:123f::1\nnameserver 2a00:1098:2c::1" > /etc/resolv.conf

# IPv6 only 的机器选择第一项,然后一路回车全部默认即可,成功后 ping -4 google.com 可以正常响应
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh 4
proxychains4 wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && proxychains4 bash menu.sh

# warp 帮助菜单
warp h
warp -h

3. 建站

安装 nginx,套 cf 并且打开小云朵同时支持 ipv4 和 ipv6 访问。

4. 科学

4.1. x-ui

  • 因为只有 ws 才能套 cf 可以 ipv4/ipv6 使用,采用 vless+ws+tls+cf。

  • 入站端口使用 Cloudflare 默认代理的网络端口,如 8443、2052

  • Cloudflare 常用设置

    • 网站 - DNS , 设置域名解析及是否开启代理
    • 网站 - SSL/TLS,设置 SSL/TLS 加密模式(关闭/灵活/完全/完全严格)
    • 网站 - SSL/TLS - 边缘证书,始终使用 HTTPS
    • 网站 - SSL/TLS - 源服务器,源证书设置域名指向的网站证书
    • 网站 - SSL/TLS - 客户端证书,使用 Cloudflare 公钥基础结构 (PKI) 创建客户端证书。
    • 网站 - 规则,创建配置规则来按主机名自定义这些设置
  • 使用 acmesh 自签证书,给 x-ui 使用

# 部署 x-ui
bash <(curl -Ls https://raw.githubusercontent.com/FranzKafkaYu/x-ui/master/install.sh)
# 错误1
# 检测 x-ui 版本失败,可能是超出 Github API 限制,请稍后再试,或手动指定 x-ui 版本安装
# 解决1:
# warp 给的 ipv4 被 github 限制了不能访问 api 检测版本,导致中途退出
# 修改代码取消版本检测即可以
# 或者更换脚本(未实践)
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)

# ygkkk 提供了一个可以直接在 ipv6 环境下部署的脚本
# 不推荐,好像版本旧,少了比如投域名自动填写等功能
bash <(wget -qO- https://gitlab.com/rwkgyg/x-ui-yg/raw/main/install.sh 2> /dev/null)

# 查看配置
root@wap:~# cat /usr/local/x-ui/bin/config.json

4.2 Hysteria2

见 《VPS 自建 Reality 和 Hysteria2 机场节点》(../2003/2023-11-23-vps-reality-hysteria2.html) 审查内容仅管理员可见

4.3 sba(sing-box + argo)

# 未实践
bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sba/main/sba.sh)

5. 解决 debain11 上 ssh 连接慢问题

更新: 2014/01/14,wapac 用户群通知已更新 lxc 模板解决连接慢问题。

# https://gist.github.com/charlyie/76ff7d288165c7d42e5ef7d304245916
systemctl mask systemd-logind
pam-auth-update

第二个命令出来的界面,按键盘上下键移到 Register user sessions in the systemd control group hierarchy 项,按空格键取消选中,然后回车即可。退出 ssh 再连就可以实现秒进。

6. 网页 ipv4/ipv6 随时随地 SSH

《ttyd 网页 SSH》

7. ipv4/ipv6 双栈网络下配置 ipv4 优先

# 查看 IPv4/IPv6 双栈网络优先项
root@wap:~# curl ip.sb 
2607:xxx:xxx:xxx:xxx:xxx:xxx:xxx

# 修改 /etc/gai.conf
# 找到下面这一行
# precedence ::ffff:0:0/96  100
# 也可能是
# precedence ::ffff:0:0/96  10
# 取消注释,修改为:
precedence ::ffff:0:0/96  100

# 查看
root@wap:~# curl ip.sb 
142.xxx.xxx.xxx

8. 优选 IP

# TODO