解决V2ray不能同时监听IPv4和IPv6的问题

背景

最近一不小心,我申请到了一个免费的甲骨文云。本来我已经有VPS,可以正常科学上网,Google查资料/Youtube学习英语/Github学代码。毕竟这种免费的资源对一个程序员来说有才是最重要的,用不用的上是另一回事...

我实测了一下,我家里是电信的宽带,基本上不可用,丢包率太高了,IPv4, IPv6都试过,基本上都不太行。我手机是联通的,倒是可以正常用。只是我这个手机有点特殊,理论上说联通应该是支持IPv6的,但是我的手机却只能IPv4.

我家里的网络是双栈的,同样我也期望这个VPS也是支持双栈使用的,但是我发现v2ray在支持上却有些问题

v2ray是不能同时监听IPv4和IPv6的

我随便网上搜了一下,看来不只是我一个人遇到同样的问题.

这是github里面的Issue 请问,v2ray如何同时监听ip4和ipv6呢? 里面有提及一些方法去试,但是我看已经有人回复试过无效,所以就没有必要浪费时间了。

我们都知道,在v2ray的协议中是支持WebSocket的,nginx是可以同时监听IPv4和IPv6的,那何不使用Nginx做一个反向代理呢?

 1server {
 2    # SSL configuration
 3    listen 443 ssl;
 4    ssl_certificate yours/ssl.cer; #你的ssl证书, 如果第一次,可能还需要自签一下,
 5    ssl_certificate_key yours/ssl.key; #你的ssl key
 6
 7    ssl_prefer_server_ciphers on;
 8    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
 9    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
10
11    root /var/www/html;
12
13    # Add index.php to the list if you are using PHP
14    index index.html index.htm index.nginx-debian.html;
15
16    server_name test.v2ray.com; #你的服务器域名
17
18    location /ray { #/ray 路径需要和v2ray服务器端,客户端保持一致
19        proxy_redirect off;
20        if ($http_upgrade != "websocket") { # 为安全一点,非WS的请求直接 404 掉
21	        return 404;
22	    }
23        proxy_pass http://[::1]:10001; #此IP地址和端口需要和v2ray服务器保持一致,
24        proxy_http_version 1.1;
25        proxy_set_header Upgrade $http_upgrade;
26        proxy_set_header Connection "upgrade";
27        proxy_set_header Host $http_host;
28    }
29}

既然在 nginx 里面配置了 tls ,那 v2ray 里就不需要tls了

 1{
 2  "inbounds": [
 3    {
 4      "port": 10001,
 5      "protocol": "vless",
 6      "settings": {
 7        "clients": [
 8          {
 9            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
10            "alterId": 4
11          }
12        ]
13      },
14      "streamSettings": {
15        "network": "ws",
16        "wsSettings": {
17            "path": "/ray",
18            "host": "test.v2ray.com" //此域名是你服务器的域名
19        }
20      }
21    }
22  ],
23  "outbounds": [
24    {
25      "protocol": "freedom",
26      "settings": {}
27    }
28  ]
29}

通过和nginx的443端口通信就能正常使用v2ray查Google了。