PandaBearLab

科学上网

我目前的网络速度

https://speed.cloudflare.com/

image-20240318182532094

在很多大佬面前, 我这个速度是拖后腿了, 不过对于我做开发来讲, 完全够用了。 安装软件依赖包, 不需要设置镜像代理了

实际从境外站点下载速度实测, 以下截图是我下载大模型的文件的速度:

下载速度可以达到8.5MB/s, 要知道之前我使用的机场, 下载速度只有数百KB。 一个数量级的提升。 这样的速度足以应付我的日常搬砖工作。

image-20240318182950576

方法

自建服务器的方法

我为什么要自建, 我觉得主要是两点的考虑:

自建成本考虑

就我目前的情况, 主要的费用包括:

搬瓦工上买的

要注意: godaddy 第二年续费的时候就会很高了。 可以第二年更换一个域名。

自建「梯子」的方法

基本思路

本质上就是部署一个代理服务器,这个代理服务器负责转发网络流量

---
title: 
---
flowchart LR

subgraph 用户本地网络
user --> agent["本地客户端代理软件"]
end

subgraph 国际网络
agent--socks/https-->ProxyServer-->目标服务
end

用gost将流量伪装为web服务绕过审查

以下是解决上网的基本方法, 如果你非常有经验, 这部分足够你用了, 不必在浪费时间在下面更详细的方法上面了。

graph LR

bwh["bwh注册CN2主机"]-->godday["申请域名GoDaddy"] --配置解析-->cloudflare -->host["解析到BWH主机" ]
bwh--签证书-->cert["Let's Encrypt "] --> cloudflare
host-->gost["部署gost服务"] --> 配置客户端

更详细的操作步骤

准备

vps服务器

可以从以下的平台购买vps , 一般新人都会有一些优惠

新人可以选择用用微软的azure,新人注册绑定信用卡后,可以获得200$的额度, 可以用来使用ms提供的各种各样的云服务, 其中之一就是vps

我目前正在使用搬瓦工,我在搬瓦工上面找到了一个美国机器, 线路为CN2 GIAN , 网络拥堵一般, 香港或日本会更快一些, 用美国的IP最大的好处是像chatgpt这类的服务不受限制, 日本一般也没有问题。 价格不算太便宜, 169.99$/年

这个49.99$ 的一直处于缺货的状态

image-20240318172348776

$169.99 每年 价格不算太亲民

image-20240318172512091

域名&证书

域名注册

域名要从境外机构申请, 不要使用境内域名提供商

godaddy

dynadot

Namecheap

域名解析

推荐将域名解析配置在cloudfare 上, 可以设置代理

要把刚申请的域名解析到我们在bwh上买的vps机器的IP上

image-20240319095341967

输入你申请的域名

image-20240319095409997

使用免费即可

image-20240319095548087

在配置域名解析之前, 你需要在godaddy上修改域名解析服务器为cloudflare 提供的地址

image-20240319095833267

修改godaddy 域名的解析服务器地址为cloudflare提供你的地址(就是上面的截图所示)

image-20240319100138602

当你修改的域名解析服务器地址生效后, cloudflare 会给你发一封邮件,告诉你已经修改成功。

这时你就可以配置域名解析到你的申请的vps机器ip地址了。

image-20240319095659931

证书

我用Let’s Encrypt 自行签了证书, 配置了执行计划, 定期重新签证书, 来保证HTTPS服务的正常可用。

安装certbot

签证书

sudo certbot certonly --standalone

定期重新签证书, 以保证服务持续可用

crontab -e 

编辑如下内容

0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/bin/docker restart gost
  1. 第一个任务:
    • 时间规则:在每个月的第1天的0点0分执行。
    • 命令:/usr/bin/certbot renew --force-renewal,这是用于自动更新SSL证书的命令。
  2. 第二个任务:
    • 时间规则:在每个月的第1天的0点5分执行。
    • 命令:/usr/bin/docker restart gost,这是用于重启名为”gost”的Docker容器的命令。

推荐用docker来部署服务, 如果不喜欢, 可以将上面重启gost的方法换成bash脚本

restart_gost.sh

#!/bin/sh
killall gost
./run_gost.sh
0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/bin/docker restart gost

部署gost

gost 项目地址

gost wiki

gost 配置, 可以选择使用docker 安装部署, 也可以直接跑起来。

run_gost.sh

#!/bin/bash

port=443
domain=www.example.com
user=xxxxx
password=yyyyy

gost -L "http2://${user}:${password}@0.0.0.0:${port}?cert=/etc/letsencrypt/live/${domain}/fullchain.pem&key=/etc/letsencrypt/live/${domain}/privkey.pem&probe_resist=file:/var/www/html/index.html&knock=www.google.com" > /dev/null 2>&1 &

run_gost_in_docker.sh

用docker部署容器的脚本

#!/bin/bash

port=443
domain=www.example.com
user=xxxxx
password=yyyyy

sudo docker run -d --name gost \
    -v ${CERT_DIR}:${CERT_DIR}:ro \
    --net=host ginuerzh/gost \
    -L "http2://${user}:${password}@0.0.0.0:${port}?cert=/etc/letsencrypt/live/${domain}/fullchain.pem&key=/etc/letsencrypt/live/${domain}/privkey.pem&probe_resist=file:/var/www/html/index.html&knock=www.google.com"

安装客户端

PC端: 推荐clash

移动端: shadowrockets

移动端需要一个境外手机号, 可以在淘宝搜paygo 买一个3$月租的电话卡, 可以自行充值

clash 配置

clash_config

将这个clash 配置文件 修改用户名和密码后, 放到这个目录下面。

image-20240320151741280

端口转发

有些时候我们使使用软件,如telegram 只支持socks5 代理, 因此我们可以在本地开一个socks5的端口服务, 将流量转发给clash开发的http服务,端口是7890

gost -L=:1080 -F=http://127.0.0.1:7890 > /dev/null 2>&1 &

最后

以上的自建的方法, 并不是万无一失的, 采用https 协议,伪装正常的web流量, 仍然有很大的概率会被封IP

你可以考虑在cloudflare 上进行套壳访问, 即便vps被封了, 也能继续使用这台服务器。

本文的上网方法不一定是最好的, 是我亲自测试验证过, 目前使用了一个月, 还没有遇到问题。 目前家庭3-5个人日常使用豪无压力, 我还可以在上面部署个人的博客。

水平有限, 文中难免会有错误, 如果有错误请提出来帮助我修改。