这篇文章是我折腾 3 天的结果,在这方面也是初学者,如果有问题,可以一块讨论。
目标
我家里有个不用的笔记本,所以用它来实现透明代理。
透明代理:只要连接上了家里的局域网,不管是 wifi 还是连接到路由器的宽带,都可以自动的实现科学上网,无需设置什么。
准备
第一点:准备一台安装了 Ubuntu 桌面的电脑,连接上你的路由器,设置有线网络为静态 ip,如下图:
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Ff8fda79d-cc9d-4511-8d63-a4f72b3c84fa%2FUntitled.png%3Fid%3D5bb8f780-d8a2-4112-810d-32be96cae2e0%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3D-xESBxpMpMFkkehhThlwvroRL7Rn8N4_g2Zyl-TM-5o?table=block&id=5bb8f780-d8a2-4112-810d-32be96cae2e0&cache=v2)
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Fd3e41859-fa1b-429a-a032-62b0185b7769%2FUntitled.png%3Fid%3D695e8b4e-627d-4ccd-849a-c61a5b7da04d%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DuDmK4pltzfIh6FOqdLql690Iv3aLwRIR0EXJRC0e8xg?table=block&id=695e8b4e-627d-4ccd-849a-c61a5b7da04d&cache=v2)
图解:
- 192.168.31.1 是我的路由器地址。
- 192.168.31.193 是我设置的 Ubuntu 的静态 ip,这个随意。
第二点:路由器需要支持 DHCP,需要后面设置 DNS 和网关,现在暂时不需要。
安装 CFW
CFW 软件全称 clash for windows,看到名字不要以为只能在 windows 上安装,支持 mac/linux/windows,现在开始下载。
第一步:前往下载,选在下图红框软件。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F77953a9f-84e7-4663-ba66-d1188927ed4c%2FUntitled.png%3Fid%3D3bb1bce0-cde0-424d-a999-de89b4d36382%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DWMZztkXD0lxGB_akCSAHSdlS4TmUphT64DThTIMAtpI?table=block&id=3bb1bce0-cde0-424d-a999-de89b4d36382&cache=v2)
第二步:解压,并进入目录运行 .
/cfw
,这就运行起来了,但不能退出终端,有点不好。不要在 root 下运行,会出现 —no-sandbox 的错误,找了好久也没找到解决办法,涉及 electron 和 chrome 相关的。
加入桌面
现在讲 CFW 这个软件加入 Ubuntu 的软件中心,打开终端,新建一个 clash.desktop 文件,写入下面信息。
[Desktop Entry] Name=clash for windows Icon=/home/miaogaolin/cfw/logo.png Exec=/home/miaogaolin/cfw/cfw Type=Application
重点解释:
- Exec 代表刚才执行
./cfw
命令的路径。
- Icon 图提供给你。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Ff9d78b1d-1a21-42f8-8ef1-f59b7c4c1b8b%2FUntitled.png%3Fid%3Dc882c8c2-00f9-4da0-847d-1001e5c9751a%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DaGtzWhe5cWoxrOXDQ_mepR9WIrJycgYYxdXxcK5tFpg?table=block&id=c882c8c2-00f9-4da0-847d-1001e5c9751a&cache=v2)
编辑好后,将该文件移动到
~/.local/share/applications
,完成!代理上网
第一步:导入 Profiles,粘贴 clash 订阅地址,点击 download,如果前面是绿色条代表选中。
![Profiles 界面](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Fbdc15c3b-f1eb-4ec1-9cfe-835fb622cdb4%2FUntitled.png%3Fid%3D04e5f300-14a2-4fb9-9586-1e4dacc43780%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DqpEwv5bcwdDAQ0a4ih5nwNw8E5LEVFyhaJRFQJhTPd0?table=block&id=04e5f300-14a2-4fb9-9586-1e4dacc43780&cache=v2)
第二步:下来进入 General,打开如下选项,剩下的先不要管。
![General 界面](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Fdb00edbb-13d9-483a-a8d2-de033261e8fe%2FUntitled.png%3Fid%3D055100ef-03f2-446d-8b28-ea1967c23431%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DPFV6-q2uSPfN0ZXgMkY2JI_lsYHyVHNlO4zKvKRN_ZE?table=block&id=055100ef-03f2-446d-8b28-ea1967c23431&cache=v2)
图解:
- Allow LAN:局域网共享。
- Mixin:在不动原有配置情况下,增加新的配置覆盖原有配置,覆盖位置
Settings> Profile Mixin
,现在不用操作。
- Start with LInux:开机自启动吧,这个我也不确定,没有测试。
完成了上述步骤后,就可以进行代理上网,只需要在浏览器或者手机配置代理即可,配置信息如下:
- ip: Ubuntu 系统ip
- 端口:7890
如果不可以,可能是防火墙的问题导致端口不能访问,解决办法:Ubuntu 开发所有端口
TUN
1. 开启
但这个还不算透明,还需要配置代理,现在需要开启 TUN 功能,它可以劫持代理不能做到的请求,例如:ip 直接访问。
第一步:安装 nftables 和 iproute2。
sudo apt-get install -y nftables iproute2
第二步:点击上图 Service Mode 后的 Manage,再点击 install,我这个是已经安装好了,所以显示 Active。等一会,就把这个软件关闭重启,因为我测试时,Mac 下可以自动重启,但 Ubuntu 不行。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F38c0ce4c-1fc4-4fe3-849e-de7764f7d49f%2FUntitled.png%3Fid%3D76d0497e-04a5-4649-84ee-d64b59d4055e%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DbI2L2JDHPHtODWYYBfCmKpbx1cYY87cE1Vv0_j-xDRQ?table=block&id=76d0497e-04a5-4649-84ee-d64b59d4055e&cache=v2)
第三步:重启后,就可以再次打开 Manage,看是否出现 Active,或者看 Service Mode 后的是否绿色地球图标。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F06ea821e-a047-48e0-89a7-00328c25999d%2FUntitled.png%3Fid%3Ded82f13a-61f3-4a4c-a52d-1a8db81d10b0%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3Dnk7YIV5jwrDUO3qWH8Z-tCU7cLTXcUEyqT0mD6cSY5c?table=block&id=ed82f13a-61f3-4a4c-a52d-1a8db81d10b0&cache=v2)
第四步:开启 TUN Mode,在 Connections 界面看看是否有 TUN 关键字,如果没有就等一会,因为担心没有请求。如果还不行,继续往下看解决办法。
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F83b54250-1dcb-4d61-a5b0-98c33fda97fb%2FUntitled.png%3Fid%3Dd2972fe2-4c6f-4504-ba5e-989b2246cccf%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DyN-czEsLtDoyXn3b3wXGf5G6hIVG_tZ9ubLh0lqJUsg?table=block&id=d2972fe2-4c6f-4504-ba5e-989b2246cccf&cache=v2)
2. 解决问题
解决 TUN 不生效问题,先看 TUN 虚拟网卡是否创建,运行
ifconfig
命令,出现如下图:![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F397307cb-cb32-428d-b0ff-1857a59897ff%2FUntitled.png%3Fid%3De30445e6-6014-43fc-8972-357ef1936b79%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3Dko4FlPjqVwEgL9T8DjzqDTWVQC4qK4CrvFMaoVwcnwY?table=block&id=e30445e6-6014-43fc-8972-357ef1936b79&cache=v2)
或者运行
route
命令。![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Ff9038a8a-aa4e-48c7-80f9-c0066d0c7007%2FUntitled.png%3Fid%3D45f65186-394d-4204-bb03-5d29af55d2cb%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DQZdNvRzW3dGb8zhvo-i0jZH7HwTokLx5MfQ3JxWdzAw?table=block&id=45f65186-394d-4204-bb03-5d29af55d2cb&cache=v2)
为啥会有两个呢,我也没搞懂,有就对了。倘若上图你没有出现,那我也不知道,你再查查,主要是我没有遇到过。
重点下来说说,满足上面的,但 TUN 还是没有生效。
下来的解决办法也是猜测,但却是也成功了,我估计是 root 权限的问题。开始解决,先进入 CFW 目录。
cd resources/static/files/linux/common/service-installer
该目录下会出现一个 install.sh,打开后如下截图的命令没有执行成功。
![install.sh](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2Fcd555547-bd6a-461d-aa75-b589bd647211%2FUntitled.png%3Fid%3D9e4ac4ab-83f5-44da-b8b9-1f3a3fca3fbc%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DImplAbkKqHocav4s2Jv4bNSsVlhLKs4PcxWK1yFWAu0?table=block&id=9e4ac4ab-83f5-44da-b8b9-1f3a3fca3fbc&cache=v2)
先查看 install、nft、ip 命令是否存在。
$ which install ip nft /usr/bin/install /usr/sbin/ip /usr/sbin/nft
nft 对应的 nftables 的安装,其它的默认应该就存在,如果不存在你自己再查查。
下来运行分别运行如下命令:
sudo install -m 0644 scripts/clash-default /etc/default/clash sudo install -m 0755 scripts/bypass-proxy-pid /usr/bin/bypass-proxy-pid sudo install -m 0755 scripts/bypass-proxy /usr/bin/bypass-proxy sudo install -m 0700 scripts/clean-tun.sh /usr/lib/clash/clean-tun.sh sudo install -m 0700 scripts/setup-tun.sh /usr/lib/clash/setup-tun.sh sudo install -m 0700 scripts/setup-cgroup.sh /usr/lib/clash/setup-cgroup.sh sudo install -m 0644 scripts/99-clash.rules /usr/lib/udev/rules.d/99-clash.rules
运行完之后再重启 CFW 再在 Connections 界面看看是否有 tun 关键字,如果没有可以在 General 界面把 TUN Mode 开关关闭再开启。
这一顿折腾希望你可以整好。
测试路由
在手机上手动设置路由(网关)和 DNS,都设置为 Ubuntu 系统的 IP 地址,下来测试是否可以科学上网。
如果这一步失败了,可能是 DNS 问题,可以看看这篇文章 下载安装。
DHCP
我的是小米路由器,下来的配置你在自己的路由器上找找。
![DNS 和网关](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2Fd54b0f25-9426-4b83-9c51-2e6165a030b2%2F8886a624-89c0-4852-a26b-35c31dc1ecf9%2FUntitled.png%3Fid%3D9a819bb2-0fc3-4ae4-b5d6-ba6f86e9053c%26table%3Dblock%26spaceId%3Dd54b0f25-9426-4b83-9c51-2e6165a030b2%26expirationTimestamp%3D1722146400000%26signature%3DfODPjkQV9Qd4aPKYQXiuWnuTGQqbxe0J1pXEXtUTsbE?table=block&id=9a819bb2-0fc3-4ae4-b5d6-ba6f86e9053c&cache=v2)
图中的 ip 地址就是 Ubuntu 系统的 ip。
设置好后,保存等待路由器重启,重启完成好把刚刚设置的路由和 DNS 删除,就正常连接路由器就行 。
到这了,不知道你的好没好,反正我的好了,不过有啥问题可以联系我,关于我 。
总结
每个人的环境都会有差异,也会遇到各种各样的问题,所以需要极度的耐心才可以,毕竟很多人都是小白。
现在也是刚开始,如果后期我有遇到新的问题,再来说说。
如果想远程连接 Ubuntu 可以看看。