overtls + tun2proxy 实现全局翻墙,所有流量走代理

本文是 简单、高速、稳定的翻墙软件 overtls 安装、使用教程 的续篇

运行 overtls 后,为什么命令行下载软件可能很慢

如果你使用的是 overtls Windows GUI 客户端 ssrWin,那么你可能会发现:

  • 浏览器翻墙一切正常

  • 命令行下载包时,有时很慢甚至连不上

    比如,编程语言的包管理器可能会用命令行从 github 下载包,这时可能很慢甚至连不上

  • Dropbox 或类似程序却能正常工作

这是为什么?

原因其实很简单,浏览器和 Dropbox 等程序会读取并应用 ssrWin 设置在操作系统的代理,因此翻墙没有问题。但是没有这个自觉的程序,它们不管这个,只知道直连目标地址,如果目标地址被 GFW 限制,就会连接速度很慢甚至连不上

问题来了,有什么办法强制本机所有流量走代理,实现全局翻墙?办法当然是有的,就是同时使用二个命令行程序 overtlstun2proxy

tun2proxy 能接管全部流量的原理

tun2proxy 会创建虚拟网卡,让本机所有流量走这张虚拟网卡,并将流量转发到本机 overtls 客户端监听的端口,overtls 客户端则负责和服务端通讯,包括让服务端进行 DNS 查询

overtls + tun2proxy 实现全局翻墙,本机所有流量走代理

  • 运行 overtls 命令行客户端

    overtls -c config.json
    
  • 运行 tun2proxy

    sudo tun2proxy-bin --setup --proxy socks5://127.0.0.1:765 --bypass 210.98.76.54 --bypass 98.76.54.32
    
    • sudo 是 Linux 系统申请管理员权限,Windows 下可用管理员身份打开终端窗口代替
    • 765 是 overtls 在本机监听的端口
    • bypass 是为了让系统路由表对目标服务端 IP 地址的数据包不经 tun2proxy 而是直接发往当前活动网卡的网关
    • v0.5.0 起,tun2proxy.exe 改名为 tun2proxy-bin.exe

    详细可参考 tun2proxy 的官方教程

关于 DNS 被干扰导致有的网站打不开的问题

据说 中国互联网络防火墙已经可以精确识别与境外 DNS over HTTPS(DoH) 服务器的连接

如果 DNS 被干扰,目标网站就会打不开。tun2proxy 默认用 Google 的 DNS 8.8.8.8,这个 IP 树大招风,容易被 GFW 盯上。解决办法,在 tun2proxy 的命令行中指定没有被 GFW 盯上的 DNS 地址,如:

sudo tun2proxy-bin --setup --proxy socks5://127.0.0.1:765 --bypass 210.98.76.54 --bypass 98.76.54.32 --dns-addr 162.159.36.1

可用的 DNS 地址可参考:国内外可用 DNS DoH 及速度实测 - 开发调优 - LINUX DO

相关内容

2024-09-09