为了避开敏感词,文中涉及的请按提示替换阅读:

下文中涉及的V2Yay,Y是R

路径和配置文件中用到的V2Yay请手动更改为小写

 

树莓派固件下载:

google drive 或者openwrt:
https://drive.google.com/drive/folders/1_P2RoPbguY99qJxmCU4SKUgP8Kg0Xr03

https://openwrt.cc/releases/targets/bcm27xx/bcm2711/

根据对应的型号下载
我树莓派4B:

openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz 或者 immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
建议下载factory版本。

使用balenaEtcher将固件烧写进SD卡。

插入SD卡开机。

 

下面讲解旁路由设置:

树莓派开机之后,用网线将树莓派与PC连接。

树莓派默认网址是192.168.1.1,请手动设置PC的IP和树莓派同一网段

密码是password。

通过浏览器登录树莓派系统。

每设置一步点击一次保存,先不要点击“保存&应用”。

树莓派 docker 旁路由 树莓派旁路由设置_配置文件

 

树莓派 docker 旁路由 树莓派旁路由设置_树莓派_02

 

树莓派 docker 旁路由 树莓派旁路由设置_树莓派 docker 旁路由_03

 

树莓派 docker 旁路由 树莓派旁路由设置_客户端_04

 

树莓派 docker 旁路由 树莓派旁路由设置_客户端_05

 

树莓派 docker 旁路由 树莓派旁路由设置_树莓派 docker 旁路由_06

 

下面开始设置防火墙

树莓派 docker 旁路由 树莓派旁路由设置_树莓派 docker 旁路由_07

到这里了,点击保存&应用,不要着急关闭页面。

等待的同时在浏览器中新建一个标签页输入192.168.1.10看看能否进入树莓派系统。

如果能进入,则证明已经设置成功,否则请返回前一个标签页,在 ”网络->接口“ 页面点击”保存&应用“。

成功进入树莓派openwrt之后请重新检查一遍设定,有时候保存会失败,所以需要做double check。

 

稍等个10秒重复过程看看能否进入192.168.1.10。

成功之后,将PC网线插入到家用路由器,登录家用路由器,将网关更改为192.168.1.5。

树莓派关机,使用网线将树莓派连接到家用路由器,开机。

树莓派开机完成之后,在PC端浏览器输入192.168.1.10重新登录到树莓派管理系统。

在”服务->passwall“右侧的页面点击 ”百度连接“,测试树莓派是否已经联网。

将PC电脑的网关和DNS地址设置为树莓派地址192.168.1.10。

此时,PC可以通过树莓派上国内网站了。


1. 安装v2yay
 使用xshell通过ssh登录VPS,VPS记得关闭密码认证,只使用Key认证。
 防止恶意试探攻击。

1.1) // 安装执行程序和 .dat 资料文件
  # bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2yay/master/install-release.sh)
1.2) 需要卸载程序时,可以使用移除 v2yay命令
  # bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2yay/master/install-release.sh) --remove

1.3) v2yay的文件安装列表
  installed: /usr/local/bin/v2yay
  installed: /usr/local/bin/v2ctl
  installed: /usr/local/share/v2yay/geoip.dat
  installed: /usr/local/share/v2yay/geosite.dat
  installed: /usr/local/etc/v2yay/config.json
  installed: /var/log/v2yay/
  installed: /var/log/v2yay/access.log
  installed: /var/log/v2yay/error.log
  installed: /etc/systemd/system/v2yay.service
  installed: /etc/systemd/system/v2yay@.service

 

