ProjectV (V2Ray )手动WebSocket + TLS + Nginx的配置

  • A+
所属分类:未分类

我前边的文章也介绍了一些其它的ProjectV (V2Ray )一键脚本,但是,他们的WebSocket + TLS + Nginx都不是很适合我使用,因为,我在vps还使用Lnmp搭建了一个小网站,所以,只能自己手动搭建WebSocket + TLS + Nginx配置,也会简单的说一下tcp和kcp的配置。

WebSocket + TLS + Nginx

自己去解决域名的问题,我个人都是喜欢在namesilo那里注册,

域名解析到自己机器上,先安装环境“lnmp”(WebSocket + TLS + Nginx)解决,lnmp的详细问题本站搜索“lnmp”。

lnmp安装代码:

wget -c http://soft.vpser.net/lnmp/lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp  

ProjectV (V2Ray )手动WebSocket + TLS + Nginx的配置

根据自己的需要选择数字。

搭建域名网站, lnmp vhost add

ProjectV (V2Ray )手动WebSocket + TLS + Nginx的配置

www.yourdomain.com改成自己注册的解析到这个机器上的域名,

安装完了之后配置Nginx:在下边的位置修改,使用的是vim nano或者使用winscp工具修改nginx自己选择.

/usr/local/nginx/conf/vhost/www.yourdomain.com.conf

如果需要的话,在server80段添加,这个是给Http用的,不在这里使用

error_page 400 = https://www.microsoft.com;

error_page 403 = https://www.microsoft.com;

这个是把网站错误页面直接定向到别的大网站,简单暴力,懒得去挂个静态网页或者是网盘了。哈哈哈哈,除非特别审查,要不还是挺6的。

删掉80端口的内容,添加下边的,也就是80转到443

server
{
listen 80;
server_name  www.yourdomain.com;
rewrite ^(.*)$ https://$server_name$1 permanent;
index index.html index.htm;
root /home/wwwroot/www.yourdomain.com;

}

或者

http{}段中添加

proxy_intercept_errors on;

在server443中间添加一段

location /vjsun这个可以随便你填,乱码都行,只要好记 {
           proxy_redirect off;
           proxy_pass http://127.0.0.1:419;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
           proxy_set_header Host $http_host;
            
       # Show realip in v2ray access.log
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           
          }

更完整的参考:

  1. server {
  2.   listen 443 ssl;
  3.   ssl on;
  4.   ssl_certificate       /etc/nginx/ssl/domain.crt;  # 证书
  5.   ssl_certificate_key   /etc/nginx/ssl/domain.key;  # 证书
  6.   ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  7.   ssl_ciphers           HIGH:!aNULL:!MD5;
  8.   server_name           hostloc.com;  # 域名
  9.     location /  {   # 目录
  10.       proxy_redirect off;
  11.       proxy_pass http://127.0.0.1:419; # 端口
  12.       proxy_http_version 1.1;
  13.       proxy_set_header Upgrade $http_upgrade;
  14.       proxy_set_header Connection "upgrade";
  15.       proxy_set_header Host $host;
  16.       # Show real IP in v2ray access.log
  17.       proxy_set_header X-Real-IP $remote_addr;
  18.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.     }
  20. }

将网站目录 /v2ray/ 目录的数据全部转发到本地 10000 端口,之后配置的 V2Ray 需要监听这个端口。

重启Nginx

/etc/init.d/nginx restart

安装V2ray:

