..

搭建拥有安全证书的 Gost 隧道

Gost 是 GO 语言实现的安全隧道,但是其默认 TLS 自签证书并不安全,参考这篇文章:为什么Gost TLS隧道的默认配置不安全,本篇博文记录如何正确搭建 Relay over wss 隧道,并将其转发到服务器上的 Cloudflare Warp 代理。

安装 certbot

acme.sh 太麻烦了,这里用 certbot。我的系统是 Debian,其他系统可以查看官方文档介绍的安装方法。这里注意域名需要完整域名,同时要把防火墙的 80 端口打开用于认证。

sudo apt install cerbot # 安装
sudo certbot certonly -d "<你的网站域名>" # 生成证书
sudo ls /etc/letsencrypt/live/<你的网站域名> # 看看成功没

配置 warp

这里就不用那些乱七八糟的第三方客户端了,用官方的 warp-cli,warp+ 密钥可以自己找,网上有很多。

warp-cli register # 注册
warp-cli set-mode proxy # 设置代理模式
warp-cli set-lisence <你的 WARP 密钥> # 设置密钥
warp-cli set-proxy-port 7865 # 设置代理端口
warp-cli connect # 连接到 Warp

配置 gost

随便找个地方放 gost,配置文件如下。我这里用 53 端口连接,转发到 7865 端口上的 socks 代理。

services:
- name: service-0
  addr: :53
  handler:
	type: relay
	auth:
		username: <配置用户名称>
		password: <配置连接密码>
	chain: chain-0
  listener:
	type: wss
	tls:
		certFile: "/etc/letsencrypt/live/<你的网站域名>/fullchain.pem"
		keyFile: "/etc/letsencrypt/live/<你的网站域名>/private.pem"

chains:
- name: chain-0
  hops:
  - name: node-0
	addr: :7865
	connector:
		type: socks
	dialer:
		type: tcp

把文件保存为 gost.yml,然后在当前目录运行 gost,会自动检索配置文件。

连接到隧道

客户端配置如下:

services:
- name: service-0
  addr: :2333
  handler:
    type: socks
    chain: chain-0

chains:
- name: chain-0
  hops:
  - name: hop-0
    nodes:
    - name: node-0
      addr: <你的服务器域名或ip>:53
      connector:
        type: relay
        auth:
          username: <配置用户名称>
          password: <配置连接密码>
      dialer:
        type: wss

保存为gost.yml,同目录运行 gost 即可连接,socks 代理地址 127.0.0.1,端口 2333