cmd-14 | rm | 删除命令 |
$ wget https://github.com/XTLS/Xray-install/raw/main/install-release.sh
$ sudo bash install-release.sh
$ rm ~/install-release.sh
rm
命令删除文件的时候,默认其实就是删除现在所在的文件夹下的文件。但是,我依然写了完整的路径: ~/install-release.sh
,这是我使用 rm
时的一个安全习惯、也是我把安装分成几步之后想强调一下的内容。如果你听过一些“程序员从删库到跑路”之类的段子,大概就知道为什么了。acme.sh
的官方说明,申请后的证书不建议直接使用。正确的方法是使用 --install-cert
命令安装给需要的程序。我们现在就来把证书安装给 xray-core
使用。$ mkdir ~/xray_cert
acme.sh
的--install-cert
正确安装(拷贝)证书文件$ acme.sh --install-cert -d 二级域名.你的域名.com --ecc \
--fullchain-file ~/xray_cert/xray.crt \
--key-file ~/xray_cert/xray.key
xray.key
文件默认对其他用户不可读,所以需要赋予其可读性权限$ chmod +r ~/xray_cert/xray.key
acme.sh
会每60天检查一次证书并自动更新临期证书。但据我所知是它并不会自动将新证书安装给 xray-core
,所以我们需要新增一个系统的自动周期任务来完成这一步。cmd-15 | crontab -e | 编辑当前用户的定时任务 |
xray-cert-renew.sh
)$ nano ~/xray_cert/xray-cert-renew.sh
#!/bin/bash
/home/vpsadmin/.acme.sh/acme.sh --install-cert -d a-name.yourdomain.com --ecc --fullchain-file /home/vpsadmin/xray_cert/xray.crt --key-file /home/vpsadmin/xray_cert/xray.key
echo "Xray Certificates Renewed"
chmod +r /home/vpsadmin/xray_cert/xray.key
echo "Read Permission Granted for Private Key"
$ chmod +x ~/xray_cert/xray-cert-renew.sh
crontab -e
,添加一个自动任务【每月自动运行一次xray-cert-renew.sh
】 (注意不要加sudo
,因为我们增加的是vpsadmin
账户的自动任务。初次运行时会让你选择编辑器,当然是选择熟悉的nano
啦!)$ crontab -e
# 1:00am, 1st day each month, run `xray-cert-renew.sh`
0 1 1 * * bash /home/vpsadmin/xray_cert/xray-cert-renew.sh
VLESS
协议入站 + 80
端口回落】,满足大多数场景的最大速度及必要安全。UUID
并保存备用(UUID
可以简单粗暴的理解为像指纹一样几乎不会重复的ID)$ xray uuid
cmd-16 | touch | 建立空白文件 |
$ mkdir ~/xray_log
$ touch ~/xray_log/access.log && touch ~/xray_log/error.log
*.log
就是所有文件后缀是log
的文件,此时CLI
界面的效率优势就逐渐出现了)$ chmod a+w ~/xray_log/*.log
nano
创建Xray的配置文件$ sudo nano /usr/local/etc/xray/config.json
UUID
填入第61行 "id": "",
之中。(填好之后的样子是 "id": "uuiduuid-uuid-uuid-uuid-uuiduuiduuid"
),本文的这个配置文件中增加了我的各种啰嗦注解,以方便你理解每一个配置模块的功能是什么。// REFERENCE:
// https://github.com/XTLS/Xray-examples
// https://xtls.github.io/config/
// 常用的config文件,不论服务器端还是客户端,都有5个部分。外加小小白解读:
// ┌─ 1_log 日志设置 - 日志写什么,写哪里(出错时有据可查)
// ├─ 2_dns DNS-设置 - DNS怎么查(防DNS污染、防偷窥、避免国内外站匹配到国外服务器等)
// ├─ 3_routing 分流设置 - 流量怎么分类处理(是否过滤广告、是否国内外分流)
// ├─ 4_inbounds 入站设置 - 什么流量可以流入Xray
// └─ 5_outbounds 出站设置 - 流出Xray的流量往哪里去
{
// 1_日志设置
"log": {
"loglevel": "warning", // 内容从少到多: "none", "error", "warning", "info", "debug"
"access": "/home/vpsadmin/xray_log/access.log", // 访问记录
"error": "/home/vpsadmin/xray_log/error.log" // 错误记录
},
// 2_DNS设置
"dns": {
"servers": [
"https+local://1.1.1.1/dns-query", // 首选1.1.1.1的DoH查询,牺牲速度但可防止ISP偷窥
"localhost"
]
},
// 3_分流设置
"routing": {
"domainStrategy": "AsIs",
"rules": [
// 3.1 防止服务器本地流转问题:如内网被攻击或滥用、错误的本地回环等
{
"type": "field",
"ip": [
"geoip:private" // 分流条件:geoip文件内,名为"private"的规则(本地)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
},
// 3.2 屏蔽广告
{
"type": "field",
"domain": [
"geosite:category-ads-all" // 分流条件:geosite文件内,名为"category-ads-all"的规则(各种广告域名)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
}
]
},
// 4_入站设置
// 4.1 这里只写了一个最简单的vless+xtls的入站,因为这是Xray最强大的模式。如有其他需要,请根据模版自行添加。
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"flow": "xtls-rprx-direct",
"level": 0,
"email": "[email protected]"
}
],
"decryption": "none",
"fallbacks": [
{
"dest": 80 // 默认回落到防探测的代理
}
]
},
"streamSettings": {
"network": "tcp",
"security": "xtls",
"xtlsSettings": {
"allowInsecure": false, // 正常使用应确保关闭
"minVersion": "1.2", // TLS最低版本设置
"alpn": [
"http/1.1"
],
"certificates": [
{
"certificateFile": "/home/vpsadmin/xray_cert/xray.crt",
"keyFile": "/home/vpsadmin/xray_cert/xray.key",
"ocspStapling": 3600 // 每3600秒(1小时)验证一次证书状态并缓存
}
]
}
}
}
],
// 5_出站设置
"outbounds": [
// 5.1 第一个出站是默认规则,freedom就是对外直连(vps已经是外网,所以直连)
{
"tag": "direct",
"protocol": "freedom"
},
// 5.2 屏蔽规则,blackhole协议就是把流量导入到黑洞里(屏蔽)
{
"tag": "block",
"protocol": "blackhole"
}
]
}
如果你是跟随本文一步步设置过来,其实就已经避开了最常见
日志文件权限不足、
证书文件权限不足 这两个大坑。那么现在运行Xray
自然应该无比顺利。Xray
的历史性时刻吧!!!$ sudo systemctl start xray
start
我们并不能确定是否成功的开启了Xray的服务,要确定它的状态,就要用到下面的命令。$ sudo systemctl status xray
看到那个绿色的、令人愉悦的 active (running)
了吗?它就是说 Xray
已经在正确的运行了systemd
进行基本的服务管理systemctl
相关的start
, status
, reload
等命令,这些都是基于systmed
管理模块对Linux系统中各种服务进行管理的通用命令。现在正好熟悉一下相关的其他几个命令。Xray
的服务,那就用stop
命令$ sudo systemctl stop xray
Xray
的服务,那就用restart
命令$ sudo systemctl restart xray
Xray
的服务(电脑重启后禁止Xray自动运行),那就用disable
命令$ sudo systemctl disable xray
Xray
的服务(电脑重启后确保Xray自动运行),那就用enable
命令$ sudo systemctl enable xray
BBR
我相信,你在Google各种科学上网技术的时候,肯定不止一次的听过bbr
这个东西,在各种博客添油加醋之下,让人觉得它神乎其神。更有bbrplus
, bbr2
, 魔改bbr
等一大堆衍生品。仿佛神油一般,用了就能野鸡线路变专线。那么,这东西究竟是什么?它有没有用?又该用哪一个版本呢?BBR
BBR=
Bottleneck
Bandwidth and
Round-trip propagation time,是一种TCP的
拥塞控制算法。简单粗暴的理解就是
数据流量的交通管理:当公路不再塞车的时候,每辆车自然就能保持较快的车速了。
bbrplus
, bbr2
, 魔改bbr
和其他各种听起来就酷炫的版本是不是更好?一句话:不是!不要用这些!这些都为了吸引眼球乱起的名字!BBR
的更新和发布,都是跟随Linux的内核(Kernel
)进行的。换言之,只要你用的是比较新的内核,就自然会使用到新版BBR
。而这些名字看起来很酷炫的东西,说白了就是仍未正式发布的、尚在测试阶段的内核及其对应的BBR
版本。这些脚本也仅仅就是通过下载预览版的内核(甚至第三方魔改内核)来率先开启而已。内核的稳定是一台服务器的稳定的基石。
【BBR测试版带来的细微性能差异绝对不值得更换不稳定的内核。】请选择你所在的Linux发行版所支持的最新内核,这样可以最大限度的保持服务器的长期稳定和兼容。
注意: 所谓魔改bbr
的【领先】是有非常强的时效性的。比如很多 bbrplus
脚本,因为几年来都没有更新,到现在还会把你的内核换成 4.19
,要知道现在稳定如 Debian 已经是 5.9
的时代了,那么这个脚本放在10年前也许领先了一点,单放在现在就是完完全全的【降级】和【劣化】fq
, fq_codel
, fq_pie
, cake
和其他算法哪个好?一句话:看不懂的话,请保持fq
,足够、且不会劣化你的线路它能解决的也只有丢包率的问题。不太准确的比喻,就是本来你用一辆车送你的货,有时候车半路就坏了(丢包),用了这些以后,你直接派出3份一样的货,让三辆车同时送,只要有一辆没坏就能送到。马路上都是你的车,自然就能把别人挤下去。但可想而知,你挤别人的时候,别人也会来挤你,而整个机房的出口道路一共就那么宽,最终势必就变成集体大堵车了。
说明:它们的原理不是算法优化、不是提速、大多数是简单粗暴的
多倍发包。对于【丢包率非常高】的差线路可能有一点作用,但【对丢包率低的好线路没有任何优化作用,反而会成倍的消耗你的流量】,进而造成服务器和你的邻居不必要的压力。
如果你的线路真的丢包率奇高,真正靠谱的解决方案是【换线路】。
BBR
忽悠小白的错误概念和坑人脚本实在是太多了。我希望你们现在对 BBR
有了相对清晰的理解。接下来,我们就动手安装最新的Debian内核并开启BBR
吧!(真的很简单)backports
源,获取更新的软件库$ sudo nano /etc/apt/sources.list
deb http://deb.debian.org/debian buster-backports main
$ sudo apt update && sudo apt -t buster-backports install linux-image-cloud-amd64
sysctl.conf
开启BBR
$ sudo nano /etc/sysctl.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
BBR
设置都生效$ sudo reboot
80
端口的 http
网页,并以此申请了TLS证书。但如果你尝试过用浏览器访问我们的这个界面,就会发现 http
访问并不会像大多数网站一样自动升级为 https
访问。换言之,我们现在的设置下,http(80)
和 https(443)
之间完全是独立的。如果要解决这个问题,就需要做一些修改。$ sudo nano /etc/nginx/nginx.conf
root
和index
两行)return 301 https://$http_host$request_uri;
80
端口同级的位置增加一个本地端口监听来提供网页展示。本文以 8080
端口做演示。(可以是任意端口)server {
listen 127.0.0.1:8080;
root /var/www/website/html;
index index.html;
add_header Strict-Transport-Security "max-age=63072000" always;
}
$ sudo systemctl restart nginx
80
端口改为 8080
端口。(找到 "dest": 80
, 并改成 "dest": 8080
)$ sudo nano /usr/local/etc/config.json
Xray
服务,即完成了设置$ sudo systemctl restart xray
http://a-name.yourdomain.com
的时候,它应该已经会自动跳转https了。恭喜!!到这一步,你已经拥有了可以正常科学上网的服务器、同时也有了可以防止主动探测攻击的伪装网站。接下来,只要给你的客户端装上合适的软件,就可以享受顺畅的网络了!
⬛⬛⬛⬛⬛⬛⬛⬜ 87.5%