第1章

3 网络技术

Discover what this Hugo theme is all about and the core-concepts behind it.

3 网络技术 的子部分

Cloudflare page搭建免费科学上网节点

准备物料

域名一个

推荐到namesilo.com注册域名,安全、支持支付宝支付、价格便宜,没有陷阱。

注册6位及以上数字的xyz域名(比如456766.xyz),只要$0.99,续费$0.99,注册+续费它9年才$10不到,不用担心域名过期。这也是仅有的成本,简直不要太安逸了。

准备好Github账号和Cloudflare账号

打开https://www.cloudflare.com/zh-cn,通过一个电子邮件地址即可注册Cloudflare账号

准备好github账户,不会注册的请自行bing搜索

到github网站fork edgetunnel项目

进入项目主页,项目地址:https://github.com/cmliu/edgetunnel,点击fork,弹出页面之间而点Create fork。

image-20241231093044125 image-20241231093044125

image-20241231093217873 image-20241231093217873

image-20241231100658040 image-20241231100658040

image-20241231100820318 image-20241231100820318

image-20241231101102816 image-20241231101102816

image-20241231101303456 image-20241231101303456

等待构建和部署完成,然后点继续处理项目

image-20241231101653240 image-20241231101653240

image-20241231101751936 image-20241231101751936

上面添加的UUID变量,值可以随便填,不过还是最好稍微复杂一些。

image-20241231101842700 image-20241231101842700

image-20241231101955107 image-20241231101955107

image-20241231102040853 image-20241231102040853

image-20241231102144971 image-20241231102144971

自定义域激活生效可能要几分钟,先去重新部署一下代码,使之前添加的UUID生效

image-20241231102235151 image-20241231102235151

重新部署完成后,尝试访问一下,基本上应该可以正常访问了

image-20241231102410165 image-20241231102410165

最后将设置的UUID附加到后面访问,即可拿到节点链接,页面往下拉有vless节点链接,别的方式自己研究。

image-20241231102450991 image-20241231102450991

恭喜,到这里就结束了,剩下的自己研究吧,

若有不明白或遇到什么问题,请给我留言。

Cloudflare tunnel配置ssh连接

这篇文章是给想从公司通过ssh连接到家里面的linux服务器而写的,是基于一个已经刷了armbian系统的电视盒子。当然,通过Ha盒子也是可以实现的。因为我们已经实现了内网穿透,远程控制Ha Box了,可以参考远程控制Homeassistant盒子。只是控制HA Box是通过http协议,而本文是使用ssh协议。

Cloudflare支持很多协议,比如连接到家里Windows电脑的远程桌面,共享存储什么的,下面是它支持的协议。

  • HTTP
  • HTTPS
  • UNIX
  • TCP
  • SSH
  • RDP
  • UNIX+TLS
  • SMB
  • HTTP_STATUS
  • BASTION

前提条件:

您已经将域名托管到cloudflare

你使用我们提供的armbian盒子(目前已不再提供,实际上可以是任意一台电脑,Windows、Linux或者Mac OS)

1 开机,获取ip地址

root密码root1234

如果接有显示器,那么登陆后查看ip地址

如果没有接显示器,可以从路由器后台查看主机名为armbian的设备ip

2 创建tunnel

进入https://one.dash.cloudflare.com/

导航到Networks > Tunnels

然后Create a tunnel

tunnel type就默认的cloudflare,然后next

image-20240928114211562 image-20240928114211562

然后设置tunnel name,然后save tunnel

3 安装和配置cloudflared

**Choose an operating system:**Debian

**Choose an architecture:**arm64-bit

image-20240928111438949 image-20240928111438949

安装完成后,点击右下角save

4 配置Public Hostname

再回到Tunnels列表,就可以看到刚才创建的Tunnel了,拉到右边有3个点,点它会弹出配置入口Configure

切换到Public Hostname

Add a public hostname

image-20240928111738284 image-20240928111738284

同样,在Public hostnames列表也是点右边的3个小点进入配置

5 设置Private Network

切换到Private Network

CIDR:192.168.3.0/24 (根据自身情况填写)

Description:随便

6 回到ssh客户端

ssh客户端的设备也要安装cloudflared

# 注意ssh客户端所在的系统平台,下面的代码是ubuntu,amd64架构
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

sudo dpkg -i cloudflared.deb

然后修改~/.ssh/config文件,没有就创建一个,内容如下,我这里配了两个,根据自己情况设置

Host ssh.456766.xyz
        ProxyCommand cloudflared access ssh --hostname %h

Host ssh.ha-box.xyz
        ProxyCommand cloudflared access ssh --hostname %h

7 ssh连接远程服务器

开启一个终端,执行

ssh [email protected]

如果一切顺利,就可以看到下面的信息

This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

linux下无损扩容分区方法

此方法适用于非lvm情景。

用到的命令:parted、resize2fs

特别说明:此方法仅适用于分区扩容(包括根分区),对于缩容的情况不适用,切记!

先确保需要扩容的目标分区后面有一段空白磁盘空间,然后使用磁盘分区工具parted先改变目标分区结束点。

