Skip to content

archlinux 透明代理

🕊 纵使千山多万壑,犹有青鸾踏云间

Section titled “🕊 纵使千山多万壑,犹有青鸾踏云间”

全球化浪潮无法阻挡,我们常常有访问一些资料的客观需求。但有的时候因为一些因素往往导致无法正常访问(包括但不限于终端中下载文件特别慢、无法访问部分网站、部分应用无法正常使用等)。虽然前路千沟万壑,但无法阻挡我们前行的脚步。本节我们通过设置透明代理解决这一问题

v2rayA 的优势:

  • 支持一键开启全局代理,配置方便
  • 客户端运行在浏览器中,轻量
Terminal window
sudo pacman -S v2ray v2raya

安装后启动服务:

Terminal window
sudo systemctl enable --now v2raya

随后在开始菜单中搜索 v2rayA,点击即可打开浏览器页面。在其中加入订阅(没有魔法上网节点?请参考原文档相关内容)。在设置中建议开启全局透明代理(选择大陆白名单),同时开启防止 DNS 劫持功能,否则可能会拿不到被 DNS 污染的资源(如 github raw)。

Terminal window
sudo pacman -S dae daed

安装后启动服务:

Terminal window
sudo systemctl enable --now dae

然后你就可以参照官方文档来使用了:

dae:https://github.com/daeuniverse/dae/blob/main/docs/zh/README.md

daed:https://github.com/daeuniverse/daed/blob/main/docs/getting-started.md 安装完 daed 后,打开浏览器访问 http://localhost:2023 开始使用

通过以下命令安装 Qv2raycnV2Ray / Xraycn 内核:

Terminal window
sudo pacman -S qv2ray-dev-git v2ray

Qv2ray

Qv2ray 是一个使用 Qt 编写的跨平台的 v2ray 图形前端。

  1. 打开 Qv2ray > 点击 首选项

Qv2ray_config-1

  1. 内核设置 选项卡中,点击 检查 V2Ray 核心设置 以验证 V2Ray 核心设置:

Qv2ray_config-2

  1. 在主窗口中点击 分组

Qv2ray_config-4

  1. 修改 分组名称默认分组 为自定义名称(通常为 ✈ 场名称):

Qv2ray_config-5

  1. 切换到 订阅设置 选项卡并进行如下配置:

    1. 勾选 此组是一个订阅

    2. 设置 订阅地址 为 ✈ 场提供的 订阅链接

    3. 点击 更新订阅 按钮并等待完成

    4. 点击 确定 以应用设置并关闭对话框

Qv2ray_config-6

  1. 双击分组中添加的订阅即可查看更新出的节点,右键并点击 测试延迟 可以测试分组或节点的延迟:

Qv2ray_connect-1

  1. 右键需要连接的节点 > 点击 连接到此服务器 即可连接:

Qv2ray_connect-2

  1. 打开不存在的网站验证连接:

Qv2ray_connect-3

通过以下命令安装 cgproxycn / aur

Terminal window
sudo pacman -S cgproxy-git
  1. 打开 Qv2ray > 首选项 > 入站设置 > 取消勾选 设置系统代理

Qv2ray_transparent-1

  1. 勾选 透明代理设置

Qv2ray_transparent-2

其它设置保持默认即可,IPv4 端口 可自定义为其它端口。

  1. 点击 确定 保存设置
  1. 通过 vim 编辑 /etc/cgproxy/config.json 文件:
Terminal window
sudo vim /etc/cgproxy/config.json