2. 安装TLS 分流器

   bash <(curl -L -s https://raw.githubusercontent.com/liberal-boy/tls-shunt-proxy/master/dist/install.sh)

 由于目前单纯的VMESS加密已经不太保险,所以使用TLS分流器封装数据传输,这需要一个能够访问的域名。

 目前4.44以后版本v2yay服务已经开始拒绝单纯的VMESS加密数据请求,所以没有域名的伙计需要找到4.34以下的版本来使用。

 老版本搭建和配置方法笔者不赘述了,使用老版本需要承担很大的被拦截封禁的风险。

 

3. 购买域名
 笔者购买的是www.name.com的域名,也有免费的域名,需要自行决定。

 Name.com域名激活设置:
  Domain Details 中
  NAMESERVERS点击Use Default Nameservers选择默认值,点击Update Save保存结果
 Manage DNS Records 添加DNS记录
  第一条HOST留空,ANSWER输入VPS的IP地址,点击ADD添加
  第二条HOST输入www,ANSWER输入VPS的IP地址,点击ADD添加
  第三条HOST输入*,ANSWER输入VPS的IP地址,点击ADD添加

 大功告成,现在域名已经可以指向VPS的IP了。

 

4. 修改TLS配置文件
 配置文件路径:/etc/tls-shunt-proxy/config.yaml
 相比TCP,Domain Socket(简称DS)更为高效。
 所以这里TLS分流器与服务端v2yay的通信使用DS。
 客户端v2yay(手机平板PC)与服务器分流器的通信使用TLS(数据类流似HTTPS)。

                        TLS over TCP                             DS
客户端 v2yay --------------------- TLS 分流器 ----------- 服务端 v2yay

配置文件内容如下:

1 # listen: 监听地址
 2 listen: 0.0.0.0:443
 3 
 4 # vhosts: 按照按照 tls sni 扩展划分为多个虚拟 host
 5 vhosts:
 6 
 7     # name 对应 tls sni 扩展的 server name
 8   - name: example.com
 9 
10     # tlsoffloading: 解开 tls,true 为解开,解开后可以识别 http 流量,适用于 vmess over tls 和 http over tls (https) 分流等
11     tlsoffloading: true
12 
13     # managedcert: 管理证书,开启后将自动从 LetsEncrypt 获取证书,根据 LetsEncrypt 的要求,必须监听 443 端口才能签发
14     # 开启时 cert 和 key 设置的证书无效,关闭时将使用 cert 和 key 设置的证书
15     managedcert: true
16 
17 
18     # alpn: ALPN, 多个 next protocol 之间用 "," 分隔
19     alpn: h2,http/1.1
20 
21     # protocols: 指定 tls 协议版本,格式为 min,max , 可用值 tls12(默认最小), tls13(默认最大)
22     # 如果最小值和最大值相同,那么你只需要写一次
23     # tls12 仅支持 FS 且 AEAD 的加密套件
24     protocols: tls12,tls13
25 
26     # http: 识别出的 http 流量的处理方式
27     http:
28 
29       # fileServer 支持 h2c, 如果使用 fileServer 处理 http, 且未设置 paths, alpn 可以开启 h2
30       handler: fileServer
31 
32       # args: 静态网站的文件路径
33       args: /var/www/html
34 
35     # default: 其他流量处理方式
36     default:
37 
38       # handler: proxyPass 将流量转发至另一个地址
39       handler: proxyPass
40 
41       # args: 转发的目标地址
42       # args: 127.0.0.1:40001
43       args: unix:@v2yay.sock

 

4. 修改VPS服务器 v2yay 配置文件
 v2yay的配置文件路径:/usr/local/etc/v2yay/config.json

 请使用uuid命令生成自己的id,并进行替换。

1 {
 2    "log": {
 3        "loglevel": "warning",
 4        "access": "/var/log/v2yay/access.log",
 5        "error": "/var/log/v2yay/error.log"
 6     },
 7     "inbounds": [
 8         {
 9             "protocol": "vmess",
10             "listen": "127.0.0.1",
11             "port": 40001,
12             "settings": {
13                 "clients": [
14                     {
15                         "id": "f2435e5c-9ad9-4367-836a-8341117d0a5f"
16                     }
17                 ]
18             },
19             "streamSettings": {
20                 "network": "ds",
21                 "dsSettings":{
22                     "path":"@v2yay.sock",
23                     "abstract":true
24                 }
25             }
26         }
27     ],
28     "outbounds": [
29         {
30             "protocol": "freedom"
31         }
32     ]
33  }

 

5. 重启服务
  systemctl daemon-reload
  systemctl restart v2yay
  systemctl restart tls-shunt-proxy

6. 查看服务运行状态
  systemctl status v2yay
  systemctl status tls-shunt-proxy

7. 本地配置
 旁路由openwrt的passwall设置:
 地址填写之前购买的域名地址。
 端口填写443。
 协议选择VMESS。
 AlterID需要设置为0。
 勾选tls,其它选项填写与tls配置文件对应的数值。

树莓派 docker 旁路由 树莓派旁路由设置_客户端_08

 

 

树莓派 docker 旁路由 树莓派旁路由设置_客户端_09

树莓派 docker 旁路由 树莓派旁路由设置_配置文件_10

树莓派 docker 旁路由 树莓派旁路由设置_树莓派 docker 旁路由_11

 点击保存&应用,等待完成之后点击 “节点检测” 测试和VPS的连通性。

 连通之后点击 “谷歌连接” 测试数据传输的连通性。

 此时无论电脑,手机还是平板,手动将网关和DNS设置树莓派地址192.168.1.10。

 都可以无缝科学获取网路信息了。

这个旁路由会自动区分国内和国外的IP,国内走直连,国外走VPS。

 

如果没有树莓派或者不想改网关和DNS的话,

需要在手机平板和电脑PC安装v2yay客户端并单独配置。

客户端配置如下,记得address替换为服务器配置的域名,id替换为服务器匹配的值:

1  {
 2         "inbounds": [
 3             {
 4                 "port": 1080,
 5                 "listen": "127.0.0.1",
 6                 "protocol": "socks"
 7             }
 8         ],
 9         "outbounds": [
10             {
11                 "protocol": "vmess",
12                 "settings": {
13                     "vnext": [
14                         {
15                             "address": "example.com",
16                             "port": 443,
17                             "users": [
18                                 {
19                                     "id": "f2435e5c-9ad9-4367-836a-8341117d0a5f",
20                                     "security": "none"
21                                 }
22                             ]
23                         }
24                     ]
25                 },
26                 "streamSettings": {
27                     "network": "tcp",
28                     "security": "tls"
29                 }
30             }
31         ]
32     }