bash <(curl -L -s https://install.direct/go.sh)

此脚本会自动安装以下文件:

  • /usr/bin/v2ray/v2ray:V2Ray 程序
    /etc/v2ray/config.json:配置文件
    运行脚本位于系统的以下位置:
  • /lib/systemd/system/v2ray.service:Systemd
    /etc/init.d/v2ray:SysV

脚本运行完成后,你需要:

编辑 /etc/v2ray/config.json 文件来配置你需要的代理方式;
运行 service v2ray start 来启动 V2Ray 进程;
之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行。

WebSocket + TLS + Nginx配置:

下面给出一份参考配置,按着这个弄就行了,要折腾其他用途请查找官方手册。
配置的位置是在/etc/v2ray/config.json,你可以把文件下载到本地,改完了再上传上去,也可以直接在vps上使用vim,nano啥的改。然后再来个“UUID客户端就可以生成”

{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "warning"
  },
  "inbound": {
    "port": 419,
    "listen": "127.0.0.1",
    "protocol": "vmess",
    "allocate": {
    "strategy": "always"
    },
    "settings": {
    "udp": true,
      "clients": [
        {
          "id": "uuid这个随便生成",
          "level": 1,
          "alterId": 64
        },
        {
          "id": "第二个客户端的,一把钥匙一把锁的道理",
          "level": 1,
          "alterId": 64
        }

      ]
    },
   "streamSettings": {
   "network": "ws",
   "security": "auto",
   "wsSettings": {
   "connectionReuse": true,
   "path": "/vjsun这就是上面的一堆乱码,你记得到的"
}
}
  },
    "inboundDetour": [
    {
      "protocol": "shadowsocks", //如果需要开启Shadowsocks的话,就在这里添加
      "port": 998,
      "settings": {
        "method": "aes-256-cfb",
        "password": "密码",
        "udp": true
      }
    },
    {
      "protocol": "shadowsocks",
      "port": 999,
      "settings": {
        "method": "aes-256-cfb",
        "password": "密码",
        "udp": true
      }
    }
  ],
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  },
  "outboundDetour": [
    {
      "protocol": "blackhole",//广告过滤功能的参考官网配置
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "rules": [
        {
          "type": "field",
          "ip": [
            "0.0.0.0/8",
            "10.0.0.0/8",
            "100.64.0.0/10",
            "127.0.0.0/8",
            "169.254.0.0/16",
            "172.16.0.0/12",
            "192.0.0.0/24",
            "192.0.2.0/24",
            "192.168.0.0/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "blocked"
        }
      ]
    }
  }
}

其实你也发现了,419端口是可以改的,只要和Nginx里面的一样就可以,不过内网而已,不影响常用端口就好.上边的配置根据自己需要修改。特别注意:path的设置都要一致,在修改的时候一定要把网站关闭以后在重启。

客户端:

对于V2RayN,地址、端口、ID都照着配置填,加密方式随便选,gcm更安全一点,传输协议用WS,伪装None,伪装域名填/vjsun,底层传输安全选TLS,完了就保存启动就好。

TCP 模式(支持 TLS)

使用TCP来传输,这种方式和其它代理应用模式上差不多。TCP 模式可以使用 HTTP/TLS 混淆来模拟 HTTP 网站流量,但也只是模拟,并不是真实的 HTTP 流量。

header 项是关于数据包伪装的设置,可自定义合理的内容,但要确保服务器与客户端一致

服务器配置:

{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [
{
"port": 6789,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "8174b0be-a053-4012-b008-975bc78783d3",
"level": 1,
"alterId": 233
}
]
},
"streamSettings": {
"network": "tcp"
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
//include_ss
//include_socks
//include_mtproto
//include_in_config
//
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
},
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
{
"protocol": "mtproto",
"settings": {},
"tag": "tg-out"
}
//include_out_config
//
],
"dns": {
"server": [
"1.1.1.1",
"1.0.0.1",
"8.8.8.8",
"8.8.4.4",
"localhost"
]
},
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
},
{
"type": "field",
"inboundTag": ["tg-in"],
"outboundTag": "tg-out"
}
,
{
"type": "field",
"domain": [
"domain:epochtimes.com",
"domain:epochtimes.com.tw",
"domain:epochtimes.fr",
"domain:epochtimes.de",
"domain:epochtimes.jp",
"domain:epochtimes.ru",
"domain:epochtimes.co.il",
"domain:epochtimes.co.kr",
"domain:epochtimes-romania.com",
"domain:erabaru.net",
"domain:lagranepoca.com",
"domain:theepochtimes.com",
"domain:ntdtv.com",
"domain:ntd.tv",
"domain:ntdtv-dc.com",
"domain:ntdtv.com.tw",
"domain:minghui.org",
"domain:renminbao.com",
"domain:dafahao.com",
"domain:dongtaiwang.com",
"domain:falundafa.org",
"domain:wujieliulan.com",
"domain:ninecommentaries.com",
"domain:shenyun.com"
],
"outboundTag": "blocked"
} ,
{
"type": "field",
"protocol": [
"bittorrent"
],
"outboundTag": "blocked"
}
//include_ban_ad
//include_rules
//
]
},
"transport": {
"kcpSettings": {
"uplinkCapacity": 100,
"downlinkCapacity": 100,
"congestion": true
},
"sockopt": {
"tcpFastOpen": true
}
}
}

