feat: add admin publishing workflow and yar theme
Add Go/Postgres admin APIs, Angular admin UI, manual build flow, asset uploads, markdown import/export, configurable slug generation, and the Yar reading theme. Exclude local docs and generated development artifacts from version control.
This commit is contained in:
parent
b78f4b39c9
commit
f0b50d13ea
121 changed files with 27139 additions and 550 deletions
213
content/posts/v2ray-setup-configuration.md
Normal file
213
content/posts/v2ray-setup-configuration.md
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
---
|
||||
id: 0f3f971c-93e5-443e-83ba-b9a2986a4083
|
||||
slug: v2ray-setup-configuration
|
||||
title: V2ray 搭建与配置记录
|
||||
summary: ""
|
||||
status: published
|
||||
tags: []
|
||||
cover: ""
|
||||
version: 1
|
||||
slug_source: manual
|
||||
slug_locked: true
|
||||
published_at: "2026-01-07T09:30:00+08:00"
|
||||
created_at: "2023-05-22T12:34:43+08:00"
|
||||
updated_at: "2026-01-07T09:30:00+08:00"
|
||||
---
|
||||
|
||||
## 前言
|
||||
近来想纯净自己的ip,同时也想试着搭建 v2ray 服务供以自己代理使用,所以上两个星期便购买了一台 Vultr 的 VPS。出现了一些问题,同时也确实都得以解决了,这里将问题和解决办法列出:
|
||||
|
||||
### 1. 未做伪装的 ip 被封杀
|
||||
这是第一次尝试使用 vps 搭建 v2ray 服务,事实上非常的顺利,我确实完成了 v2ray 的搭建,但是第三天便遭到了中国政府的防火墙一记 ban ip 操作。现在想着这是极为危险的,但事情还得继续,问题自然是发生在我未对 v2ray 进行伪装,因为初次接触,所以对很多新的名词有恐惧心理,一开始便没有去尝试伪装操作,最终酿下错误,但是错误的本身其实也在推动着我技术的进步。
|
||||
|
||||
问题的解决方法是,首先通过 WebSocket+TLS+Web 完成对传输层流量伪装,原理就是通过 Nginx 搭建了一个真实的网站,分流一个特定的路由去转发 v2ray 的流量,其实正常的伪装到这里就结束了。但前面我说了,我的 VPS ip 被封杀了,其导致了我没办法在国内正常通过 ssh 访问到服务器,所以根据攻略我又加了一层伪装,我将我的域名名服务器交给 cloudflare 让其帮我把域名伪装成其他的ip,从而躲过封杀。
|
||||
|
||||
这样的后果也很明显,虽然更加安全了,但是代理速度确实也下来了。。。于是,我还是决定摧毁当前的 vps ,重新构建一个,Vulter 会重新分配一个 新的ip。
|
||||
|
||||
### 2. ChatGPT 封杀所有 vultr 的 ip
|
||||
如小标题所言,openai 确实封杀了所有来自 vultr 的 ip,但是这个问题不大,我还是通过 cloundflare 单独对这个域名伪装了 ip 得以成功使用chatgpt,这个在后文中会详细讲到。
|
||||
|
||||
## 配置 vps 和 v2ray
|
||||
|
||||
### 修改 hostname
|
||||
|
||||
这个对v2ray 没啥子用,只是我想改而已:)
|
||||
|
||||
```
|
||||
vim /etc/hostname
|
||||
|
||||
```
|
||||
|
||||
### 安装 git
|
||||
|
||||
```
|
||||
apt-get install git
|
||||
```
|
||||
|
||||
### 安装 zsh 和 ohmyzsh
|
||||
Linux 自带的 bash 不是那么地方便使用,所以换成 zsh 是个更好的选择。
|
||||
```
|
||||
apt-get install zsh
|
||||
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
```
|
||||
|
||||
### 安装 v2ray
|
||||
|
||||
#### 通过官方脚本自动安装 v2ray 本体
|
||||
确实有很多种方式安装 v2ray,我这里选择使用 `fhs-install-v2ray` 项目提供的安装脚本进行安装:
|
||||
主要是它能帮我自动创建一些文件:
|
||||
```
|
||||
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: /usr/local/etc/v2ray/config.json
|
||||
installed: /var/log/v2ray/
|
||||
installed: /var/log/v2ray/access.log
|
||||
installed: /var/log/v2ray/error.log
|
||||
installed: /etc/systemd/system/v2ray.service
|
||||
installed: /etc/systemd/system/v2ray@.service
|
||||
```
|
||||
|
||||
执行下面的程序脚本即可(目前时间是:2023-05-22,该脚本未来可能发生变动,以具体情况为准)
|
||||
此处贴出项目 README 文件:[README.zh]('https://github.com/v2fly/fhs-install-v2ray/blob/master/README.zh-Hans-CN.md')
|
||||
|
||||
```
|
||||
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
|
||||
```
|
||||
|
||||
执行完后,若无明显错误,即可通过 `systemctl start v2ray.service` 和 `systemctl status v2ray.service` 查看是否能正确启动。
|
||||
|
||||
#### 配置 v2ray 服务端
|
||||
无论是服务端亦或是客户端的配置,其实都非常简单,只需要将配置文件改动一些即可使用。
|
||||
以下是官方提供的服务端配置:
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 10086, // 服务器监听端口
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"clients": [
|
||||
{
|
||||
"id": "xxxxxxxxxxxxxxx"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "freedom"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
在入门阶段,只需要了解 `inbounds` 中的 `port` 和 `id` 即可。
|
||||
- `port` 即是服务器的监听端口
|
||||
- `id` 可以理解为某种密钥一样的存在,在服务端与客户端交流时,需要通过这值进行辨别身份。可以使用 `cat /proc/sys/kernel/random/uuid` 指令生成这个 id。
|
||||
|
||||
> 服务器的配置中需要确保 id 和端口与客户端一致,就可以正常连接了。
|
||||
|
||||
最后重启一下 v2ray 服务即可:`systemctl restart v2ray.service` ,当然因为可能存在的将配置文件写错的问题,最好再查看一下有没有错误产生 `systemctl status v2ray.service`
|
||||
|
||||
没有问题后,即可开始配置 v2ray 客户端。
|
||||
|
||||
啊,最后注意让防火墙放开对应的端口,比如这里的10086端口
|
||||
```
|
||||
ufw allow 10086/tcp
|
||||
```
|
||||
### 配置 v2ray 客户端
|
||||
- Linux 平台可以使用 v2ray 程序(服务器所用的那个),它即可以当服务端也可以作为客户端使用
|
||||
- Android 平台可以使用 v2rayNG
|
||||
|
||||
无论是 android 还是 windows,其都有相应的图形界面,配置起来很简单,这里主要讲一下 v2ray 如何作为客户端使用。
|
||||
|
||||
以下贴出官方提供的客户端配置:
|
||||
|
||||
```json
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"port": 1080, // SOCKS 代理端口,在浏览器中需配置代理并指向这个端口
|
||||
"listen": "127.0.0.1",
|
||||
"protocol": "socks",
|
||||
"settings": {
|
||||
"udp": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"outbounds": [
|
||||
{
|
||||
"protocol": "vmess",
|
||||
"settings": {
|
||||
"vnext": [
|
||||
{
|
||||
"address": "server", // 服务器地址,请修改为你自己的服务器 ip 或域名
|
||||
"port": 10086, // 服务器端口
|
||||
"users": [
|
||||
{
|
||||
"id": "b831381d-6324-4d53-ad4f-8cda48b30811"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"protocol": "freedom",
|
||||
"tag": "direct"
|
||||
}
|
||||
],
|
||||
"routing": {
|
||||
"domainStrategy": "IPOnDemand",
|
||||
"rules": [
|
||||
{
|
||||
"type": "field",
|
||||
"ip": [
|
||||
"geoip:private"
|
||||
],
|
||||
"outboundTag": "direct"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
虽然这看起来蛮多的,但需要修改的地方也就是 `outbounds` 里的 `address`、`port` 和 `id`
|
||||
- `address` 填入 vps 的 ip 地址亦或是域名
|
||||
- `port` 填入服务端中监听的那个地址
|
||||
- `id` 填入服务端的 id
|
||||
|
||||
这样一切弄完后,在配置一下 `socks_proxy` 的环境变量即可。
|
||||
```
|
||||
export socks_proxy=https://127.0.0.1:1080;"
|
||||
```
|
||||
当然也可以把 `http_proxy` 和 `https_proxy` 代理填入。
|
||||
|
||||
若是你想在浏览器使用:
|
||||
- firefox 相对方便,直接在设置中选择 socks5 代理,地址即填入配置文件中的:`127.0.0.1:1080`
|
||||
- chrome 可以去下载 名为 `SwitchyOmega` 的插件,也使用 sock5 配置即可
|
||||
|
||||
### 使用 WebSocket+TLS+Web 完成伪装
|
||||
此处先给出参考的文章引用,在文章末尾也会重复给出,感谢各位前辈的教程。
|
||||
- [V2Fly]('https://www.v2fly.org/guide/install.html')
|
||||
- [V2Ray+WebSocket+TLS+Web+Cloudflare教程]('https://whuwangyong.vercel.app/2023-03-18-v2ray-websocket-tls-web-cloudflare-guide/')
|
||||
- [linuxfunk]('https://linuxfunk.com/2017/10/31/v2ray-ws-tls-nginx%E5%AE%9E%E7%8E%B0%E5%8A%A0%E5%AF%86%E4%BC%A0%E8%BE%93/')
|
||||
- [V2Ray进阶指南:WSS组合配置(WebSocket + TLS + Nginx + CDN)]('https://cyfeng.science/2020/03/22/advanced-v2ray-with-wss/')
|
||||
|
||||
在完成了之前那些操作后,自然是可以正常使用 v2ray 的,但是非常容易被封杀(我的坚持了两天hhhhh),这也是我后来才得知道的 :(
|
||||
|
||||
总之,被封杀了我便意识到了伪装是极其重要的,以下先介绍一些概念名称,我刚开始接触这一部分便直接放弃了,但遗憾的是这一部分却又不得不学,GFW 太强啦,我们只能被迫去与之对抗。
|
||||
|
||||
#### TLS
|
||||
`TLS 加密`,TLS 中文叫 传输层安全性协议,以下是 wikipedia 的描述:
|
||||
> 将通信两方交换的资料做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听
|
||||
|
||||
这是用来加密的,广为人知的 `HTTP` 在经过 TLS 加密后,成为了`HTTPS`
|
||||
|
||||
若是 v2ray 的流量没有被 TLS 加密,那么审查者便能根据数据内容分析出,这是违“法”的数据,而且代理流量源源不断地从固定 ip 发来,这样的流量同样是不正常的。
|
||||
|
||||
#### 网站前置伪装 与 websocket 协议
|
||||
仅用 TLS 加密依旧是不够的,因为流量不正常,这些大规模的流量因为代理的原因来去于同一个ip,这样的流量即使是加密的,也应该是有问题的。所以,需要再完成一次伪装,使用 Nginx 与 域名 搭建一个真实的网站,我们的客户端通过 websocket(ws)协议与这个用 Nginx 作为前端的网站进行数据交流,这样一来,我们的服务器就是正儿八经的网站服务器(事实也确实如此),而非代理服务器,在找到某种特征之前,不可能大面积封杀这样的正常服务器。
|
||||
|
||||
使用,我们现在的任务很简单,购买一个域名(可以是免费的二级域名),在我们的 VPS 中通过 Nginx 搭建一个真实但简单的网站,然后让客户端和服务器端通过ws协议交流,接着通过 Nginx 分流特定的路由。
|
||||
Loading…
Add table
Add a link
Reference in a new issue