自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket
【美博翻墙2020.8.21】trojan、v2fly(V2Ray)、NaiveProxy系列翻牆方法中,因封鎖加劇,目前美博建議僅使用如下建立的NaiveProxy:
手动申请SSL证书自建代理:NaiveProxy + Caddy - 美博园 https://allinfa.com/manual-ssl-certificate-naiveproxy-caddy.html 自建代理申请SSL证书频频失败的测试记录 - 美博园 https://allinfa.com/ssl-certificate-failed-test-record.html
-------------------------------------------------------------
据V2Ray官方8月15通知、网友及时提醒,原V2Ray安装脚本已经弃用,启用新的安装脚本,美博在实际测试时发现新程序的核心文件路径也有改变,所以上一版教程中的一些设置顺序、配置方法等也需要调整,改动比较大,所以在原教程【自建最强科学上网2:V2Ray+Caddy+Tls+WebSocket】基础上发布此新教程,标题为:自建最强科学上网2+ ,本方法的原教程作废,需要的网友请按照本教程安装 V2Ray+Caddy+Tls+WebSocket 代理。
V2Ray提供了一个优秀的科学上网平台,网友可以在其独特VMess协议上发挥创意设计出多样的翻墙方法,把翻墙完全隐身于访问网站(网页)之中,提供了目前最安全的翻墙方式。本文介绍 V2Ray+Caddy+Tls+HTTP/2 自建翻墙代理方法。
本方法代理构建的系统要求:Ubuntu ≧ 16.04 or Debian ≧ 9,建议使用 Debian 10,不适用于 CentOS 。
一、基本介绍
1、关于v2fly的几点说明
1)v2fly与V2Ray,为什么新名称叫v2fly
二者是一样的,核心程序仍然是V2Ray-core,仍然是V2Ray代理,这个没有变动。
改名v2fly,官方给出的原因是:
由于原开发者长期不上线,其他维护者没有完整权限。为了方便维护,我们创建了新的 organization,即 v2fly
原 organization 中的仓库:v2ray/v2ray-core 将会一直同步更新。
也就是说,因原主要开发人员的“失踪”,原V2Ray团队的其他成员为了维护方便,以v2fly的新名称,继续V2Ray代理的开发完善。
2)已经安装的V2Ray代理可以继续使用吗?
已经用以前方法构建的V2Ray代理,可以继续使用,也可以按照本教程重新安装新的V2Ray。
对于翻墙工具,民众翻墙与中共网络封锁是一场正与邪大战。翻墙工具会不时更新、修补发现的问题和加强翻墙能力,所以,所有的翻墙工具,都需要保持最新,这样比较好。V2Ray代理也是一样,研发团队也在不断改進增强V2Ray代理功能。所以,不时更新V2Ray等等翻墙代理,这是一种好习惯。
改名v2fly后,官方有介绍V2Ray迁移至v2fly的方法。不过,代理构建方法总是会不断更新的,学会用新的方法构建代理也是很好。如果你的VPS的ip还可用,不想更换ip,那就只需要重新安装系统,保留ip,重新按照本教程方法安装新的V2Ray;如果你想ip都换新的,那就“销毁”系统,在新的VPS上全新构建V2Ray。
3)关于VLESS 新协议
v2fly开发的V2Ray又一个新的协议 VLESS,以前V2Ray的特有协议是 VMess。即:目前V2Ray有二个特有协议:VMess 和 VLESS。
VLESS 是一个无状态的轻量传输协议,它分为入站和出站两部分,可以作为 V2Ray 客户端和服务器之间的桥梁。
与 VMess 不同,VLESS 不依赖于系统时间,认证方式同样为 UUID,但不需要 alterId。
美博本教程仍然采用 VMess协议,因为:
a)VLESS协议还处于公测阶段,没有完全稳定、定型; b)目前 VLESS 没有自带加密,需用于可靠信道,如 TLS; c)VLESS 公测测试期间请确保客户端与服务端的 v2ray-core 均为最新版本; d) VLESS 协议本身还会有不兼容升级的问题。
以后VLESS稳定发布后,美博再更新VLESS方法的教程。
2、v2fly/V2Ray基本介绍
1)、v2fly/V2Ray是什么
V2Ray 是在 Shadowsocks 作者被请喝茶之后出现的一个开源项目,V2Ray是早期的叫法,后来 V2Ray 规模越来越大,就成立一个 Project V 项目。
美博翻墙这里重点介绍建立代理的具体步骤,原理不详细介绍,要了解原理的网友,请参考v2ray官方的详细介绍。
v2fly 官方项目: https://www.v2fly.org/ https://github.com/v2fly https://t.me/v2fly https://github.com/v2fly/fhs-install-v2ray https://t.me/s/v2fly https://twitter.com/realV2Fly v2ray官方: https://github.com/v2ray https://www.v2ray.com/
2)、V2Ray 的特点
※ 多入口多出口: 一个 V2Ray 进程可并发支持多个入站和出站协议,每个协议可独立工作。
※ 可定制化路由: 入站流量可按配置由不同的出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能。
※ 多协议支持: V2Ray 可同时开启多个协议支持,包括 Socks、HTTP、Shadowsocks、VMess 等。每个协议可单独设置传输载体,比如 TCP、mKCP、WebSocket 等。V2Ray提供自己原创的加密协议VMess,一般声称支持V2Ray,就是指支持 VMess协议;
※ 隐蔽性: V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。
※ 反向代理: 通用的反向代理支持,可实现内网穿透功能。
※ 多平台支持: 原生支持所有常见平台,如 Windows、Mac OS、Linux,并已有第三方支持移动平台。
------------- 美博翻墙(allinfa.com)发布的几个目前最好的自建代理,可自行选择使用: 自建最强科学上网3+:trojan + Caddy(SSL证书自动续期) 自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket 自建最强科学上网5+:V2ray + Caddy + Tls + HTTP/2 自建最强科学上网4:NaiveProxy + Caddy 美博点评:V2Ray、trojan、NaiveProxy代理的异同及相关问题 美博认为这几个组合都是目前翻墙思路最好、最强的翻墙方法,可等同使用。 -------------
3)、本文有关的几个组件原理介绍
本方法以Caddy作为前端web服务器,是一个轻便的web部署工具,其功能与 nginx 类似。其优点是:单文件,无依赖,安全、轻量、方便;安装快速、不到30秒可创建一个 HTTPS 服务器;不受制于EE的版本限制,可广泛应用于各种系统;配置文件简洁,多站点配置、反向代理等功能都在一个 Caddyfile 文件里配置;默认启用HTTPS,自动签发免费的 Let's Encrypt https 证书并自动续约,默认支持HTTP/2(H2)网络协议;还有丰富的插件系统,可以快速配置缓存、CORS、自动拉取 Git 仓库、Markdown 支持、ip/地区过滤等功能。
V2Ray:用于构建代理绕过网络限制、审查、翻墙的平台。
Caddy:作为部署代理的前端web服务器。
WebSocket:是一种计算机通信协议,可通过单个TCP连接提供全双工通信通道。
HTTP/2(H2):是互联网HTTP网络协议的主要修订版。它源自Google最初开发的实验SPDY协议。
TLS:安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
反向代理:相对正向代理而言,真实的web服务器受到保护、对外不可见,外网只能看到反向代理,而反向代理服务器上并没有真实数据,从而保护web服务器的资源安全,并可加速网站访问速度等。
二、前期准备
自建V2Ray需要准备的几个工具:
1)一台 VPS 主机
2)一个域名
3)SSH连接工具:以前用putty较多,现在用Xshell很方便,本文会以Xshell进行说明。
1.1、选择 VPS 服务器并安装系统
首先我们需要一台用作建立代理服务器的主机,我们选择VPS主机,如何购买VPS、如何安装系统,都很简单,几乎都是自动操作,很快就可以完成,请见教程:
自己搭建代理服务器:VPS的选择 自己搭建代理服务器:Vultr VPS 购买图文教程 自己搭建代理服务器:Vultr VPS 系统安装图文教程
提示:
1)安装系统时请注意,本方法适用于 Ubuntu ≧ 16.04 or Debian ≧ 9,建议使用 Debian 10,不适用于 CentOS;
2)VPS安装系统后主机会显示:ip地址、密码、用户名(默认是root),后面会用到。
1.2、购买域名并设置与服务器ip关联
利用v2ray建立代理,并非一定需要域名,不要域名也可以建立代理。但是,整合有域名的代理技术,可明显提高代理安全性,多一个域名整合进来是值得的。
美博本文介绍的是整合有域名的方法。
请参考教程:
自己搭建代理服务器:域名购买及设置与ip服务器关联
域名是为了建立网站(网页)用的,本方法实际建立一个网站(网页),将翻墙代理隐身其中,翻墙就像是实实在在的在浏览网站,消除代理的特征信号,提高翻墙代理安全性,这样的思路一直以前的翻墙软件难以实现的,自从v2ray发布后,众多的网友不断推進v2ray用法,目前成为最好的翻墙方法系列。
1.3、用SSH工具连接VPS服务器
要如何操作远端VPS主机?如何发出指令让远端服务器执行?其实很简单。在自己的电脑上安装一个软件,即SSH工具,我们这里选用 XShell软件,用上一步安装系统后得到的ip或用户名(root)、密码,就可以登入远端主机并发出指令了。
通过 XShell软件進行安全的SSH连接到远端的VPS服务器后,所有的操作都是在我们在自己的电脑上完成,在自己的电脑上就可以发出各种指令(命令)来安装系统、安装各种应用程序,包括下面要介绍的我们建立代理的各种组件等等,没有什么难以操作的东西,一步一步准确的,一定要准确,把下面各个步骤的指令复制、粘贴、执行(回车 Enter),就这样重复的动作,不懂原理没有关系,只要一步步执行下去,大约半小时(不熟悉时可能时间长一些)就完成全部命令输入,如无操作疏失,代理就建立好了,就这么简单。
如何操作 XShell软件,请见教程:
SSH连接软件-Xshell下载及使用教程
如果你使用的是Linux或macOS系统,他们本身就内置有SSH链接的终端模拟器,无需下载额外的软件。
※ 几点通用说明 ※
# 本文方法以root用户来构建,建议不熟悉改变命令的网友不要自建用户,否则此法的很多命令将不可用。 # 新手注意:以下命令都是在英文半角输入下完成,电脑的输入法不要处于中文输入状态,以免无意输入中文字符出错。 # 在执行下面各种命令时,首先都是要以root用户登录SSH连接VPS服务器,然后输入各种命令来执行。 # 下面的步骤,如果不明白其中命令的含义没有关系,请按照下面的全部顺序,有的步骤是不能移动顺序的,一步一步输入命令完成即可,一定要准确的复制、粘贴,不要复制到空格、前后字符等命令以外的任何字符。
三、电脑通过SSH加密连接远端VPS服务器
VPS上安装系统后,就会有登入密码和用户(默认是root);
自己的电脑上打开Xshell,用上述密码和用户名,登入后就通过SSH将自己的本地电脑与远端VPS服务器加密连接起来了;
以下构建代理的命令,都是在Xshell進行。
四、自建V2Ray代理的具体操作步骤
概括而言,自建V2Ray代理大致分为三个大的部分:
1)“服务器端”:即VPS主机端安装代理服务器、前端web服务器,及其配置;这个是在远端VPS主机建立代理服务器;
2)“客户端”:软件及配置;即:本地用户自己的电脑端设置;
3)上网使用代理:即浏览器设置及使用代理。
在前期准备好VPS服务器、安装后系统、域名并正确解析、SSH链接工具后,下面就是具体的代理制作过程。
美博本教程按照实际搭建过程的顺序来书写具体操作步骤,请网友自建代理时,按照下面编号顺序一步一步往下走,有的步骤的先后顺序是不能变动的。
1、更新及优化系统
一般情况,在购买VPS时已经选择了安装系统,但不一定是最新的,首先我们要输入指令更新系统:
1-1、更新系统及设定时区
输入:
dpkg-reconfigure tzdata && apt update && apt -y upgrade
然后,回车执行
注:以下每个命令输入后都要按[Enter] 回车执行,下面不再重复注明。
弹出窗口
在出现的窗口中,这里可选择时区:
用键盘上下键,选择:
–> Asia,回车
再选择
–> Hong Kong 回车
之后就会下载更新
安装过程中,在命令框中可看到不断的数据变化,最下方有进度显示,至100%很快完成。大约十几秒钟完成。
1-2、时间校准
据v2ray官方介绍:基于安全设定,V2Ray的VMess协议要求它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以,电脑系统时间和VPS服务器时间一定要正确,需要保证时间误差在90秒之内就没问题。
当然一般来说,你的电脑、VPS服务器本身是会自动调准时间的,时间一般是准确的,为了避免可能的时间误差,可以在此先调整时间。
可以执行命令 date -R 查看时间:
输入:
date -R
会显示出,如:
Sun, 22 Jan 2017 09:10:36 -0500
显示的结果中的 -0500 代表的是时区为 西5区,如果转换成 东8区时间则为 2017-01-22 22:10:36
对VPS的时间校准之后,自己的个人电脑时间也要调准,电脑时间调准这里不再赘述,网上方法很多。
然后,这里要检查的是VPS服务器和自己电脑(客户端)的“时间误差”,时区差异没有关系,因为 V2Ray 会自动转换时区,但是时间一定要准确,即时间误差在90秒之内。
也就是说:我们要重点看的是自己电脑时间的 “分”和“秒”,以及上例中的 “10:36”,比较两者相差不能超过 90秒,这是一般情况,如果两者相差在小时位,那种情况差异就很少了。
如果时间不准确,可以使用 date --set 修改时间:
如要修改时间为2017-01-22 16:16:23,则输入:
sudo date --set="2017-01-22 16:16:23"
会显示出,如:
Sun 22 Jan 16:16:23 GMT 2017
1-3、安装依赖环境cURL
输入:
apt install curl -y
瞬间即可安装完成。
补充:有的低版系统需要安装 unzip 和 daemon,后面会用到,这里可以先安装
输入:
apt install unzip daemon -y
1-4、编辑sysctl.conf配置文件
Linux有很多文本编辑器,如:nano、vi等等,就如同windows系统中的记事本、写字板、EmEditor等文字编辑器一样的作用。本文用nano编辑器来编辑Linux系统的配置代码等。
输入
nano /etc/sysctl.conf
编辑器打开后会有一个#绿色光标,这是可输入内容的位置,都是象这样子:
请注意一下使用nano编辑器和粘贴命令的规范操作,新手常常输入出错:
打开编辑器后,在#绿色光标处,先按enter回车,就会增加一空行;
再按“左方向键←” 让绿色光标上移到空行处;
然后,点鼠标右键,在右键菜单中点“粘贴”,不要使用ctrl+v来粘贴;
这样就可以看到上述设置内容粘贴到nona编辑器中新增的空行处了。
请记住:以下nano编辑操作都要如上所述。
1)调整系统控制参数
为代理服务器优化配置,将以下配置内容粘贴到上面命令打开的/etc/sysctl.conf文件的绿色光标处.
# max open files fs.file-max = 51200 # max read buffer net.core.rmem_max = 67108864 # max write buffer net.core.wmem_max = 67108864 # default read buffer net.core.rmem_default = 65536 # default write buffer net.core.wmem_default = 65536 # max processor input queue net.core.netdev_max_backlog = 4096 # max backlog net.core.somaxconn = 4096 # resist SYN flood attacks net.ipv4.tcp_syncookies = 1 # reuse timewait sockets when safe net.ipv4.tcp_tw_reuse = 1 # turn off fast timewait sockets recycling net.ipv4.tcp_tw_recycle = 0 # short FIN timeout net.ipv4.tcp_fin_timeout = 30 # short keepalive time net.ipv4.tcp_keepalive_time = 1200 # outbound port range net.ipv4.ip_local_port_range = 10000 65000 # max SYN backlog net.ipv4.tcp_max_syn_backlog = 4096 # max timewait sockets held by system simultaneously net.ipv4.tcp_max_tw_buckets = 5000 # TCP receive buffer net.ipv4.tcp_rmem = 4096 87380 67108864 # TCP write buffer net.ipv4.tcp_wmem = 4096 65536 67108864 # turn on path MTU discovery net.ipv4.tcp_mtu_probing = 1 # for high-latency network net.core.default_qdisc=fq net.ipv4.tcp_congestion_control = bbr
2)退出nano编辑状态
注:下面凡是用到nano编辑命令的,退出nano编辑状态都是这个办法。
输入上述内容后,如何退出nano编辑状态
同时按 Ctrl + X 若询问你是否储存档案 (Save modified buffer? (Answering "No" will DISCARD changes.)) , 输入 y 再按 Enter(回车),就可以退出nano编辑状态了。
1-5、激活更改
输入:
sysctl -p
美博提示:此步是一个通用命令,一般在修改了系统配置文件后,都需要执行一次这个命令。
1-6、编辑安全限制配置文件 --- 此步非必须,可做可不做
1)将文件数限制增加到51200
输入
nano /etc/security/limits.conf
如上所述,打开编辑器后,在#绿色光标处,先按enter回车,就会增加一空行;
再按“左方向键←” 让绿色光标上移到空行处;
然后,点鼠标右键,在右键菜单中点“粘贴”,不要使用ctrl+v来粘贴;
这样就可以看到上述设置内容粘贴到nona编辑器中新增的空行处了。
* soft nofile 51200 * hard nofile 51200
然后,同时按 Ctrl + X,再按y,再按 Enter(回车),退出nano编辑状态。
2)将当前文件数限制设置为51200
输入:
ulimit -SHn 51200
3)编辑永久配置文件:
输入:
nano /etc/profile
如上所述,打开编辑器后,在#绿色光标处,先按enter回车,就会增加一空行;
再按“左方向键←” 让绿色光标上移到空行处;
然后,点鼠标右键,在右键菜单中点“粘贴”,不要使用ctrl+v来粘贴;
这样就可以看到上述设置内容粘贴到nona编辑器中新增的空行处了。
ulimit -SHn 51200
然后,同时按 Ctrl + X,再按y,再按 Enter(回车),退出nano编辑状态。
2、安装 Caddy
Caddy是一个前端web服务器,因Caddy在默认情况下自动使用 HTTPS,可以很方便用来做一个代理的伪装网站、反向代理、SSL自动续期。
--- 补充说明 开始 ---
有网友提醒:在谷歌云(GCP,Google Cloud Platform)上的debian系统没有自带wget。
如果你使用的是谷歌云,在这里安装caddy之前,在此步需要先安装wget
若你使用的其它VPS也遇到无法安装caddy,提示:wget: command not found
也可以试用下面方法:
输入:
sudo apt-get install yum
再输入:
yum -y install wget
--- 补充说明 结束 ---
2-1、安装Caddy个人使用版本
说明:因caddy停止下载v1版,本教程修正此替代安装方法,文件为官方原版,安装连接由美博产生,是安全可靠的。但此处安装链接可能不定时改变,请网友安装时,不时浏览本教程当下的安装指令。
依次输入:
wget -P /usr/local/bin "https://daofa.cyou/c1/caddy.tar"
tar -xvf /usr/local/bin/caddy.tar -C /usr/local/bin
rm /usr/local/bin/caddy.tar
2-2、确定caddy文件安装在何处
输入:
whereis caddy
显示为:
root@vmi:~# whereis caddy
caddy: /usr/local/bin/caddy
2-3、赋予所有权和权限
#root拥有caddy文件防止其他账户修改
输入:
chown root:root /usr/local/bin/caddy
#修改权限为755,root可读写执行,其他账户不可写
输入:
chmod 755 /usr/local/bin/caddy
2-4、允许Caddy绑定到低号端口
# Caddy不会由root运行,使用setcap允许caddy作为用户进程绑定低号端口(服务器需要80和443)
输入:
setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
# 如果此步出现下面提示
setcap: command not found
那就安装需要 libcap2-bin
请输入:
apt install libcap2-bin
如果没有此提示,就不用此步。
2-5、www-data的组和用户
检查名为www-data的组和用户是否已经存在
输入:
cat /etc/group | grep www-data
显示为:
root@vm:~# cat /etc/group | grep www-data
www-data:x:33:
输入:
cat /etc/passwd | grep www-data
显示为:
root@vm:~# cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
注意:你的显示结果与上面一样,不需要下面输入,如果显示不一样、其组和用户不存在,则需要创建它们:
输入:
groupadd -g 33 www-data
输入:
useradd -g www-data --no-user-group --home-dir /var/www --no-create-home --shell /usr/sbin/nologin --system --uid 33 www-data
2-6、为 Caddy 创建目录
#创建文件夹存储Caddy的配置文件
输入:
mkdir /etc/caddy
#创建文件夹存储Caddy所管理的站点证书
输入:
mkdir /etc/ssl/caddy
#允许root及www-data组访问相关文件,允许Caddy写入站点证书文件夹
依次输入【每输入一行都要回车(按[Enter])】:
chown -R root:root /etc/caddy
chown -R root:www-data /etc/ssl/caddy
chmod 770 /etc/ssl/caddy
#创建记录文件
依次输入【每输入一行都要回车(按[Enter])】:
touch /var/log/caddy.log
chown root:www-data /var/log/caddy.log
chmod 770 /var/log/caddy.log
3、创建网站(网页)- 真实的伪装网站
在代理的前端做一个实实在在的网站,用代理时就象是真正在浏览一个加密网站,提高安全性。
3-1、为您的网站创建目录
这是指定你的网站(网页)建立的位置。
#如果默认站点根目录不存在,创建以下文件夹
输入:
mkdir -p /var/www/html
#允许www-data组拥有站点文件夹
输入:
chown -R www-data:www-data /var/www
#创建空的Caddy配置文件
输入:
touch /etc/caddy/Caddyfile
3-2、向网站添加内容
基本上有二种方式,一种是建立一个简单的网页,另一种是建立一个实实在在的简易网站,可以装一些内容。当用域名访问时,是可以看到真实内容的。美博这里介绍创建一个简单网页的方法。
1)创建一个网站的方法
这里只是给朋友们提供一个思路去自己处理:
本方法的掩护网站建立的位置在 /var/www/html/ 目录中,其中网页启动文件是 index.html。
了解网站的网友知道,你自己可以在网上找到很多网站模板(主题)程序,到处都有网站模板(主题)演示,下载一个模板(主题)后,把其全部文件(只要里面的内容文件,不要模板(主题)名目录)复制到 /var/www/html/ 目录中,其中的 启动文件 index.html 一定要在 html/ 目录下,不要放在其它子目录中,就OK了。
如何将本地电脑的网站模板文件上传到指定的服务器 /var/www/html/ 目录中,请参考教程:
WinSCP:连接远端服务器的管理传输工具的使用教程
建议:不要变动以上的网站目录结构(路径),不然就可能需要更改目录路径和重新设置安装本文一些其它步骤。
2)创建一个网页的方法
这个方法简单,可以广泛采用这个方法。
先特别说明:里面的中文字内容,请不要千篇一律的复制,可任意改为你自己编辑的独一无二的、普通的、无敏感词的内容,如:诗词、图片、外文等等,
a、首先创建一个作为掩护的真正的网页
输入:
touch /var/www/html/index.html
b、编辑网页文件
输入:
nano /var/www/html/index.html
将以下格式的、改编为你自己内容的 网页内容粘贴到 #绿色光标处
记住:请按照里面说明一定要改编为你自己的内容。
<!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> <h1 style="font-family: sans-serif"> 这里是标题,这些中文字可改为你自己的任何语言的任何内容 </h1> 这里是网站网页正文内容, 这些中文字可改为你自己的任何语言的任何内容 添加多少内容都可以 代码部份不要改动,是一个简易网页的结构 网站网页正文内容-结束 </body> </html>
注:图片加入的格式为:<img src="你的图片链接" />,可以加入多张图片,图文并茂更好,图片插入的位置可以在你的正文内容(即上例所示的中文字部份)的“任意”位置。
总之,就是改为你自己知道的唯一的内容, 重申:其中不要有敏感字词。
同上所述:nano编辑器和粘贴的的规范操作:
打开编辑器后,在#绿色光标处,点鼠标右键,在右键菜单中点“粘贴”,不要使用ctrl+v来粘贴;
这样就可以看到上述设置内容粘贴到nona编辑器中新增的空行处了。
然后,按老规矩退出nano编辑状态:
同时按 Ctrl + X
若询问你是否储存档案,按下 y
再按 Enter(回车),退出nano编辑状态。
4、设置SystemD服务
4-1、安装SystemD服务,配置 caddy.service
由于caddy准备抛弃caddy v1,所以后来的配置文件一改再改。我们自己来创建这个配置文件,比较稳妥实用,这个就不依赖于 caddy.service 的官方下载。
1)创建 caddy.service 空文件
输入:
touch /etc/systemd/system/caddy.service
2)在nano编辑器中打开caddy.service
输入:
nano /etc/systemd/system/caddy.service
3)编辑caddy.service配置
将下面内容“原封不动”的复制出来,然后右键粘贴到nano编辑框中
[Unit] Description=Caddy HTTP/2 web server Documentation=https://caddyserver.com/docs After=network-online.target Wants=network-online.target systemd-networkd-wait-online.service ; Do not allow the process to be restarted in a tight loop. If the ; process fails to start, something critical needs to be fixed. StartLimitIntervalSec=14400 StartLimitBurst=10 [Service] Restart=on-abnormal ; User and group the process will run as. User=www-data Group=www-data ; Letsencrypt-issued certificates will be written to this directory. Environment=CADDYPATH=/etc/ssl/caddy ; Always set "-root" to something safe in case it gets forgotten in the Caddyfile. ExecStart=/usr/local/bin/caddy -log stdout -log-timestamps=false -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp ExecReload=/bin/kill -USR1 $MAINPID ; Use graceful shutdown with a reasonable timeout KillMode=mixed KillSignal=SIGQUIT TimeoutStopSec=5s ; Limit the number of file descriptors; see `man systemd.exec` for more limit settings. LimitNOFILE=1048576 ; Unmodified caddy is not expected to use more than that. LimitNPROC=512 ; Use private /tmp and /var/tmp, which are discarded after caddy stops. PrivateTmp=true ; Use a minimal /dev (May bring additional security if switched to 'true', but it may not work on Raspberry Pi's or other devices, so it has been disabled in this dist.) PrivateDevices=false ; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys. ProtectHome=true ; Make /usr, /boot, /etc and possibly some more folders read-only. ProtectSystem=full ; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there. ; This merely retains r/w access rights, it does not add any new. Must still be writable on the host! ReadWritePaths=/etc/ssl/caddy ReadWriteDirectories=/etc/ssl/caddy ; The following additional security directives only work with systemd v229 or later. ; They further restrict privileges that can be gained by caddy. Uncomment if you like. ; Note that you may have to add capabilities required by any plugins in use. ;CapabilityBoundingSet=CAP_NET_BIND_SERVICE ;AmbientCapabilities=CAP_NET_BIND_SERVICE ;NoNewPrivileges=true [Install] WantedBy=multi-user.target
然后,按老规矩退出nano编辑状态:
同时按 Ctrl + X
若询问你是否储存档案,按下 y
再按 Enter(回车),退出nano编辑状态。
4-2、设置caddy.service权限
输入:
chown root:root /etc/systemd/system/caddy.service
输入:
chmod 644 /etc/systemd/system/caddy.service
4-3、重载systemd使其检测到新安装的Caddy服务
输入:
systemctl daemon-reload
5、安装及配置 V2Ray
5-1、安装官方V2Ray
如前所述,V2Ray官方有变动因素,V2Ray原安装脚本近日已经停止不用,请网友按照如下步骤進行新的安装。
美博提醒:
网上有一些安装v2ray的一键安装包,美博在此郑重提醒网友:最好是直接安装官方版V2Ray,就是美博本教程用到的方法,其实就是简单的命令,并不复杂。
网上有些一键安装包只会省略很少的步骤,但安装包里面却有一些特别的设置,如过滤了一些海外敏感网站、植入广告、后门等等,这对网友并非都适用,切记!
1)先下载指令
依次输入:
curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh
该脚本在运行时会提供 info 和 error 等信息,可参考阅读。
2)安装和更新 V2Ray
输入:
bash install-release.sh
此步也是很快完成,显示为:
root@vr:~# bash install-release.sh
% Total % Received % Xferd Average Speed Time Time Time Current
………………
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service
removed: /tmp/tmp.veZGv9nlis/
info: V2Ray v4.27.0 is installed.
You may need to execute a command to remove dependent software: apt remove curl unzip
Please execute the command: systemctl enable v2ray; systemctl start v2ray
此程序脚本会自动安装以下文件:v2fly与V2Ray文件位置有些有改变 /usr/local/bin/v2ray:V2Ray 主程序; /usr/local/bin/v2ctl:V2Ray 辅助工具; /usr/local/share/v2ray/geoip.dat:IP 数据文件 /usr/local/share/v2ray/geosite.dat:域名数据文件
3)安装最新发行的 geoip.dat 和 geosite.dat
geoip.dat 和 geosite.dat 是V2Ray自己整理的 IP数据文件和域名数据文件。
其实,这个在安装V2Ray时就已经有安装,只不过这些ip数据可能变动频繁,与官方V2Ray更新不一定一致,所以,需要另外单独运行以下命令,保持最新的ip和域名数据。
输入:
bash install-dat-release.sh
5-2、自己生成UUID和设置端口(PORT)
v2fly升级后,一点不同是,这里安装V2Ray时不再出现原自动生成的 PORT 和 UUID,但是,UUID仍然是必须的,仍然是v2fly升级的新版V2Ray代理的通关密码!!!
所以,这里的UUID和设置端口(PORT)要我们自己设置,美博教程在此步设置。
a)设定一个端口(PORT)值
在本教程中举例为:33888,这个端口值,你需要自己设置为任何数字。以前会在V2Ray安装时自动产生,官方安装脚本改变后,现在是需要自己设定,你可以设定为任何数字,一般任意设置一个5位数字就好,请注意后面的v2ray就是监听33888这个端口,所以:
按照美博教程,这个端口号,需要在这一步自己设置,可以任意,5位数字,但这个数字在后面V2Ray服务器设置时会用到,二者务必保持一致!
b)生成 UUID
UUID 的格式就是这样,数字+字母组合,不要用符号
a1199f80-a920-437b-9531-7f86b62533a0
8位-4位-4位-4位-12位,中间用连字符“-”连接
共 32位数字字母组合
那么如何生成这个UUID?
方法一、自己对照格式,编一个就行;
记住:一定要格式正确!
方法二、v2fly官方网站上生成
网址是:https://www.v2fly.org/awesome/tools.html
UUID:就是密码,请将 Port 和 UUID 这二项资料复制保存记录下来,这个不能错。在下面设置服务器配置和设置客户端配置时都会用到。
5-3、编辑 V2Ray 服务器配置文件
1)备份原有的服务器配置文件:
输入:
cp /usr/local/etc/v2ray/config.json /usr/local/etc/v2ray/config.json.bak
2)、清空原有内容并打开配置文件:
输入:
rm /usr/local/etc/v2ray/config.json && nano /usr/local/etc/v2ray/config.json
---- 这段说明非必需操作,需要时作参考-----------
请注意:有的网友可能会多次编辑这个配置文件时,那么: 上面这个rm命令是要清空配置文件里的原有内容,然后nano打开编辑器,这样的话里面是空的,方便网友直接把配置文件粘贴進去就好。 但,若是只想对原有配置文件進行细节修改、或者查看,就不要加上rm删除命令,只要下面命令即可: nano /usr/local/etc/v2ray/config.json 然后用键盘上的四个方向箭头来移动光标位置,用Backspace键来向前删除要修改的内容。
3)将自己的v2ray服务器配置文件内容编辑進去:
这里要做的是,修改下面配置文件的 "port"、"id"、"path" 这3个参数,修改为你自己的,然后,再把修改好的文件粘贴進编辑器中。
请注意: a)下面配置文件中的端口(port) 33888 ,就是上面2-8、配置 Caddy提到的端口,二者要完全一致; b)下面配置文件中的UUID:a1199f80-a920-437b-9531-7f86b62533a0 ,这一串必须改为你自己上面生成的UUID; c)若不熟悉,请务必小心不要改动到代码其它部分,包括不小心增减空格、符号、字母等等。 d)下面配置文件中的"path": "/vv22",这个“/vv22” 是可以随意修改为你自己的,但要记住,在后面的配置及客户端配置时要用到,设置相同一致就行。
将以下修改好的内容粘贴到 编辑器的 #绿色光标处:
{ "log": { "access": "/var/log/v2ray/access.log", "error": "/var/log/v2ray/error.log", "loglevel": "warning" }, "inbounds": [ { "listen": "127.0.0.1", "port": 33888, "protocol": "vmess", "settings": { "clients": [ { "id": "a1199f80-a920-437b-9531-7f86b62533a0", "alterId": 0 } ] }, "streamSettings": { "network": "ws", "wsSettings": { "path": "/vv22" } } } ], "outbounds": [ { "tag": "direct", "protocol": "freedom", "settings": {} }, { "tag": "blocked", "protocol": "blackhole", "settings": {} } ], "routing": { "domainStrategy": "AsIs", "rules": [ { "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" } ] } }
美博园(allinfa.com)再次提示: 以前有新手遇到的问题就是复制、粘贴代码时无意间多了一些标点符号、空格、任何字符等,从而导致安装出现问等;如: "id": "a1199f80-a920-437b-9531-7f86b62533a0" 即:双引号中的字符间全部没有空格; "id": " a1199f80-a920-437b-9531-7f86b62533a0" 这个" ew之间多了一个空格,就会出错; "/vv22" 这是对的,字符间全部没有空格; " /vv22" 多了空格,会出错 "/ vv22" 多了空格,会出错 "/vv22 " 多了空格,会出错 " / vv22" 多了空格,会出错
6、配置 Caddy
6-1、加入Caddy配置文件
美博这里先要提示:
a)这里要用到端口(PORT)值
这个端口,就是在上一步【5-2、生成UUID和设置端口(PORT)】自己设置的端口值,在本教程中举例为:33888,二者要一致,不能不同。
b) 请注意,下面的配置文件需先修改其紫红色标记处内容,包括:域名、信箱、路径、端口,这4项要改为你自己的特定配置(下面有详细说明)
c)然后,用下面命令打开Caddy配置文件
再将已经修改为你自己的内容,粘贴到编辑器的 #绿色光标处。
这里举例用的域名是:abcdef.com (实际做要改为自己的域名)
具体操作:
先用nano打开配置文件:
输入:
nano /etc/caddy/Caddyfile
再粘贴下面已经修改为你自己的内容到编辑框中:
https://abcdef.com { redir https://abcdef.com{url} } https://abcdef.com { tls 12345@gmail.com log /var/log/caddy.log root /var/www/html proxy /vv22 127.0.0.1:33888 { websocket header_upstream -Origin } }
然后,同时按 Ctrl + X,再按y,再按 Enter(回车),退出nano编辑状态。
说明: a)abcdef.com:改为你自己的域名,域名前要不要加www都可,即abcdef.com和www.abcdef.com都可以,但在所有配置中一定要一致就行; b)12345@gmail.com:改为你自己的邮箱,Caddy将自动与Let's Encrypt联系以获取SSL证书并在90天到期后自动更新证书; c)proxy /vv22 https://localhost:33888 此行的含义是:路径分流,流量转发,将443端口在/v2ray路径收到的流量转发给33888端口,在后面我们会让v2ray监听33888这个端口; /vv22 是路径,这个路径可以是空的/,也可自己指定的任何字母数字组合,但一定要与上面v2ray服务器配置文件中的路径相同,以及后面的客户端配置路径相同; 33888 这个端口前面已述,要自己设置一个; d)Caddy将自动与Let's Encrypt联系以获取SSL证书。它将证书和密钥放在“/etc/ssl/caddy/acme/acme-v02.api.letsencrypt.org/sites/你自己的域名/”目录中; e)此文件保存后,Caddy会随即向Let's Encrypt发出SSL证书申请,一般很快在一分钟就可完成,但可能有人会遇到特殊情况比较久一些才会完成。 f)其中的mail,是申请证书用的,用真实的mail可以得到到期通知等,当然Caddy是自动续期,随意填一个mail,符合mail的格式,也是可以的。
这里补充说明关于证书安装的问题:
caddy安装证书一般都没有问题,美博在测试教程和实用已经安装过很多次都没有遇到过证书安装问题,基本上也是即刻生效。但有时网友还是会遇到问题,如:
有时候网友遇到证书安装问题,就在短时间内反复安装,但证书安装是有时间次数限制的,请参考:Let’s Encrypt 证书颁发的速率及次数限制
如果一个域名的证书反复安装有问题,美博建议可以换一个域名(或二级域名)再行安装,当然这个二级域名等得事先解析好;
少数情况会遇到域名解析很长时间(几个小时甚至更长)还没有生效,这样的域名(二级域名)也是无法安装证书的,为避免这种情况发生,在安装完系统得到主机ip后,建议网友即刻先進行域名解析,多做几个二级域名一起解析,这样到后面这些步骤时就可以多几个选用。
2)赋予Caddy配置文件权限
#给它适当的所有权和权限:
输入:
chown root:root /etc/caddy/Caddyfile
输入:
chmod 644 /etc/caddy/Caddyfile
6-2、启动Caddy
1)启动Caddy
先启动:
systemctl daemon-reload
输入:
systemctl start caddy
2)检查Caddy启动状态
#检查Caddy是否正在运行并且正在侦听端口80和443上的输入:
输入:
systemctl status caddy
你应该看到这样子的结果,如看到如下绿色字 active (running),表明 caddy已经启动:
3)自启动Caddy
若上一步启动无问题则可启用开机自启动Caddy
输入:
systemctl enable caddy
显示为:
Created symlink /etc/systemd/system/multi-user.target.wants/caddy.service → /etc/systemd/system/caddy.service.
6-3、Caddy没启动的记录查看 --- 这步是问题排查,无问题略过
注:若上面caddy已正常启动,不用操作此步;若有错,再用此步查原因
# 检查Caddy配置文件Caddyfile是否有错
输入:
caddy -agree -conf /etc/caddy/Caddyfile
# 如果Caddy无法正常启动,则可以查看日志数据以帮助找出问题:
输入:
journalctl --boot -u caddy.service
# 如果启动失败,下面命令也可以查看Caddy日志:
tail -f /var/log/caddy.log 注:这个会显示最后10行的日志记录
tail -n 30 /var/log/caddy.log 注:这个会显示最后30行的日志记录,30数字自己可据情况改变
6-4、修改 Caddy 配置会用到的相关命令 -- 此节只是说明
注:此节内容不需要接上下步骤操作,只是修改配置文件时才需要
若caddy没有正常启动,或检查到前面的步骤中某一步骤有输入错误等,要修改 Caddyfile、caddy.service等等文件,那么就会用到如下的一些命令:
修改前,
一般要先停止Caddy服务:
caddy -service stop
然后,重复上面的“加入Caddy配置文件”,進入编辑状态進行修改。
修改完成后:
重载systemd使其检测到新安装的Caddy服务
systemctl daemon-reload
启动Caddy服务:
caddy -service start
或
重启Caddy服务:
caddy -service restart
查看启动状态
systemctl status caddy
若不需要、或安装错误Caddy服务,可卸载再重新安装
卸载Caddy服务:
caddy -service uninstall
7、检查SSL证书是否生效及效果
7-1、检查SSL证书
上面Caddy配置是否生效,SSL证书是否已经生成,到这里就可以进行检查,因本教程需要ssl,这在构建代理时是需要做的,若SSL证书没有生成,后面是不能成功搭建代理的。
检查很简单:
1)在浏览器中用 https://你的域名,即:
https://abcdef.com 注:要改为你的域名
我们设置有转向,http也测试:
https://abcdef.com 注:要改为你的域名
如果已经可以访问你的网站,显示你自己建的网站内容,就表明SSL已经安装成功了。
因有时SSL证书申请要等几分钟,如果没有马上生效,可稍等一下。
2)如果要進一步看看SSL效果,可以在 SSL Labs网站查看
https://www.ssllabs.com/ssltest/
在其中输入自己的域名,可以检测一下https配置评分。
8、启动和测试V2Ray
8-1、启动V2Ray
输入:
systemctl daemon-reload
systemctl start v2ray
8-2、检查V2Ray是否正在运行
输入:
systemctl status v2ray
你应该看到这样子的结果,如看到如下绿色字 active (running),表明 v2ray已经启动:
注意:查看v2ray状态后,SSH窗口的命令输入光标可能消失,即:没有了 root@vultr:~#(本例如此,你的服务器vultr这个名会不同),无法输入下一个命令 这时,请参考前文:SSH连接软件-Xshell下载及使用教程 - 美博园 之 3、“打开”建立的SSH连接 即:重新打开SSH连接到服务器,就会在新建的SSH连接中出现 root@vultr:~# ,可以输入下一个命令了。
8-3、检查 journal 日志 --- 正常启动者略过
注:若V2Ray正常启动,不需要此步检查;若不能启动,可用下面几项命令,检查问题出在哪里?
输入下面命令检查 journal 日志:
journalctl -u v2ray
8-4、修改 V2Ray 配置会用到的相关命令 -- 此节只是说明
注:此节内容不需要接上下步骤操作,只是修改配置文件时才需要
若v2ray没有正常启动,或检查到前面的步骤中某一步骤有输入错误等,要修改 v2ray配置文件 config.json,那么就会用到如下的一些命令:
修改前,
一般要先停止v2ray服务:
systemctl stop v2ray
然后,進入编辑状态進行修改v2ray配置文件config.json,保存退出编辑。
修改完成后:
重载systemd使其检测到新安装的v2ray服务
systemctl daemon-reload
启动v2ray服务:
systemctl start v2ray
或
重启v2ray服务:
systemctl restart v2ray
查看启动状态
systemctl status v2ray
删除V2Ray
若不需要V2Ray时,可以移除 V2Ray,这在测试时常用,安装失败后需要重新安装时也可以使用。
bash install-release.sh --remove
8-5、关于 V2Ray 版本更新
V2Ray团队会不断更新v2fly/V2Ray版本、及时修复发现的问题和技术改进。有时候,网友会遇到本来用的好好的V2Ray,突然不能上网了,也有一种可能就是旧版出现了一些问题,只需要更新V2Ray到最新版就好了。
而且,美博这里也特别提醒,即使是V2Ray稳定运行很长时间了,基于安全,网友还是需要勤快一点,每隔一段时间就更新一下V2Ray版本最好。
V2Ray版本更新方法:
依次输入如下命令:
bash install-release.sh
systemctl daemon-reload
systemctl restart v2ray
systemctl status v2ray
9、防火墙简易设置
为了增强安全性,下面介绍防火墙的简易设置,请接着上面的步骤继续完成下面的设置。
请根据你的系统是 Ubuntu 或 debian 来选择设置,二者防火墙设置方式不同。
9-1、Debian 系统 开启防火墙及端口设置
如果你使用的是 Debian 系统,请按照下面的设置,不适用于Ubuntu系统和Centos系统
1)安装UFW
Debian默认不安装UFW,使用apt安装:
apt install ufw
2)设置默认策略
要设置UFW使用的默认值,使用以下命令:
输入:
ufw default deny incoming
再输入:
ufw default allow outgoing
3)允许SSH连接
允许端口22上的所有连接
ufw allow 22
如果有的VPS服务器的SSH使用其他端口,则必须指定相应的端口。例如,除了常用的22外,也有些使用2222 ,则可以使用此命令允许该端口上的SSH连接:
ufw allow 2222
4)启用UFW
在允许了SSH后,才启用UFW,不然SSH连接会断开
要启用UFW,使用以下命令:
ufw enable
会询问是否安装,
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
输入 y
完成安装会显示:
Firewall is active and enabled on system startup
5)打开常用端口
翻墙会用到 端口80、443
依次输入【每输入一行都要回车(按[Enter])】:
ufw allow 80
ufw allow 443
特别说明: 关于你自己的端口(本教程例举为 33888) 33888 / TCP(出站):连接到GPG密钥服务器端口 按理是不需要打开这个v2ray服务器端口的,美博在测试时曾经遇到过不打开这个端口就不能上网的情况,因没有重复确定原因,就写上了这一句。如果你的上网不打开这个端口,先不设置打开这个端口,可以上网就不要打开。如果打开后才能上网,才开启这个端口。 ufw allow 33888 (这里的33888改为自己的v2ray服务器端口)
至此,Debian 系统 防火墙设置完成
9-2、Ubuntu 系统 开启防火墙及端口设置
如果你使用的是 Ubuntu 系统,请按照下面的设置,不适用于Debian系统和Centos系统
因我们只是用于翻墙,需要打开这几个端口 port: 22, 80, 443,
22 / TCP(入站/出站):标准SSH端口 80 / TCP(入站/出站):标准HTTP端口 443 / TCP(入站/出站):标准HTTPS端口
用下面的命令打开这几个 port
依次输入【每输入一行都要回车(按[Enter])】以下指令:
ufw allow 22
ufw allow 80
ufw allow 443
特别说明: 关于你自己的端口(本教程例举为 33888) 33888 / TCP(出站):连接到GPG密钥服务器端口 按理是不需要打开这个v2ray服务器端口的,美博在测试时曾经遇到过不打开这个端口就不能上网的情况,因没有重复确定原因,就写上了这一句。如果你的上网不打开这个端口,先不设置打开这个端口,可以上网就不要打开。如果打开后才能上网,才开启这个端口。 ufw allow 33888 (这里的33888改为自己的v2ray服务器端口)
再输入命令启用防火墙
ufw enable
会提问:
root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
问是否真的启用防火墙 enable firewall,并警告如果设定不当会断线。因我们已经启用 allow port 22 ,所以没有问题,
按下 y 再回车
就可以了。
至此,Ubuntu 系统 防火墙设置完成
9-3、退出SSH
至此,前面所有代理设置完成,可以退出 SSH连接了
输入:
exit
或者 直接点右上角的“X”来关闭 X-shell
至此,所有服务器端设置全部完成,下面進行客户端和浏览器设置
五、客户端配置 - V2RayN
先说明一件事,因v2ray日渐成熟,其可用的客户端软件也比trojan和NaiveProxy要多,选择余地比较大。
前文: v2ray客户端代理上网 - Windows、Android、Mac、ios 介绍了一些主要的各个系统的v2ray客户端软件,关于前文内容有几点说明: 1)该文是几年前介绍客户端专文,可参考,其中参数设置不能照做; 2)有些客户端软件已经比较长时间没有更新,而v2ray要求客户端版本要等于或高于服务器端版本,所以,新安装v2ray网友,因你的服务器端是最新版本,那么你的客户端(电脑端)软件版本也必须更新到最新版本。如果是旧版本的客户端就“有可能”无法正确联网。所以,参照前文中的客户端介绍选择时,请务必看看它们的更新时间。 3)v2ray的配置文件设置很多样化,前文中介绍的配置文件参数,不一定适合我们更新后的各个版本教程的设置。所以,本教程的参数设置必须按照本教程的说明设置,不能参考前文進行设置。
本教程,我们选择用 V2RayN 作为windows电脑端的客户端使用程序来说明,手机及Mac电脑端设置参数也要参考下面介绍的设置。
5-1、V2RayN 客户端软件下载,
1) 先要下载v2ray官方提供的核心程序 v2ray-core
下载地址:
https://github.com/v2ray/v2ray-core/releases
根据自己的系统选择相应的版本下载,如windows 64位系统,就选择 v2ray-windows-64.zip
是绿色软件,无需安装,可解压到任何地方使用。官方文件压缩包解压时最好先要生成一个文件夹,如:v2ray,或解压成文件夹,将下载的v2ray-windows-64.zip全部解压到这个文件夹,但官方版没有图形界面,只有核心程序。
为了便于直观操作,还需要下载图形界面程序,如下
2) 再下载图形界面程序V2RayN
v2rayN 图形界面客户端下载地址是:
https://github.com/2dust/v2rayN/releases
现在v2rayN发布有二个文件,供网友自己选择其一使用:
一个是:v2rayN-Core.zip 这个里面已经包含有v2rayN发布时最新的v2ray官方核心程序 v2ray-core,如果下载此文件,就不需要上面一步下载v2ray官方核心程序; 这一个版本的优点是方便,已经整合了全部文件;缺点是有可能 v2ray官方核心程序 v2ray-core不是最新的; 另一个是:v2rayN.zip 这个里面没有v2ray官方核心程序 v2ray-core,需要把其解压到上一步v2ray-core的同一个文件夹中,如v2ray,即将二个压缩包文件 v2rayN.zip 和 v2ray-windows-64.zip 解压整合在同一个文件夹中。 这一个版本缺点是需要自己整合,优点是v2ray官方核心程序 v2ray-core和图形界面v2rayN程序都会是最新版的;
请注意:本程序运行需要.NET Framework 4.6及以上,若没有请下载:
https://docs.microsoft.com/zh-cn/dotnet/framework/install/guide-for-developers
3)启动客户端
在v2ray文件夹中找到 v2rayN.exe
双击v2rayN.exe,即可启动v2ray
启动之前,需要先配置各项参数才能使用。
5-2、配置参数:
主要有二个页面需要设置:
1)服务器参数设置
打开(启动)v2rayN程序,“服务器”栏目设置,如下图:
本方法的客户端配置参数,如图所示:
按照上图填写好自己的v2ray参数后,点“确定”,就会生成客户端的配置文件config.json。
请注意:
1)此法的“传输协议(network)”一栏,要选: ws
2)其中的参数填写,必须与上面服务器配置的参数完全相同,即:域名、端口、路径、UUID等要完全一致。
关于加密方式(security): 加密方式,是客户端将使用配置的加密方式发送数据,服务器端自动识别,无需配置。 加密方式有4种:"aes-128-gcm" | "chacha20-poly1305" | "auto" | "none" "aes-128-gcm":推荐在 电脑(PC)上使用 "chacha20-poly1305":推荐在手机端使用 "auto":默认值,将自动选择加密方式(运行框架为 AMD64、ARM64 或 s390x 时为aes-128-gcm加密方式,其他情况则为 Chacha20-Poly1305 加密方式) "none":不加密,不推荐 推荐使用"auto"加密方式,这样可以永久保证安全性和兼容性。
关于额外ID(alterId):
这是为了进一步防止被探测,用户可以在主 ID 的基础上,再额外生成多个 ID。这里只是指定额外的 ID 的数量。
alterId 取值的大小和流量特征没有必然联系。
官方原则要求:这个值在客户端的配置不能超过服务器端所指定的值。即:若服务器端 alterId 为 64,客户端的 alterId 就必须 ≤64
这个值可以自行设置,对于一般使用,其 16 以内的值已经够用了,推荐值为 32 或 16。不指定的话,默认值是 0 ,最大值 65535。一般设置为 64、32 的居多,基本上以前大家多设置为64。
对于小内存的客户端设备(路由器等)可视情况调低alterid减少内存消耗。
这里要说明:
官方说这个值在客户端不能超过服务器端所指定的值。
但事实上,美博测试过客户端alterid低于服务器是可以正常使用的,如服务器端设为32,客户端设为64,代理完全可以正常运行。当然美博还是建议按照官方要求的设置,设置为一致。
2)“参数设置”栏自定义设置浏览器代理端口
仍然在v2rayN打开状态下,点上面的“参数设置”,只有一处自己设置,就是设置本地监听端口,即浏览器的v2ray代理端口,v2rayN程序默认的这个端口是 10808,这个端口需要修改为你自己的。
如,本教程中设置的端口是 1080,这里需要修改为 1080
如下图所示,记住设置完成后要点最下面的 “确认”
附注: Mux 多路复用 默认是开启的。一般建议开启。 Mux 功能是在一条 TCP 连接上分发多个 TCP 连接的数据。Mux 是为了减少 TCP 的握手延迟而设计,而非提高连接的吞吐量。使用 Mux 看视频、下载或者测速通常都有反效果。Mux 只需要在客户端启用,服务器端会自动适配。
3)“设为活动服务器”
如果你自建有多个v2ray,可以在v2rayN界面上“服务器”一栏选择自己要用的那个“设为活动服务器”,并且可以测试其速度等几项联网数据。
如图所示:
六、浏览器设置与代理上网
6-1、浏览器代理参数设置
在浏览器中设置 v2ray代理为: socks5 127.0.0.1:1080
本系列教程中,v2ray、trojan、NaiveProxy的代理都是默认 socks5 127.0.0.1:1080
请注意:v2ray 代理 支持广泛的协议,并不像 trojan只单独承认socks5协议,那么在设置 socks5 127.0.0.1:1080 代理时,可选也可不选同时设置http、https等代理类型,设置了也不会报错。
基本代理设置方式,如图所示:
请注意:
1)、在firefox68版,很多代理调度扩展不能再使用(如 Gproxy代理扩展),美博的Firefox纯净绿色版、chrome纯净版,都已经用另外的代理扩展,如 SwitchyOmega中都有设置这个端口的v2ray、trojan、NaiveProxy代理,如果是使用美博的浏览器,就不用另外设置了,请参考:
火狐浏览器_Firefox_美博纯净中文绿色版 Google Chrome浏览器_美博园纯净绿色版 选其中的最新版本使用。
2)、其他浏览器设置 v2ray代理,请参考上图设置代理。
3)、firefox57版之前的旧版firefox,可以使用以下介绍的方法设置firefox浏览器代理, 但是, 切记:在新版57版以后的firefox中,下面的代理扩展gproxy已经不起作用,请特别注意它可以设置代理却不起作用,这很糟糕!
请参考:firefox57版(含)之后都不能使用下面的:
GProxy:火狐(firefox)浏览器简便的代理调度扩展(v2.1) - 美博园 GProxy Plus 3.0和 3.1 版:Firefox浏览器简便的代理调度扩展(20180523) - 美博园
6-2、上网,查看ip
代理是不是设置好了?代理起作用没有,一般在“每次”使用时都应该自己先验证确认一下。
方法很多,如:
美博园主页右侧栏有上网ip显示
IP地理信息查询 - 美博园
IP详细参数及代理匿名度检测 - 美博园
点進去就可以看到自己当前上网的代理ip地址及相关参数。
当然,你也可以通过其他方法检验。
其他方法请参考:如何查看自己上网的ip地址? - 美博园
七、手机设置
前文介绍了很多可以在手机上使用的客户端软件,请参考:
v2ray客户端电脑和手机代理上网教程 - Windows/Android/苹果Mac/ios - 美博园
请注意:可以参考上文选择安卓、苹果手机上可使用的客户端,但是,不要按照那篇教程的设置参数去填写,因为每种代理方式的设置参数是不太一样的。只要是同方法,苹果手机的设置参数与安卓手机设置一样。
本方法以安卓手机的 v2rayNG 为例,说明设置参数如下:
***
=== 自建最强代理 v2ray、trojan、NaiveProxy 系列文章参考 ===
自建最强科学上网3+:trojan + Caddy(SSL证书自动续期) - 美博园 关于v2fly(V2Ray)更新版本的提醒 - 美博园 自建最强科学上网5+:V2ray + Caddy + Tls + HTTP/2 自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket 自建最强科学上网4:NaiveProxy + Caddy “trojan+Caddy”SSL证书自动续期的Caddyfile配置解决方案 - 美博园 美博点评:V2Ray、trojan、NaiveProxy代理的异同及相关问题 - 美博园 自己搭建代理服务器:VPS的选择 - 美博园 自己搭建代理服务器:Vultr VPS 购买图文教程 - 美博园 自己搭建代理服务器:Vultr VPS 系统安装图文教程 - 美博园 自己搭建代理服务器:检测ip是否被墙及更换ip - 美博园 自己搭建代理服务器:域名购买及设置与ip服务器关联 - 美博园 SSH连接软件-Xshell下载及使用教程 - 美博园 WinSCP:连接远端服务器的管理传输工具的使用教程 - 美博园 其它参考: v2ray客户端代理上网 - Windows、Android、Mac、ios - 美博园 Let’s Encrypt 证书颁发的速率及次数限制 - 美博园 Let's Encrypt SSL 证书安装不了的若干问题解决 - 美博园 如何开启Google TCP BBR 加速 - 美博园 V2ray自建代理遇到的一些问题及解决 - 美博园
原文标题:自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket - 美博园
美博园文章均为“原创 - 首发”,请尊重辛劳撰写,转载请以上面完整链接注明来源!
软件版权归原作者!个别转载文,本站会注明为转载。
网 友 留 言
36条评论 in “自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket”这里是你留言评论的地方
老师好,近期一直在找这个原因,终于找到了,赶紧上来告知各位一直为此困惑的朋友,其实很简单,把服务器和客户端配置里的“额外ID”改为0(原来是64)即可,具体请看这里:https://github.com/v2fly/v2ray-core/issues/1613
【是2022年1月1日啟用了「VMess MD5 认证信息 淘汰机制」的問題。如欲解決,請參見https://www.v2fly.org/config/protocols/vmess.html#inboundconfigurationobject
或 youtube視頻:https://www.youtube.com/watch?v=BmfKwDClFlk】
麻烦老师抽空测试一下。
@Cerva
谢谢您的分享,尽快测试
老师好,最近按照您的教程安装了好几遍,caddy和v2ray都正常启动,但就是出不去,麻烦老师有空的话检查一下脚本,非常感谢!
@Cerva 老师好,查找到您2022-1-5的一篇文章,自己摸索了一下,找到原因了,是v2fly的版本问题,我用4.34版本还是不行,用的4.27成功了,谢谢老师!
尊敬的站长您好!
能不能制作一份vmess+tcp+tls+caddy的手工搭建教程呢?
如果方便制作的话,不胜感激!
@小蘑菇
是的,早就应该做这个了,等最近的事情忙完了,就会做这个部分并检测以前的方法,谢谢
@美博园 谢谢!期待之至!!!
看起来好复杂,感觉个人搞不来啊。
Helio 博主您好~有个问题想请教一下,我用您这个教程成功搭建了后,服务器能连接YouTube等网页,可是不能加载该网页。还有一个是 shadowrocket vmess能测试联通可是不能科学上网。期待您的帮助
@Kevin
您好,不了解你的服务器及网络情况,不能准确判断
1、请按照下面文章介绍检查一下“端口”是否被墙
自己搭建代理服务器:检测ip是否被墙及更换ip - 美博园
https://allinfa.com/detect-ip-gfw-replace.html
若是端口被墙,在配置中换一个端口
2、也有可能是GFW墙阻断了TCP连接,TCP返回国内被墙
建议:比判断问题更快速的办法就是,换一个ip、同时换新的二级域名,重新安装
@美博园 老师您好,我配置好了内容,v2ray运行正常,网站也能通过地址访问,但是配置v2ray客户端以后,还是出不去。检查了ip,443端口都没有被墙。能请教下还有什么需要检查的么?
@Urban
v2fly(V2Ray)被查出特稱後已經封鎖了,可用這個方法試試:
手动申请SSL证书自建代理:NaiveProxy + Caddy - 美博园
https://allinfa.com/manual-ssl-certificate-naiveproxy-caddy.html
博主能帮我看看嘛,我设置caddy的时候,不成功
root@:~# caddy -agree -conf /etc/caddy/Caddyfile
Activating privacy features... 2021/02/22 02:06:51 [INFO]
(编注:里面有个人信息,隐藏了内容,以后可以发到“保密留言里”)
@tcastarlx
从记录来看,是申请证书遇到了问题,大概是说域名解析问题,不能确认域名与DNS关联,所以申请不了证书。
这大概有二种情况:
其一,域名解析还没有生效,新的域名和新的主机之关联的DNS解析,有时快几分钟,有时需要几小时,甚至更长;如果设置没有问题,遇到这种情况多等一会就可以了。教程中也有检验方法可参考;
其二,是不是使用了Cloudflare(CDN)来解析域名,那么在cloudflare上的域名解析默认是受到保护的(proxied),就像是代理,申请域名的时候需要设置为DNS only。
所以,等DNS正常生效后,你可以重复这一步,即进行caddy重新自动申请证书即可。
你好,我想在自己的主机的Debian 9系統自建最强科学上网2+:V2Ray + Caddy + Tls + WebSocket,但是我用的是动态ip,域名购买及设置与ip服务器关联是不是只合适固态ip,请问动态ip要如何使用,谢谢!
@zhen
这个是能够实现的,主要就是要实现DDNS(动态解析)。
这里只能提供一个思路,美博没有实际操作过,我这里都是固定ip,也没法测试。
1)有的VPS是有DDNS解析功能的,那这样就比较简单。
2)自己的主机,那要安装一个ddns的脚本来实现动态解析。
3)有几个可以实现动态解析服务的,在他们那里申请二级域名,然后做动态解析;
4)如果动态的ip不多,曾经遇到过之分配几个ip的电信商,实际上用户觉得是动态ip,实际上就是那几个在变,那么,这也比较简单,把自己的域名分成几个二级域名,一个域名绑定一个其中一个ip。
@美博园 我有使用no-ip,但是咨询了一下dynadot商家,商家说只能指向ip,不能直接指向no-ip域名,如果有可以指向no-ip域名的就可以解决动态ip的问题了。
@zhen 3)有几个可以实现动态解析服务的,在他们那里申请二级域名,然后做动态解析;=======能告诉是哪些商家吗?
4)如果动态的ip不多=====我这边的宽带ip挺多的,所以不好使用二级域名。
@zhen
你已经用过no-ip.com了
试试这两个,不过我没有用过,仅供参考
https://dyndns.com/dns
https://www.zoneedit.com
@美博园 你好,这个教程中我如果直接使用no-ip的域名可以吗?
@zhen
关于V2Ray等自建代理的域名,美博是这样考虑的:
1)在这几个代理中,其域名是用来做掩护的,一旦公开,被GFW知道了就失去了意义,所以,越隐蔽越好。自己的域名,别人不知道,在浩瀚的网络中,GFW也不太能自动过滤筛选出某一个不知名的、普通没有敏感内容的域名(网站)在做什么,这就起到了很好的掩护作用。
2)用免费域名的二级域名,还有一个问题,那就是:即使是你自己没有敏感内容,别人用那个域名的二级域名做敏感事情被盯上了,也可能牵连到其他使用者。
3)而且,免费域名的主权是别人的,它的管理员是可以监管其任何一个二级域名在做什么的。
这就是美博在教程中,没有推荐使用别家的免费域名来做代理掩盖的原因。
那么,用上面几个国外网站解析自己的域名也是一样的道理。
也就是说,你的ip绑定到别人的域名上,这就会让那几个域名的管理员知道和记录,如果是良心的管理员还好。但毕竟我们不了解那几个网站管理员的情况,如果是象facebook里面曾经爆出有6个中国人参与审查中文内容,那么,就不太好了。
美博不了解你用自己电脑做代理的原因,做一般代理浏览敏感网站等是没有问题的,但如果是有特别的安全要求或特别的用途,那就要谨慎了。
@美博园 明白了,谢谢!
@美博园 3)有几个可以实现动态解析服务的,在他们那里申请二级域名,然后做动态解析;=======能告诉是哪些商家吗?
4)如果动态的ip不多=====我这边的宽带ip挺多的,所以不好使用二级域名。
@zhen 分享一些长期ss:
https://write.as/c2grs1tail3gb.md
@7890
谢谢分享。
不针对此代理,一般而言,有安全要求的网友,务必慎用这种公开的ss代理。
还是那句话,代理的建立和管理者,在服务器后台是可以看到每一个使用者上网信息的。
若是建立者是安全可靠的,还好,若是中共的陷阱,对于有安全要求的网友就可能有危险。
@美博园 emm,这里的url多数来自于https://github.com/Alvin9999/new-pac/wiki,这人似乎是和你们统一战线的吧(应该,,不是什么敌方卧底吧)。另外,当我用无界或自由门的时候,gfw那边是否能识别、检测出特征呢?(类似vpn那样的明显特征)不甚赐教,谢谢
@美博园 emm,这里的url多数来自于https://github.com/Alvin9999/new-pac/wiki,这人似乎是和你们统一战线的吧(应该,,不是什么敌方卧底吧)。另外,当我用无界或自由门的时候,gfw那边是否能识别、检测出特征呢?(类似vpn那样的明显特征)不甚赐教,谢谢
@7890
您好,
美博不了解那个网页是谁在做。所以,无法评论。
正如前面所说,一般而言,有安全要求的网友,务必慎用这种公开的自建代理。
最好当然是自己建,自己把握安全。
是的,很多的翻墙软件都有特征,可被gfw识别,但,因为有加密,gfw并不知道数据内容、浏览的内容是什么。所以,用的人越多、越安全。
目前V2Ray、trojan、NaiveProxy可以说是特称最少的,开发者也特别注重在特征信号方面的研究,所以我们说是目前最强的代理。
debian10谷歌云上没带wget, 教程中请加上,谢谢
申请的免费域名,在windows客户端和手机端都发现,服务器地址如果填写域名就不能连接,填写IP地址就可以正常使用,请问这样直接填IP是否有安全问题?
IP和域名能否套Cloudflare保护起来?
@ww
1、好的,教程补上谷歌云的安装wget,谢谢提醒
2、直接填ip没有问题,那可能是那个免费域名的主域名(拥有者)是通过了Cloudflare或转向了的,所以直接域名实际上指向了另外的地方(ip);
3、若是免费域名,多数是二级域名,你无法修改主域名的DNS设置,就不能使用Cloudflare来保护。若是自己的域名,要在域名购买处设置DNS和Cloudflare那里设置关联,Cloudflare才能起作用。
记得以前有一个.tk的顶级免费域名,只要是可以自己设定DNS的,就可以使用Cloudflare。
我说的应该不够准确!
我的意思:你贴出来v2ray的config.json
找不到 "host": "abcdef.com"。。。。。简单的说就是你的config.json配置里面没有可以修改域名的!
e)下面配置文件中的 "host": "abcdef.com",这个“abcdef.com” 要改为你自己的域名
@leslie8
谢谢指正,那一句是多余的,已经删除。这次是先写的h2教程是需要这一句注释,就直接复制过来了,抱歉疏忽了。教程其他部份,包括配置文件,都没有问题。Thank you very much.
e)下面配置文件中的 "host": "abcdef.com",这个“abcdef.com” 要改为你自己的域名
这个找不到啊,我自问眼睛没问题!找了半天都没看到在哪!
以为不需要,可是运行v2ray一直报错……
@leslie8
是你自己要事先申请一个域名,我们没有提供,请参考教程前面的“ 1.2、购买域名并设置与服务器ip关联”
有了你自己的域名,才替换后面的 abcdef.com
为什么不用官方最新caddy
@dgsdgsc 教程中有说明:官方已停止了caddyv1的下载。v2几乎完全不同于v1,不兼容,官方可能自己都没有搞明白改進方向,等它以后稳定了再说吧。个人认为 caddy v2以掩埋自身v1的优点向nginx靠齐,不知道怎么想的。做代理的前端掩护,v1已经足够。