generated from hugo-fixit/hugo-fixit-starter1
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
331 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,3 +4,6 @@ public/ | |
resources/ | ||
|
||
.hugo_build.lock | ||
|
||
.DS_Store | ||
**/DS_store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,328 @@ | ||
--- | ||
title: "浅尝树莓派4B(Ubuntu22.04)安装Clash作为代理服务器" | ||
subtitle: "" | ||
date: 2023-09-09 | ||
draft: false | ||
|
||
tags: | ||
- Raspberry Pi | ||
- Ubuntu | ||
- Clash | ||
categories: | ||
- tech | ||
|
||
--- | ||
|
||
<!--more--> | ||
|
||
|
||
|
||
## 0 前言 | ||
|
||
树莓派([Raspberry Pi](https://www.raspberrypi.com/))是一种基于ARM架构的单板计算机,仅有银行卡大小,本意是提供一种低成本的计算机学习硬件。但前几年由于各种原因,价格一路高歌猛进,让人望而却步。最近逛淘宝发现,树莓派价格差不多回归了正常架构,于是果断下手买一个尝尝。 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091517163.jpg" alt="1694243814807的副本" style="zoom:50%;" /> | ||
|
||
|
||
|
||
## 1 安装 Ubuntu22.04 | ||
|
||
到手的是 树莓派4B 4G内存版,因为内存足够,准备安装带GUI界面的 Ubuntu Desktop 22.04 。 | ||
|
||
|
||
|
||
### 1.1 烧录操作系统 | ||
|
||
树莓派的存储是在一张SD卡上,所以需要通过 [Raspberry Pi Imager](https://www.raspberrypi.com/software/) 将操作系统烧录到SD卡中。 | ||
|
||
不需要提前下载镜像,直接可以在工具中选择系统,然后选中目标SD卡,点击烧录。 | ||
|
||
```txt | ||
> Other general-purpose OS | ||
> Ubuntu | ||
> Ubuntu Desktop 22.04.3 LTS (64-bit) | ||
``` | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091548861.png" alt="截屏2023-09-09 15.48.11" style="zoom:50%;" /> | ||
|
||
烧录完成后,将SD卡插入树莓派,通电启动即可。系统安装后,即可通过 micro HMDI 连接到显示设备,并使用键盘、鼠标进行操作。首次启动会引导设置语言时区、用户名主机名等信息,不在此赘述。 | ||
|
||
|
||
|
||
### 1.2 Ubuntu软件源修改 | ||
|
||
树莓派切换镜像源的方式和一般Ubuntu设备并无不同,唯一需要注意的是 **要使用 ubuntu-ports 镜像**,这里面才有arm64的源。 | ||
|
||
我们使用[清华镜像站](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/),页面比较友好,可以直接在页面切换选项并产生配置内容。 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091610222.png" style="zoom:50%;" /> | ||
|
||
备份原 `sources.list`,将清华源信息覆写到 `sources.list`,执行 `sudo apt update ` 更新软件包信息。 | ||
|
||
|
||
|
||
### 1.3 固定网络IP | ||
|
||
为了方便ssh登录,以及作为网络代理服务器,需要设置一个固定的IP地址。 | ||
|
||
编辑netplan配置文件 `/etc/netplan/01-network-manager-all.yaml`。 | ||
|
||
```yaml | ||
network: | ||
version: 2 | ||
renderer: NetworkManager | ||
# 无线网络配置 | ||
wifis: | ||
# 无线网卡 wlan0 | ||
wlan0: | ||
# 关闭dhcp | ||
dhcp4: false | ||
# 固定IP, /24 用来表示掩码信息 | ||
addresses: [192.168.31.250/24] | ||
optional: true | ||
# 配置项 gateway4 在新版本中已弃用,通过routes配置网关 | ||
routes: | ||
- to: default | ||
via: 192.168.31.1 | ||
# DNS服务 | ||
nameservers: | ||
addresses: [114.114.114.114] | ||
# 配置WiFi信息 | ||
access-points: | ||
"WiFi名称": | ||
password: 'WiFi密码' | ||
``` | ||
配置修改完成后,使用 `sudo netplan try` 测试网络配置,无异常即可使用 `sudo netplan apply` 应用配置。 | ||
|
||
|
||
|
||
### 1.4 安装 openssh-server | ||
|
||
配置完成后,发现无法ssh访问,发现默认没有安装 openssh-server,通过apt安装。安装后即可远程ssh访问。 | ||
|
||
```shell | ||
sudo apt install openssh-server | ||
``` | ||
|
||
|
||
|
||
## 2 Clash | ||
|
||
[Clash](https://github.com/Dreamacro/clash) 是一个基于规则的代理工具,主要的用途不多说了,如果你知道这个软件,就说明你大概率有这个需求。这个安装方式也不限于树莓派设备,只要是运行Linux系统的设备,都可以 | ||
|
||
|
||
|
||
这次之所以选择带GUI的Ubuntu,很大一部分原因就是想要通过图形化界面,比较方便的配置Clash。 | ||
|
||
|
||
|
||
### 2.1 Clash for Windows | ||
|
||
[Clash for Windows](https://github.com/Fndroid/clash_for_windows_pkg/releases) 是比较好用的一个 Clash GUI 客户端。 | ||
|
||
***<font color='red'>但是!它这个名字太具有迷惑性了!</font>*** | ||
|
||
***<font color='red'>它其实 支持 Windows系统!也支持 Linux!还支持 macOS !</font>*** | ||
|
||
从GitHub release页面下载,`Clash.for.Windows-0.20.34-arm64-linux.tar.gz`,从它提供的各种安装包也能看出支持多平台 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091901250.png" alt="截屏2023-09-09 18.58.02" style="zoom:55%;" /> | ||
|
||
下载后解压,运行 `cfw`,即可出现GUI界面,然后开始进行配置。 | ||
|
||
![clashforwin-0](https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091910073.png) | ||
|
||
1. 在左侧 **General 菜单**中,**打开 Allow LAN开关,允许局域网连接**。这样不止为本机提供网络代理,也能为局域网其他设备提供代理。 | ||
2. 在左侧 **Profiles 菜单**中,**将机场提供的订阅地址填入输入框,下载得到代理规则**。config.yaml为默认配置,sub为订阅到的规则。 | ||
|
||
![202309091916624](https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309091928725.png) | ||
|
||
到这为止,Clash for Windows就已经准备完毕了,随时可以使用了。 | ||
|
||
|
||
|
||
### 2.2 Clash(无图形界面) | ||
|
||
如是是无图形界面的情况,可以通过命令安装Clash。 | ||
|
||
下载Clash,注意版本,这里以树莓派使用的ARM版本为例 | ||
|
||
```shell | ||
mkdir ~/clash && cd ~/clash | ||
wget https://github.com/Dreamacro/clash/releases/download/v1.18.0/clash-linux-armv7-v1.18.0.gz | ||
sudo /usr/local/bin/clash -d /etc/clash | ||
cp config.yaml /etc/clash/ | ||
cp Country.mmdb /etc/clash/ | ||
``` | ||
|
||
解压后重命名 | ||
|
||
```shell | ||
gunzip clash-linux-armv7-v1.18.0.gz | ||
mv clash-linux-armv7-v1.18.0 clash | ||
``` | ||
|
||
移动clash到指定位置,并赋予执行权限 | ||
|
||
```shell | ||
sudo cp clash /usr/local/bin | ||
sudo chmod +x /usr/local/bin/clash | ||
``` | ||
|
||
初始化执行,自动生成config.yaml 和 Country.mmdb | ||
|
||
```shell | ||
sudo /usr/local/bin/clash -d /etc/clash/ | ||
# 输出 | ||
# INFO[0000] Can't find config, create a initial config file | ||
# INFO[0000] Can't find MMDB, start download | ||
# INFO[0003] inbound mixed://127.0.0.1:7890 create success. | ||
``` | ||
|
||
ctrl+c中断执行,**修改config.yaml**。这个就替换成你机场Clash订阅地址返回的yaml代理站点内容。 | ||
|
||
**<font color='red'>需要注意的是,在config.yaml中有几个配置,可能需要自己修改一下,因为机场提供的值可能不是你想要的</font>** | ||
|
||
1. **关于端口** | ||
|
||
代理端口分为 `http代理端口(port)`、`socks代理端口(socks-port)` 和 `混合代理端口 (mixed-port)`。这里建议直接将`混合代理端口 (mixed-port)`设置为7890,其他两项设为0。这样不管是http、socks都是用同一个7890端口,更加方便 | ||
|
||
2. **关于外部控制** | ||
|
||
Clash是支持通过 RESTful 接口来对Clash进行功能配置的,目前市面上的GUI客户端配置管理也是基于这个方式。 | ||
|
||
config.yaml中有一项配置 `external-controller`,修改为 `0.0.0.0:9090` 这样方便我从局域网其他设备对其进行控制。 | ||
|
||
还有一项配置 `secret` 主要用于 RESTful 控制接口的身份认证密码。如果是局域网不对外的话,可暂时不配。 | ||
|
||
3. **clash.razord.top** | ||
|
||
对于没有GUI的Clash,可以在其他设备上通过这个网站,获得一个控制的Dashboard。 | ||
|
||
网站打开时会让填写 Host、端口、秘钥,填写后就可以借助这个网页,对无图形界面设备上安装的Clash进行配置。具体原理的话就是页面发起配置对应功能的http请求。 | ||
|
||
|
||
|
||
代理配置完后,创建systemd 配置文件 `/etc/systemd/system/clash.service`,让我们的Clash能够开机自启。 | ||
|
||
```ini | ||
[Unit] | ||
Description=Clash 守护进程, Go 语言实现的基于规则的代理. | ||
After=network-online.target | ||
[Service] | ||
Type=simple | ||
Restart=always | ||
ExecStart=/usr/local/bin/clash -d /etc/clash | ||
[Install] | ||
WantedBy=multi-user.target | ||
``` | ||
|
||
重新加载 systemd,设置开机启动 和 立即启动 | ||
|
||
```shell | ||
sudo systemctl daemon-reload | ||
# 设置系统启动时启动clash | ||
sudo systemctl enable clash | ||
# 立即启动clash | ||
sudo systemctl start clash | ||
# 查看clash运行状态 | ||
sudo systemctl status clash | ||
``` | ||
|
||
到这为止,Clash就已经准备完毕了,随时可以使用了。 | ||
|
||
|
||
|
||
### 2.3 使用方式 | ||
|
||
> 如果你使用的设备安装了SSR、V2ray或者Clash,那你可以直接在软件界面上操作,通过界面提供的功能来开启系统代理。 | ||
|
||
这里主要是介绍一下没有安装代理软件的设备,如何借助局域网内其他已安装的代理设备(即代理服务器),实现网络代理功能。 | ||
|
||
|
||
|
||
#### 2.3.1 Windows 10 设备 | ||
|
||
在 Window 10 设置 > 网络和Internet > 代理 中,打开【使用代理服务器】开关,地址填树莓派IP地址,端口为Clash使用的7890端口。 | ||
|
||
也可以设置对 本地地址(localhost)、常见的局域网网段(192.168.x.x) 不使用代理服务器。 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309101055135.png" alt="VD7~4$~CB7W10@9NIW6HVFH" style="zoom: 70%;" /> | ||
|
||
|
||
|
||
#### 2.3.2 手机、iPad等无线设备 | ||
|
||
进入 无线局域网设置(WLAN设置),点击已连接的无线网络,将网络详情页面拉到底,有HTTP代理设置,填入树莓派IP地址,Clash的7890端口保存即可。 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309101116742.jpg" alt="MTXX_PT20230910_111545372" style="zoom:15%;" /> | ||
|
||
|
||
|
||
#### 2.3.3 Ubuntu/Linux | ||
|
||
如果是带有GUI界面的操作系统,直接在界面上配置,以Ubuntu为例,在 Settings > Network > Network Proxy 中,将代理配置中填入树莓派IP地址和Clash的7890端口保存即可 | ||
|
||
<img src="https://dingyufan-github-io.oss-cn-hangzhou.aliyuncs.com/blog/202309101147300.png" alt="截屏2023-09-10 11.47.19" style="zoom:60%;" /> | ||
|
||
如果是没有界面的Linux系统,可以通过设置环境变量的方式设置 | ||
|
||
```shell | ||
export https_proxy=http://192.168.31.250:7890 | ||
export http_proxy=http://192.168.31.250:7890 | ||
export all_proxy=socks5://192.168.31.250:7890 | ||
``` | ||
|
||
|
||
|
||
#### 2.3.4 按需配置 | ||
|
||
总的来说,我个人并不喜欢为系统配置全局网络代理,我更喜欢**给有需要的程序配置网络代理**。举个几个例子: | ||
|
||
|
||
|
||
**容器运行时containerd** | ||
|
||
使用containerd时,有些镜像国内无法拉取,而且国内没有厂商同步这些镜像,这就可以为containerd配置代理服务器,来帮助拉取这些镜像。 | ||
|
||
```shell | ||
sudo mkdir -p /etc/systemd/system/containerd.service.d/ | ||
cat << EOF | sudo tee -a /etc/systemd/system/containerd.service.d/http-proxy.conf | ||
[Service] | ||
Environment="HTTP_PROXY=192.168.31.250:7890" | ||
Environment="HTTPS_PROXY=192.168.31.250:7890" | ||
EOF | ||
sudo systemctl restart containerd | ||
``` | ||
|
||
|
||
|
||
**proxychains4** | ||
|
||
这是一个很简单、好用的代理工工具。你只需要通过apt安装 | ||
|
||
```shell | ||
sudo apt install proxychains4 | ||
``` | ||
|
||
安装后修改配置文件 `/etc/proxychains.config`,将文件最后的代理地址改为代理服务器的地址,比如 `socks5 192.168.31.250 7890`即可。 | ||
|
||
使用方法的话,只需要在原本命令前添加 proxychains4 即可 | ||
|
||
```shell | ||
proxychains4 wget xxx | ||
proxychains4 curl xxx | ||
proxychains4 git clone xxx | ||
``` | ||
|