You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 23.4桌面系统下如何让所有已安装应用流量通过VMess协议的V2Ray代理

Ubuntu 23.4桌面系统下如何让所有已安装应用流量通过VMess协议的V2Ray代理

兄弟,我太懂你这种窘境了——Windows上V2Ray客户端一键就能全局代理,到了Ubuntu这边浏览器能用,但终端、Telegram这些应用死活不走代理,真的闹心。别慌,给你分享几个靠谱的解决办法,一步步来就能搞定:

方法一:修改V2Ray配置文件,让所有流量走代理

这是最直接的方式,从V2Ray本身的路由规则入手:

  • 先找到你的V2Ray配置文件,一般在~/.config/v2ray/config.json,或者你运行V2Ray时所在目录下的config.json
  • 用文本编辑器打开它,找到"routing"字段块。原来的配置可能有分流规则(比如只让某些域名走代理),现在我们改成全局所有流量都走VMess代理
"routing": {
  "domainStrategy": "IPOnDemand",
  "rules": [
    {
      "type": "field",
      "outboundTag": "proxy",
      "network": "tcp,udp"
    }
  ]
}
  • 注意:这里的"proxy"要和你配置里VMess出站的"tag"一致!如果你的出站配置里写的是"tag": "vmess",就把"outboundTag"改成"vmess"
  • 保存配置后,重启V2Ray:先停掉正在运行的进程(按Ctrl+C),再重新执行./v2ray run就行

方法二:设置系统全局代理,让所有应用自动识别

如果你不想改V2Ray配置,也可以通过Ubuntu系统自带的代理设置来实现:

  • 打开系统设置,找到「网络」→「网络代理」
  • 选择「手动」模式,然后填写代理信息:V2Ray默认本地代理地址是127.0.0.1,端口一般是1080(如果你的配置改了端口,就填对应的数值)
    • HTTP代理:127.0.0.1:1080
    • HTTPS代理:127.0.0.1:1080
    • SOCKS主机:127.0.0.1:1080
  • 点击「应用到整个系统」,这样大部分GUI应用(比如Telegram)就会自动走代理了
  • 终端的话,需要手动配置环境变量才能生效:
    1. 打开~/.bashrc(如果用zsh就打开~/.zshrc),在末尾添加:
    export http_proxy=http://127.0.0.1:1080
    export https_proxy=http://127.0.0.1:1080
    export all_proxy=socks5://127.0.0.1:1080
    
    1. 执行source ~/.bashrc(或对应shell的配置文件),让设置立即生效
  • 测试一下:在终端输入curl ipinfo.io,如果返回的IP是你的代理服务器IP,就说明成功了

方法三:用iptables做透明转发(进阶玩法)

如果上面两种方法都不满足你的需求(比如某些顽固应用不遵守系统代理),可以用iptables强制把所有流量转发到V2Ray:

  • 先开启IP转发:
    sudo sysctl -w net.ipv4.ip_forward=1
    
    为了让这个设置永久生效,编辑/etc/sysctl.conf,把net.ipv4.ip_forward=1前面的注释(#)去掉,保存后重启系统或者执行sudo sysctl -p
  • 添加iptables规则,把所有TCP/UDP流量转到V2Ray的本地端口(比如1080):
    sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 1080
    sudo iptables -t nat -A OUTPUT -p udp -j REDIRECT --to-ports 1080
    
  • 注意要排除V2Ray自身的流量,避免循环转发:
    # 如果你用v2ray用户运行,就填v2ray;用普通用户运行就填你的用户名
    sudo iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner 你的用户名 -j RETURN
    sudo iptables -t nat -A OUTPUT -p udp -m owner --uid-owner 你的用户名 -j RETURN
    
  • 另外要确保V2Ray的入站配置里开启了透明代理支持,比如在inbound里添加"streamSettings": {"sockopt": {"mark": 255}}之类的配置

几个小提醒

  • 修改V2Ray配置前,最好先备份原文件,免得改错了无法恢复
  • 如果用系统代理,有些老应用可能不支持,可以尝试重启应用或者系统
  • 测试全局代理是否生效,除了终端的curl命令,还可以打开Telegram的「设置」→「高级」→「网络和代理」,看看是否自动识别了系统代理

备注:内容来源于stack exchange,提问作者Reza Ghari

火山引擎 最新活动