进行如下修改:

  • cgroup_proxy 中括号里加上 "/"(包含引号)
  • port 改为 Qv2ray 首选项里的透明代理端口(默认是和 Qv2ray 默认对应的 12345
  • enable_dnsenable_udpenable_ipv6 改为 false
  • 如果希望当本机作为网关设备时为连接到本机网关的其他设备(如连接到本机开设的 wifi 热点的设备)也提供透明代理,则将 enable_gateway 改为 true

cgproxy

  1. 保存并退出 vim
  1. 打开 系统设置 > 点击侧栏 连接

system-config_step-1

  1. 选择当前连接 > 点击 ipv4 选项卡:

system-config_step-2

  1. 其它 DNS 服务器 中添加没有污染的 DNS 服务器:

system-config_step-3

  1. 保存并退出系统设置
  1. 在 Qv2ray 中连接一个节点

  2. 在 Qv2ray 托盘菜单中关闭系统代理(如果已经启动)

  3. 通过以下命令启动 cgproxy 服务:

Terminal window
sudo systemctl start cgproxy.service
  1. 通过以下命令检查 cgproxy 服务运行情况:
Terminal window
systemctl status cgproxy.service

cgproxy-start

  1. 打开不存在的网站验证连接:

check

Terminal window
sudo setcap "cap_net_admin,cap_net_bind_service=ep" /usr/bin/v2ray

一个基于 Qt 的跨平台客户端,后端基于 Xray 和 sing-box。

Terminal window
yay -S nekoray
# yay -S nekoray-git #开发版

Clash 本身是一个网络连接的代理内核,通过预先定义的规则,对网络连接进行转发。Clash 内核规定了配置文件 config.yaml 的格式。支持 VMess、Shadowsocks、Trojan、Snell 协议。

Clash.Meta(现改名成 mihomo)(为了表达方便后面会使用 Meta 指代这个版本)是一个基于开源项目 Clash 的二次开发版本,增加了一些独有特性。支持所有原版 Clash 开源核心的全部特性,支持原 Clash Premium 核心部分特性。基于目前原版内核已无人维护且 Meta 更新较为活跃,更推荐使用 Meta 而非原版。

Meta 的大体配置步骤可参考官方教程,其中的 config.yaml 配置文件需要自己新建并填入内容,配置文件可直接复制 Meta 官方文档的配置示例-懒人配置,在 proxy-providers 补充你的 ✈ 场提供的订阅链接即可。

原版 Clash 配置方法
Terminal window
# 配置文件
vim ~/.config/clash/config.yaml

如果你有一个 ✈ 场提供的订阅链接,可以通过以下指令手动配置到 Clash:

Terminal window
curl -A clash -o ~/.config/clash/config.yaml <SUSCRIPTION_URL>
# 使用`clash`的用户代理(UA)。
# 请将 <SUSCRIPTION_URL> 替换成你的订阅链接。

Clash-Verge 目前的继任者(原版仓库目前还在存档),基于 tauri 框架开发的开源跨平台 Clash 客户端(远离 Electron 从我做起)

yay -S clash-verge-rev-bin

Clash for Windows(不建议,现已停止更新)

Section titled “Clash for Windows(不建议,现已停止更新)”

这是一个功能较全的客户端,支持 Windows/macOS/Linux ,基于 Clash 和 Electron 的一个 GUI 客户端。未开源

yay -S clash-for-windows-bin

虽然 cgproxy 很好,但有的时候就是会有诡异的 bug。本指南为了内容的全面性,介绍其它的代理方法。

如步骤 4. 通过系统代理方式尝试连接 所述,但在很多应用不生效(主流浏览器已支持 KDE 的系统代理)。

Firefox 可使用系统代理,也可手动配置:

Firefox

  1. 点击 Settings > Advanced > Connection type > Use custom proxy

Telegram_step-1

  1. 点击 ADD PROXY > 填写合适的类型和端口 > SAVE

Telegram_step-2

  1. 点击 File文件) > Preference首选项) > Settings设置

  2. 搜索 proxy,在其中填入 http 代理地址(http://127.0.0.1:xxxx)即可:

vscode

通过以下 export 命令设置当前终端的代理方式:

Terminal window
export https_proxy=http://127.0.0.1:xxxx
export http_proxy=http://127.0.0.1:xxxx
export all_proxy=http://127.0.0.1:xxxx

如果对于一个应用,KDE 系统代理不生效,在终端 exportALL_PROXY 变量再用终端启动此应用代理也不生效,并且这个应用自身也没有配置代理的选项,此时可以尝试使用 proxychains-ng。

它可以为单行命令配置代理。它是一个预加载的 hook,允许通过一个或多个 SOCKS 或 HTTP 代理重定向现有动态链接程序的 TCP 流量。

  1. 通过以下命令安装 proxychains-ng 包:
Terminal window
sudo pacman -S proxychains-ng
  1. 通过 vim 编辑 /etc/proxychains.conf 文件:
Terminal window
sudo vim /etc/proxychains.conf

把配置文件中最后两行改为 Qv2ray 代理的 ip 和端口:

proxychains_step-1

proxy_dns 一行前添加 # 注释掉此行,否则使用 proxychains 启动 yay 会报错:

proxychains_step-2

quiet_mode 一行前删除 # 解注释掉此行,以关闭调用 library 产生的输出:

# Quiet mode (no output from library)
quiet_mode
  1. 使用代理方式为在单一命令前添加 proxychains 前缀:
Terminal window
proxychains %command%

如使用 proxychains-ng 代理 yay:

Terminal window
proxychains yay -Syu

proxychains_step-3

📔 本节参考资料: