启用 IPv6 (因为 IPv4 收费了)

AWS 要开始对一些服务的公网 IPv4 进行收费了, 比如 LightSail,
不过 IPv6 还是可以免费的, 之前一直偷懒, 没有换 IPv6,
今天决定把 IPv6 用起来.

启用 IPv6

ISP

首先看 网络业务提供商 ISP 是否支持, 这个可以看看 Modem IP 或 路由器 WAN 口 IP 有没有 IPv6 .

路由器

接着, 检查路由器是否支持 IPv6, 爸妈家里有个 2015 年买的路由器都是支持的.

这里要注意路由器的 无线 连接设置, 有些路由器启用无线+路由功能时不能支持 IPv6,
需要改为交换机模式下才能用上 IPv6, 这跟路由器的实现有关, 毕竟不是所有路由器都有 IPv6 NAT 的.

所以最好还是先用网口的有线连接进行测试, 而且如果用了 VMWare 虚拟机实例 也可以避免一些奇怪的问题,
在有线连接的测试通过之后, 再进行 路由器和无线 的配置优化.

操作系统

如果是 Windows, 需要检查 控制面板/网络和Internet/网络连接 是否开启了 IPv6 协议和支持.
如果是 Linux, 最快的是 ip a 看看有无 IPv6, 否则根据对应发行版的 OS 文档进行开启.

Manjaro Desktop 和 Debian Server

因为我使用的是 Manjaro Linux, 那么主要说说我用到的相关 Desktop 设置,
VPS 服务器用的则是 Debian Linux.

DNS 服务商的域名解析配置

之前使用 IPv4 时, DNS 解析是用到 A 记录, 是把 服务器域名 映射到 IPv4 地址.
IPv6 的话, 则是用 AAAA 记录, 是把 域名 映射到 IPv6 地址.

然后进行试试 ping (如果 vps 没有禁止的话) :

ping -6 your_vps_domain_name

客户端使用的 DNS 服务器

增加 IPv6 的 DNS, 比如 Google 的 2001:4860:4860::8888 .

vim /etc/systemd/resolved.conf
resolvectl status

V2ray

Client 端:
因为 outbounds 连接服务端用的是域名, 前面我们已经把域名解析后的 IP 换成了 IPv6,
所以现在只需要修改 inbounds 即可, 比如 socks5 和 http 代理:

"inbounds": [
{
"port": 1080,
"listen": "::1",
"protocol": "socks",
...
},
{
"protocol":"http", "port": 8119, "listen": "::",
...
}

Server 端:
把 inbounds 里的 listen 地址改为 IPv6, 接收客户端的请求 :

"inbounds": [
{
"listen":"::1",
}
]

Nginx

Nginx 主要是增加对 IPv6 端口的 listen,
此外 Nginx 内部转发时, 也需要改为 IPv6 地址.

vim /etc/nginx/sites-enabled/foo.conf

server {
listen 8443 ssl;
listen [::]:8443 ssl;
...
location /ws {
proxy_pass http://[::1]:10000;
...
}
}

参考

https://www.zhihu.com/question/31699421