解决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了。