0%

v2ray搭建

来了!这次是翻回去!

下载安装 · Project V 官方网站

参照这个!糟糕,国内服务器没法下载……还是下载好zip然后上传服务器然后解压安装罢

等下,我思考了一下,感觉还是socks 5 吧?又不用躲墙,当然是越快越好啊

那么回国之前我再配制,再见

哦,vmess支持不加密啊,那没事了,我回来了

因为服务器位于国内所以需要手动安装,将东西复制到指定位置

systemd 和 systemctl? ctl 是操作 md 的工具,用ctl罢。

手动安装看了再多,那就看自动脚本到底干了什么,照着做就可以了

fhs-install-v2ray/install-release.sh at master · v2fly/fhs-install-v2ray · GitHub

安装到 /usr/local/bin 里面,记得现在要位于展开的目录下面,就是直接ls能看到v2ray,v2ctl 的地方

install 命令和 cp 类似,但是能够具体到权限 mode

1
sudo install -m 755 v2* /usr/local/bin/

data path 是 /usr/local/share/v2ray,那么把geoip.dat 和 geosite.dat 安装在这里

1
2
# 没有文件夹先创建
sudo mkdir /usr/local/share/v2ray

配制文档一开始是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"log": {},
"api": {},
"dns": {},
"routing": {},
"policy": {},
"inbounds": [],
"outbounds": [],
"transport": {},
"stats": {},
"reverse": {},
"fakedns": [],
"browserForwarder": {},
"observatory": {}
}

当然你可以留空,直接往里面填就是了,具体介绍看这里

配置文件格式 | V2Fly.org

默认路径是 /usr/local/etc/v2ray

不存在就创建文件夹

sudo mkdir /usr/local/etc/v2ray/

查看 nobody 在哪个 group 里面

id nobody

如果是 nogroup,那就

1
2
3
install -d -m 700 -o nobody -g nogroup /var/log/v2ray/
install -m 600 -o nobody -g nogroup /dev/null /var/log/v2ray/access.log
install -m 600 -o nobody -g nogroup /dev/null /var/log/v2ray/error.log

否则,group 也是 nobody

1
2
3
install -d -m 700 -o nobody -g nobody /var/log/v2ray/
install -m 600 -o nobody -g nobody /dev/null /var/log/v2ray/access.log
install -m 600 -o nobody -g nobody /dev/null /var/log/v2ray/error.log

dev/null是一个特殊文件,而不是目录

它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF[1]

下一步就是配制 service 文件了,Systemd 入门教程:命令篇 - 阮一峰的网络日志

具体介绍可以看那边,systemd 取代 initd 成为了第一个进程,因为它……更全面智能!

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。

不过 v2ray 是直接扔到 etc 那里的,至于 service 文件是啥呢,拆开看看就知道啦

v2ray.service:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=V2Ray Service
Documentation=https://www.v2fly.org/
After=network.target nss-lookup.target

[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

这个就是告诉 systemd 该怎么启动它,以及一些必要的信息

配置文件的后缀名,就是该 Unit 的种类,比如sshd.socket。如果省略,Systemd 默认后缀名为.service,所以sshd会被理解成sshd.service

Unit 一共分成12种。

  • Service unit:系统服务
  • Target unit:多个 Unit 构成的一个组
  • Device Unit:硬件设备
  • Mount Unit:文件系统的挂载点
  • Automount Unit:自动挂载点
  • Path Unit:文件或路径
  • Scope Unit:不是由 Systemd 启动的外部进程
  • Slice Unit:进程组
  • Snapshot Unit:Systemd 快照,可以切回某个快照
  • Socket Unit:进程间通信的 socket
  • Swap Unit:swap 文件
  • Timer Unit:定时器

不过你看这个就直接缺省了。

我猜 .d 就是一个重复文件的意思……如果要删除的话得手动删除掉所有安装的文件

论安装脚本的重要性……我决定还是,嗯,不然自己写一个罢

好耶?

总之,把这俩 service 全部挪移过去

到展开 zip 的那里

sudo install -m 644 ./systemd/system/v2* /etc/systemd/system/

然后理论上来说就 set 好了,你只要在 /usr/local/etc/v2ray/config.json

写上正确的配置文件就可以

那么把这里的俩范例,哦这里还有一个 config.json,但是这是给翻墙用的不合适,不用拿过去了

好吧,这俩基本上都不太好用了……这边的 routing 是给翻墙分流用的,但是回来的话我们就全手动,不用这个了,所以还是从头写吧。

新手上路 | V2Fly.org

来自这里的服务器端比较简洁合适

行吧,这个参数比较多我需要研究一下,今儿配制不完了,先睡。

睡醒了

一般需要修改的就是 inbound 和 outbound,inbound 是输入,比如客户端需要代理,用 socks 协议位于 1080 端口,那么 inbound 就是 socks 1080。outbound 使用 vmess 和服务器沟通,服务器的 inbound 就是 vmess。

客户端的 out 是接受由服务器传来的 data(此面对互联网?),in 才是对着比如浏览器输出。服务器 out 是自由的,in 就是客户端的信息了。

所以服务器的 out 是 free,in 是 vmess

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"inbounds": [
{
"port": 65500, // 服务器监听端口
"protocol": "vmess", // 主传入协议
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811", // 用户 ID,客户端与服务器必须相同
"email": "sample@sample.com" // 区别用户流量
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom", // 主传出协议
"settings": {}
}
]
}