这里假设需要扩容的分区为/dev/sda4,文件系统为ext4,挂载在根节点上,原来的分区结束点为21G ,新结束点为30G

sudo parted

这时进入parted 工具界面下,先用print /dev/sda 查看磁盘分区信息和扩容目标分区的编号

(parted)print /dev/sda

假如对应的编号为4,使用命令resizepart改变扩容目标分区的结束点

(parted)resizepart 4 警告: 分区 /dev/sda4 正被使用。你确定要继续吗? 是/Yes/否/No? yes                                                          结束点?  [21GB]? 30GB

回车,成功后输入quit退出parted 工具界面。

这时目标分区的大小已经变为了30G,但文件系统还未扩展,所以扩展的部分并不能实际使用,接下来使用命令resize2fs扩容文件系统。

sudo resize2fs /dev/sda4

这时会把文件系统扩容到增加的空间上。

扩容目标分区完成!

可以使用

df -h sudo fdisk -l

等命令查看。

从 Docker Hub 快速拉取镜像

最近一段时间 Docker 镜像一直是 Pull 不下来的状态,感觉除了挂🪜,想直连 Docker Hub 是几乎不可能的。更糟糕的是,很多原本可靠的国内镜像站,例如一些大厂和高校运营的,也陆续关停了,这对我们这些个人开发者和中小企业来说是挺难受的。之前,通过这些镜像站,我们可以快速、方便地获取所需的 Docker 镜像,现在这条路也不行了。感觉这次动作不小,以后想直接访问 Docker Hub 是不可能了。所以我们得想办法搭建自己的私有镜像仓库。

最近网上有很多解决 Docker Hub 镜像拉不下来的文章,我大概总结一下有以下几种办法:

Github Action

利用 Github Action Job 将 Docker Hub 镜像重新打 Tag 推送到阿里云等其他公有云镜像仓库里,这对于需要单个镜像很方便,批量就稍微麻烦一些,如果没🪜Github 访问也是个问题。

CloudFlare Worker

使用 CloudFlare Worker 对 Docker Hub 的访问请求做中转,这种也是最近使用比较多的,因为个人用户的免费计划每天有10万次免费请求,足够个人和中小企业使用了,实在不够可以花 5$ 购买不限制的。Worker 脚本在网上有很多,随便搜索都有示例。

因为 CloudFlare Worker 默认分配的workers.dev结尾的域名国内根本解析不了,所以要把域名托管在 CloudFlare 上才能正常使用,可以购买 .xyz 等其他费用合适的域名专门用来做代理访问。

但 CloudFlare Worker CDN 经常抽风,有时很快有时很慢,可以借助自选优选IP工具帮助获取访问 CloudFlare 延迟最低的IP,将其写入到你的本地 Hosts 文件中。

自建镜像仓库

说到自建首先我想到的就是买个配置比较低国外的服务器,搭建个 Nginx 做代理,分享下我配置成功的 Nginx 配置文件:

server {
  listen 443 ssl;
  server_name 域名;
  ssl_certificate 证书地址;
  ssl_certificate_key 密钥地址;

  ssl_session_timeout 24h;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

  location / {
    proxy_pass https://registry-1.docker.io;  # Docker Hub 的官方镜像仓库
    proxy_set_header Host registry-1.docker.io;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;
    proxy_set_header Authorization $http_authorization;
    proxy_pass_header  Authorization;
    proxy_intercept_errors on;
    recursive_error_pages on;
    error_page 301 302 307 = @handle_redirect;
  }
  location @handle_redirect {
    resolver 1.1.1.1;
    set $saved_redirect_location '$upstream_http_location';
    proxy_pass $saved_redirect_location;
  }
}

然后就可以直接用 docker pull 域名/library/nginx:latest 获取镜像了或者配置到 Docker 的daemon.json中。

Nginx 代理的方案你需要能购买到合适的国外服务器,不然网络会很慢。

又或者在国外服务器上搭建 Registry、Nexus、Harbor等镜像仓库,它们具备镜像缓存功能,如果私有镜像仓库中不存在则会去代理服务中获取最新镜像。

建议方案

所以对于个人用户、中小企业来说可以将上述的 CloudFlare Worker + 自建镜像仓库 融合起来,本地搭建 Registry、Nexus、Harbor等镜像仓库,在镜像仓库中配置上自己的 CloudFlare Worker Nginx反代 等代理地址或者当前一些可用的其他代理,当本地不存在则会通过这些代理去获取镜像,代理不可用时本地依然能用。

搭建 Docker Registry

搭建 Docker Registry 可以参考下述命令:

docker run -d --restart=always --name registry \
-p 443:443
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ #代理的镜像仓库URL
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ #监听地址
-e REGISTRY_HTTP_HOST=https://xxx.cn \ #访问域名
-e REGISTRY_HTTP_TLS_CERTIFICATE=/opt/cert/cert.pem \ #域名证书
-e REGISTRY_HTTP_TLS_KEY=/opt/cert/cert.key \ #域名证书
-v /opt/cert:/opt/cert \ #挂载本地证书到容器中
-v /data:/var/lib/registry \ #持久化数据目录
registry:2

