目录
我前边的文章也介绍了一些其它的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](https://www.vjsun.com/wp-content/themes/begin/inc/go.php?url=http://soft.vpser.net/lnmp/lnmp1.4.tar.gz) && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp
根据自己的需要选择数字。
搭建域名网站, lnmp vhost add
。
www.yourdomain.com改成自己注册的解析到这个机器上的域名,
安装完了之后配置Nginx:在下边的位置修改,使用的是vim nano或者使用winscp工具修改nginx自己选择.
/usr/local/nginx/conf/vhost/www.yourdomain.com.conf
如果需要的话,在server80段添加,这个是给Http用的,不在这里使用
这个是把网站错误页面直接定向到别的大网站,简单暴力,懒得去挂个静态网页或者是网盘了。哈哈哈哈,除非特别审查,要不还是挺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;
}
更完整的参考:
- server {
- listen 443 ssl;
- ssl on;
- ssl_certificate /etc/nginx/ssl/domain.crt; # 证书
- ssl_certificate_key /etc/nginx/ssl/domain.key; # 证书
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers HIGH:!aNULL:!MD5;
- server_name hostloc.com; # 域名
- location / { # 目录
- 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 $host;
Show real IP in v2ray access.log
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
将网站目录 /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