像这个样子就可以了,其他的设置因为是回翻所以不需要,当然端口记得修改并打开,vps 服务器一般 ufw 是关闭的,那么去设置那边打开就可了。uuid请自己生成一个

cat /proc/sys/kernel/random/uuid

使用 v2ray 内置的 test 检查

v2ray -test -config (config文件的路径)

客户端的真的累死我了

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
{"inbounds": [{
"port": 1090, // Port of socks5 proxy. Point your browser to use this port.
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"udp": true
}
}],
"outbounds": [
{
"protocol": "vmess", // 主传出协议
"settings": {
"vnext": [
{
"address": "服务器地址",
"port": 服务器端口,
"users": [
{
"id": "uuid,与服务器端相同",
"security": "none" // security 选择
}
]
}
]
}
}
]
}

那么添加 inbound,新增俩端口应该够用了。

socks 的话也差不多,加一个配制,然后复制一份 service 文件,将 config 修改成那个文件。

1
2
3
sudo -i
cd /etc/systemd/system
cp v2ray.service v2raysocks.service

修改

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json

这一行的 config 路径,指向新的配制文件

然后就可以 systemctl start v2raysocks.service

开始用啦

然后什么是 service 呢? 17.1鸟哥的 Linux 私房菜

a service is a program or application in Linux that runs or expects to run in the background.

正在或者打算运行的程序。

直接开始用

使用 GitHub - v2fly/fhs-install-v2ray: Bash script for installing V2Ray in operating systems such as Debian / CentOS / Fedora / openSUSE that support systemd 直接安装了之后该怎么办

systemctl start v2ray 之后 systemctl status v2ray,就可以看到具体用的是哪个 config 文件。

创建 group groupadd v2ray 创建 user useradd v2 改密码 passwd v2 把用户加到组里

没有 sudo 啊,只用 visudo 把用户加入 /etc/sudoers 里面,不然会出错

开机自启动? 选择 systemctl enable 就是开机自启动了。想要两份连接的话,复制一份 /etc/systemd/system/ 里的 v2ray.service ,修改下面的

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json

制作新的 config,然后 systemctl enable systemctl start 就可以了

我使用 swtichy omega 代理

GFWList · FelisCatus/SwitchyOmega Wiki · GitHub

这里搞来 GFWList ,跟随操作,保存 bak 文件然后导入。这边是 1090 端口运行 socks5,代理设置就好了。

应用走代理

应该在终端选择 export all_proxy=”socks5:127.0.0.1:1090”, discord 的话在 alacarte 里面把启动命令修改一下。自己手写 .desktop 太痛苦了

因为用的是 electron 所以可以用 chrome 的命令行参数……捏妈妈的,我试试看直接用 –proxy-server=”socks5://proxied:1234” 这样的

/home/lucia/.local/share/Discord/Discord –proxy-server:”socks5:127.0.0.1:1091”

哈哈,这样反正能够启动就是了,也用不着在前面再加 env var

所以 http_proxy 到底是什么呢,为什么支持 socks 呢?我记得这俩不是一个层的来着(

给 git 加代理

1
2
git config --global http.proxy "socks5:127.0.0.1:1091"
git config --global https.proxy "socks5:127.0.0.1:1091"

cat ~/.gitconfig 检查是否写进去了

hummmm,就这样好了,dnf 估计也要配置一下

用 root 权限更改这个

vi /etc/dnf/dnf.conf

好像出问题了,再修改吧(

大概是这里的 wifi 没法登陆的说