Xray+lts 配置

注册VPS,并更新系统

linode

1
apt update && apt upgrade

别忘更新系统

提高VPS安全性

1. 修改远程登陆端口

1
vim /etc/ssh/sshd_config

找到Port这一项,并修改其为1024到65535之间的整数。若有#注释,删掉注释再编辑。:wq退出

1
systemctl restart ssh

重启ssh服务,使变更生效

2. 建立非root用户,并赋予权限

1
adduser sakur

根据提示填写适当信息即可,密码随意设置,后面也不怎么能用到。

1
apt update && apt install sudo

安装sudo,保证普通用户可以提权

1
EDITOR=vim visudo

使用vim编辑sudo文件,配置在 User Privilege Specification 下加入一行

1
sakur ALL=(ALL) NOPASSWD: ALL

即可。

3. 禁用root用户远程登录

1
vim /etc/ssh/sshd_config

打开配置文件,找到PermitRootLogin改为no即可

1
systemctl restart ssh

重启ssh服务,让配置文件生效

完成上述内容后,exit退出服务器,重新使用普通用户的用户名和密码登入服务器

4. 使用RSA密钥登陆并禁用密码

在本地使用ssh-keygen -t rsa -C 'you@email.com'生成rsa密钥对。使用cat ~/.ssh/id_rsa.pub查看并复制公钥

1
2
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

将刚刚复制的公钥粘贴进去,:wq保存

1
chmod 600 ~/.ssh/authorized_keys

修改公钥权限为仅所有者可读可写

1
sudo vim /etc/ssh/sshd_config

打开ssh配置文件,找到PasswordAuthentication改为no,找到PubkeyAuthentication改为yes使用:wq退出。

1
sudo systemctl restart ssh

重启ssh服务,使配置生效。

建设基础网页

Alist

申请证书

申请证书使用acme.sh通过cloudflare dns直接生成证书,需要提前将dns服务器改为cloudflare。详情参考

1
sudo -i

切换为root用户,否则会生成证书失败

1
curl  https://get.acme.sh | sh -s email=my@example.com

安装acme.sh工具

1
vim .bashrc

编辑root用户的bash环境变量,写入以下内容

1
2
export CF_Key="cloudflare 中查看你的 key" 
export CF_Email="你的 cloudflare 邮箱"

:wq保存关闭

1
source .bashrc

使刚刚配置的内容生效

1
acme.sh --upgrade --auto-upgrade

开启acme.sh自动更新

1
2
mkdir -p /var/www/ssl
acme.sh --issue -d "yourdomain.com" -d "*.yourdomain.com" --dns dns_cf --reloadcmd "/root/.acme.sh/acme.sh --install-cert -d yourdomain.com --ecc --fullchain-file /var/www/ssl/yourdomain.crt --key-file /var/www/ssl/yourdomain.key && sudo chmod a+r /var/www/ssl/yourdomain.key"

自动配置安装证书,当执行这条命令后,每60天(参考)自动更新一次。

1
exit

证书申请成功后,切换root用户为普通用户

安装并初步配置xray

1
2
wget https://github.com/XTLS/Xray-install/raw/main/install-release.sh
sudo bash install-release.sh

下载并执行安装脚本

1
rm ~/install-release.sh

安装完成后删除脚本

1
xray uuid

生成并保存随机的uuid

1
2
3
4
sudo touch /var/log/xray/access.log
sudo touch /var/log/xray/error.log
sudo chmod a+w /var/log/xray/access.log
sudo chmod a+w /var/log/xray/error.log

创建xray日志并更改文件权限,使得nobody用户可写

1
sudo vim /usr/local/etc/xray/config.json