mKCP 模式

使用 UDP 来传输,mKCP是以流量换速度,就是多倍发包,同一份数据发多份,防止丢包重传,所以同一条件下使用mKCP会比其他方式耗费更多流量,不建议手机4G使用。

由于BT下载、游戏、以及视频聊天等也都是使用 UDP 传输,所以这种模式下可以伪装成 BT下载流量、FaceTime 流量、微信视频流量。

由于 BBR 是 TCP 加速技术,所以使用 mKCP 并不能享受 BBR 的加速,不过 mKCP 本身就是一种加速技术了,也并不需要 BBR。

服务器配置:

{
"inbound": {
"port": 443,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
},
"streamSettings":{
"network":"kcp",
"kcpSettings": {
"mtu": 1350,
"tti": 20,
"uplinkCapacity": 5,
"downlinkCapacity": 100,
"congestion": false,
"readBufferSize": 1,
"writeBufferSize": 1,
"header": {
"type": "none"
}
}
}
},
"outbound": {
"protocol": "freedom",
"settings": {}
}
}

在上面的配置当中,与之前相比主要的变化在于多了一个 streamSettings,包含有不少参数:

network: 网络的选择,要像上面的配置写成 kcp 才会启用 mKCP

kcpSettings: 包含一些关于 mKCP 设置的参数,有

uplinkCapacity: 上行链路容量,将决定 V2Ray 向外发送数据包的速率。单位为 MB

downlinkCapacity:下行链路容量,将决定 V2Ray 接收数据包的速率。单位同样是 MB

header:对于数据包的伪装

type:要伪装成的数据包类型

客户端的上行对于服务器来说是下行,同样地客户端的下行是服务器的上行,mKCP 设置当中服务器和客户端都有 uplinkCapacity 和 downlinkCapacity,所以客户端的上传速率由服务器的 downlinkCapacity 和客户端的 uplinkCapacity 中的最小值决定,客户端的下载速率也是同样的道理。因此,建议将服务器和客户端的 downlinkCapacity 设成一个很大的值,然后分别修改两端的 uplinkCapacity 以调整上下行速率。

还有一个 header 参数可以对 mKCP 进行伪装,这是 mKCP 的一个优势。具体的伪装在 type 参数设置,type 可以设置成 utp、srtp、wechat-video 或者 none,这四个可以分别将 mKCP 数据伪装成 BT 下载、视频通话、微信视频通话以及不进行伪装。这里的 type 参数,客户端与服务器要一致。

本文的配置文件最好在:”notepad++“或者”UltraEdit1“中编辑好了在进行使用

配置生成网站:地址

这是配置好的config,自己修改;tcp         web

weinxin
我的QQ群
这是我的QQ群扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

    • 桃花懂了 桃花懂了 0

      6666完全没问题

      • 网络小白 网络小白 0

        这种方法搭建的会出现以下提示 2019/12/19 22:28:17 [Info] [3524646711] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: failed to transfer request > websocket: close 1000 (normal)
        2019/12/19 22:28:17 [Info] [3524646711] v2ray.com/core/app/proxyman/inbound: failed to close connection > v2ray.com/core/transport/internet/websocket: failed to close connection > v2ray.com/core/transport/internet/websocket: websocket: close sent
        2019/12/19 22:28:17 [Info] [3524646711] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
        不知道该怎么解决这些提示