arch 代理配置

代理软件

我现在主要使用 v2ray,使用 yay 直接安装 yay -S v2ray,之后就可以自己手动配置代理了,
当然也一般都会使用图形界面的工具,我一般使用的是qv2ray ==> 直接安装 yay -S qv2ray,
之后就可以进软件配置了

v2ray 透明代理配置

上面配置之后可以通过启用系统代理的方式,使部分软件使用代理,比如 浏览器,但是,一些系统软件,终端等等仍然是直连,有的时候就很难受,这里就需要透明代理了。

我这里使用 cgproxy 配和 qv2ray 实现。

cgproxy

cgproxy通过劫持系统所有的网络流量,根据配置文件,让某些程序的网络流量直连,剩下的流量送入某一端口。然后我们可以让 Qv2ray 监听这个端口,将这些流量送入高级路由设置,根据规则选择直连或走代理,从而实现全局透明代理。

yay -S cgproxy-git
cgproxy 配置

安装完成之后,就是编辑cgproxy的配置文件:/etc/cgproxy/config.json

{
  "comment": "For usage, see https://github.com/springzfx/cgproxy",
  "port": 12345,
  "program_noproxy": ["v2ray", "qv2ray"],
  "program_proxy": [],
  "cgroup_noproxy": ["/system.slice/v2ray.service"],
  "cgroup_proxy": ["/"],
  "enable_gateway": true,
  "enable_dns": true,
  "enable_udp": true,
  "enable_tcp": true,
  "enable_ipv4": true,
  "enable_ipv6": true,
  "table": 10007,
  "fwmark": 39283
}

配置说明

  • cgroup_proxy 中括号里加上"/"(包含引号)

  • port 改为 Qv2ray 首选项里的透明代理的端口

  • cgproxy 默认配置是代理所有 tcpudpipv4ipv6 的流量,如果不希望代理其中的某种(些)流量,则将对应的 enable_xxx 改为 false。注意这里的配置要和 Qv2ray 选项里的配置一致(如,Qv2ray 选项里没有勾选 udp,则这里务必把 enable_udp 改为 false

  • 为了避免流量出现死循环(即代理工具发出的流量又转回到代理工具里),需要将代理工具排除在透明代理环境外面:
    program_noproxy 中括号里加上"v2ray","qv2ray"(包含引号和逗号),以使 qv2rayv2ray 发出的流量不经过透明代理。如果你的 v2rayqv2ray 不在 PATH 里,则需要填写它们的绝对路径

  • 如果启用了udp的透明代理(dns也是udp),则给v2ray二进制文件加上相应的特权,否则udp的透明代理可能会出问题

    sudo setcap "cap_net_admin,cap_net_bind_service=ep" /usr/bin/v2ray
    ## /usr/bin/v2ray 替换成自己的v2ray二进制文件路径
    ## 这个权限在 v2ray 更新时会失效,所以每次更新要重新跑一次。为了避免忘记或者嫌麻烦,可以从 AUR 安装这个包,就不用每次都跑一遍上面这个命令了。为了确保第一次有效,还是至少跑一次吧。
    yay -S v2ray-cap-git
    
  • 启动透明代理服务:systemctl start cgproxy.servicesystemctl enable --now cgproxy.service

  • 最后在 Qv2ray 里,勾选「首选项」->「入站设置」->「透明代理设置」,并将端口设置为上面配置文件中的端口,并确认网络选项中 TCPUDP 的开关与配置文件中的一致。

完成这些步骤之后,应该就 ok 了,程序的所有流量自动走 Qv2ray,按其中的规则走直连还是代理,即全局透明代理。

终端代理

终端代理可以走软件,也可已手动配置,以前我建议软件,后来我建议自己手动。。。

终端代理软件

安装终端代理软件proxychains

yay -S proxychains-ng-git

之后编辑/etc/proxychains.conf文件,在最底部配置自己的代理 url、端口
最后使用只需要在正常命令前加一个proxychains4,就可以了,比如proxychains4 yay -Syu
当然,单词有点长,可以用alias简化一下:alias pc="proxychains4"

手动开启代理

软件有时候总会报一些连接异常,所以我还是建议终端代理也配上,方便必要的时候可以手动切换代理方式
主要就是在 ~/.zshrc 文件里面加上下面两句

## 设置全部代理走sock5 后面的链接换成自己的配置
alias setproxy="export ALL_PROXY=socks5://127.0.0.1:1080"
## 取消全部代理设置
alias unsetproxy="unset ALL_PROXY"

参考文章

终端代理的两种方式因为隔得有点久了,找不到具体的参考文章,就不提了

『转载』使用 Qv2ray+cgproxy 配置透明代理(仅限 Linux)
cgproxy 配合 qv2ray 实现全局透明代理

Q.E.D.


梦醒花犹存,铁甲依然在