编辑xray的配置文件,删除里面的括号,填入以下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
{
// 1\_日志设置
"log": {
"loglevel": "warning", // 内容从少到多: "none", "error", "warning", "info", "debug"
"access": "/var/log/xray/access.log", // 访问记录
"error": "/var/log/xray/error.log" // 错误记录
},
// 2_DNS 设置
"dns": {
"servers": [
"https+local://1.1.1.1/dns-query", // 首选 1.1.1.1 的 DoH 查询,牺牲速度但可防止 ISP 偷窥
"localhost"
]
},
// 3*分流设置
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
// 3.1 防止服务器本地流转问题:如内网被攻击或滥用、错误的本地回环等
{
"type": "field",
"ip": [
"geoip:private" // 分流条件:geoip 文件内,名为"private"的规则(本地)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
},
{
// 3.2 防止服务器直连国内
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "block"
},
// 3.3 屏蔽广告
{
"type": "field",
"domain": [
"geosite:category-ads-all" // 分流条件:geosite 文件内,名为"category-ads-all"的规则(各种广告域名)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
}
]
},
// 4*入站设置
// 4.1 这里只写了一个最简单的 vless+xtls 的入站,因为这是 Xray 最强大的模式。如有其他需要,请根据模版自行添加。
"inbounds": [
{
"port": 12345, // 可以写随意的端口
"protocol": "vless",
"settings": {
"clients": [
{
"id": "", // 填写你的 UUID
"flow": "xtls-rprx-vision",
"level": 0,
"email": "vpsadmin@yourdomain.com"
}
],
"decryption": "none",
"fallbacks": [
{
"dest": 443 // 默认回落到防探测的代理,写网页所在的端口
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"alpn": "http/1.1",
"certificates": [
{
"certificateFile": "/var/www/ssl/yourdomain.crt",
"keyFile": "/var/www/ssl/yourdomain.key"
}
]
}
}
}
],
// 5*出站设置
"outbounds": [
// 5.1 第一个出站是默认规则,freedom 就是对外直连(vps 已经是外网,所以直连)
{
"tag": "direct",
"protocol": "freedom"
},
// 5.2 屏蔽规则,blackhole 协议就是把流量导入到黑洞里(屏蔽)
{
"tag": "block",
"protocol": "blackhole"
}
]
}

编辑完成配置文件后,启动xray:

1
sudo systemctl enable --now xray

配置防火墙

基于debian11 采用ufw作为防火墙管理工具

1
sudo apt update && sudo apt install ufw

安装主程序。

1
2
3
4
sudo ufw allow port # ssh端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow other # 其他想要开启的端口,vless端口以及网页自定义的端口

开启相关端口

1
sudo ufw enable

设置ufw开机启动,并重启VPS

服务器优化

1. 开启BBR

以下操作在root下进行

1
echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list.d/bbr.list

添加官方backports源获取更新的软件库。

1
apt update && apt -t buster-backports install linux-image-amd64

刷新并安装

1
2
echo "net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.d/bbr.conf

写进内核参数后,重启服务器,更新内核参数,让BBR设置生效。

1
2
3
4
5
6
lsmod | grep bbr
# 应返回:
# tcp_bbr
lsmod | grep fq
# 应返回:
# ch_fq

检查是否开启成功

用户端配置文件参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
{
// 1_日志设置
// 注意,本例中我默认注释掉了日志文件,因为windows, macOS, Linux 需要写不同的路径,请自行配置
"log": {
"access": "/var/log/xray/access.log", // 访问记录
"error": "/var/log/xray/error.log", // 错误记录,注意这里也需要自行创建文件更改权限
"loglevel": "warning" // 内容从少到多: "none", "error", "warning", "info", "debug"
},

// 2_DNS设置
"dns": {
"servers": [
// 2.1 国外域名使用国外DNS查询
{
"address": "1.1.1.1",
"domains": ["geosite:geolocation-!cn"]
},
// 2.2 国内域名使用国内DNS查询,并期待返回国内的IP,若不是国内IP则舍弃,用下一个查询
{
"address": "223.5.5.5",
"domains": ["geosite:cn"],
"expectIPs": ["geoip:cn"]
},
// 2.3 作为2.2的备份,对国内网站进行二次查询
{
"address": "114.114.114.114",
"domains": ["geosite:cn"]
},
// 2.4 最后的备份,上面全部失败时,用本机DNS查询
"localhost"
]
},

// 3_分流设置
// 所谓分流,就是将符合否个条件的流量,用指定`tag`的出站协议去处理(对应配置的5.x内容)
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
// 3.1 广告域名屏蔽
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
// 3.2 国内域名直连
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
// 3.3 国内IP直连
{
"type": "field",
"ip": ["geoip:cn", "geoip:private"],
"outboundTag": "direct"
},
// 3.4 国外域名代理
{
"type": "field",
"domain": ["geosite:geolocation-!cn"],
"outboundTag": "proxy"
},
// 3.5 默认规则
// 在Xray中,任何不符合上述路由规则的流量,都会默认使用【第一个outbound(5.1)】的设置,所以一定要把转发VPS的outbound放第一个
// 3.6 走国内"223.5.5.5"的DNS查询流量分流走direct出站
{
"type": "field",
"ip": ["223.5.5.5"],
"outboundTag": "direct"
}
]
},

// 4_入站设置
"inbounds": [
// 4.1 一般都默认使用socks5协议作本地转发
{
"tag": "socks-in",
"protocol": "socks",
"listen": "127.0.0.1", // 这个是通过socks5协议做本地转发的地址
"port": 10800, // 这个是通过socks5协议做本地转发的端口
"settings": {
"udp": true
}
},
// 4.2 有少数APP不兼容socks协议,需要用http协议做转发,则可以用下面的端口
{
"tag": "http-in",
"protocol": "http",
"listen": "127.0.0.1", // 这个是通过http协议做本地转发的地址
"port": 10801 // 这个是通过http协议做本地转发的端口
}
],

// 5_出站设置
"outbounds": [
// 5.1 默认转发VPS
// 一定放在第一个,在routing 3.5 里面已经说明了,这等于是默认规则,所有不符合任何规则的流量都走这个
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "a-name.yourdomain.com", // 替换成你的真实域名
"port": 443,
"users": [
{
"id": "uuiduuid-uuid-uuid-uuid-uuiduuiduuid", // 和服务器端的一致
"flow": "xtls-rprx-vision",
"encryption": "none",
"level": 0
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"serverName": "a-name.yourdomain.com", // 替换成你的真实域名
"allowInsecure": false, // 禁止不安全证书
"fingerprint": "chrome" // 通过 uTLS 库 模拟 Chrome / Firefox / Safari 或随机生成的指纹
}
}
},
// 5.2 用`freedom`协议直连出站,即当routing中指定'direct'流出时,调用这个协议做处理
{
"tag": "direct",
"protocol": "freedom"
},
// 5.3 用`blackhole`协议屏蔽流量,即当routing中指定'block'时,调用这个协议做处理
{
"tag": "block",
"protocol": "blackhole"
}
]
}

此处推荐一个管理订阅的linux下常用的前端界面:v2raya目前还在完善中,但透明代理功能真的很好用!!!


Xray+lts 配置
https://blog.aipra.top/2023-11/24/d0720d91add4/
作者
Aipra
发布于
2023年11月24日
许可协议