搭建 Nexus

可选择使用 Docker 命令搭建 Nexus

docker run -d -p 8081:8081 --name nexus sonatype/nexus3

或者使用 Rainbond 应用商店一键安装。

preview preview

搭建完成后正常登录 Nexus 页面,根据页面引导配置 Docker 相关的存储 Repository 及代理 Repository 即可。

搭建 Harbor

可参考 Harbor文档 搭建或者使用 Rainbond 应用商店一键安装。

img img

可用的镜像代理

最近十来天我尝试了很多镜像加速站,整理了以下镜像站目前是可用状态,但可能随时会遇到不可用、关停、访问比较慢的状态,建议同时配置多个镜像源。

提供商 地址
DaoCloud https://docker.m.daocloud.io
阿里云 https://<your_code>.mirror.aliyuncs.com 登录阿里云分配
Docker镜像代理 https://dockerproxy.com 看运气
百度云 https://mirror.baidubce.com
南京大学 https://docker.nju.edu.cn
中科院 https://mirror.iscas.ac.cn

福利

近期 Rainbond 社区也接受到许多用户反馈 Docker 镜像拉不下来,不能构建、打包了,因此 Rainbond 也搭建了个镜像加速服务,采用 CloudFlare + 国外服务器 Nginx 反代的方案为 Rainbond 社区的用户们提供镜像加速服务。

img img

目前速度挺快的(未来不好说

使用方法

1.直接获取 Docker Hub 镜像

docker pull docker.rainbond.cc/library/node:20
docker pull docker.rainbond.cc/rainbond/rainbond:v5.17.2-release-allinone

2.配置镜像加速器

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.rainbond.cc"]
}
EOF
systemctl daemon-reload
systemctl restart docker

搭建免费科学上网节点

Cloudflare好像发布了新的用户协议,不让搞代理了。这个按教程部署完,访问时抛出522的错误,但是之前部署的还可以用

请参考Cloudflare Page搭建免费科学上网节点 来搭建,这种方式还可以用

准备物料

1)域名一个

推荐到namesilo.com注册域名,安全、支持支付宝支付、价格便宜,没有陷阱。

注册6位及以上数字的xyz域名(比如456766.xyz),只要$0.99,续费$0.99,注册+续费它9年才$10不到,不用担心域名过期。这也是仅有的成本,简直不要太安逸了。

2)准备好Cloudflare账号备用

打开https://www.cloudflare.com/zh-cn,通过一个电子邮件地址即可注册Cloudflare账号

3)准备代码

https://github.com/zizifn/edgetunnel/blob/main/src/worker-vless.js

备用地址 (如果你打开不github的话,可以试试从onedrive下载worker-vless.js文件)

在Cloudflare添加网站

登陆Cloudflare,然后添加网站,就是将你刚注册的域名添加到这里

image image

然后选择免费的方案就行,如下图,然后继续

notion image notion image

此时我们先不添加DNS,先把域名解析服务器改到Cloudflare,点击左边栏 DNS,记下Cloudflare名称服务器地址,你看到的可能和我看到不一定一样,别弄错了。

notion image notion image

去域名注册平台后台https://www.namesilo.com/account_domains.php

notion image notion image

填入Cloudflare的名称服务器地址,然后提交(submit),名称服务器生效可能要等一段时间

notion image notion image

创建应用程序

回到Cloudflare,导航到Workers 和 Pages 创建应用程序

image image

notion image notion image

名称可以随意,完了点击部署按钮,代码先不管它

notion image notion image

Worker部署成功

notion image notion image

替换脚本代码

点击编辑代码,将https://github.com/zizifn/edgetunnel/blob/main/src/worker-vless.js代码复制过来,贴到编辑器里面替换原来的内容

修改两个地方:

1,第7行的userID,随便找个UUID替换,点击这里获取一个 4,注意用version4,否则会报UUID不合法。

2,第9行的proxyIP,可以找前辈们提供的,随便在下面的列表中找一个

cdn-all.xn--b6gac.eu.org cdn.xn--b6gac.eu.org cdn-b100.xn--b6gac.eu.org edgetunnel.anycast.eu.org cdn.anycast.eu.org

userID不用改也行 ,userID记在小本本上以后要用

proxyIP我测试了也可以不用改,空着就行

保存并部署(按钮在屏幕右上角)

绑定域名

notion image notion image

image image

自定义域前缀可以随意,根据自己需要填写然后点击“添加自定义域”,等一会儿生效后就可以用了。。。

配置科学上网客户端

在浏览器地址栏输入你刚配置的自定义域+代码中配置的userID,得到相应的科学上网的配置参数

比如:https://hi.cntv.chat/6efcf080-745f-42c0-a0e6-4b0f9a2f8f1c

image image

复制图上标记的内容,到科学上网工具中通过剪贴板导入或手动输入配置参数,注意协议是VLESS。我PC端用的V2rayA,安卓手机用的V2rayNG

好了,本教程到此结束,快去享受免费、快速的、自由的网络去吧!

若有不明白或遇到什么问题,请给我留言。