如何同时使用Tailscale和其他VPN?

如何同时使用Tailscale和其他VPN?

这里的其他VPN是指clash这类代理软件,主要是在手机上用,平台不限。

1.使用Exit Node

大致是找一台设备,开着clash,然后安装Tailscale并设为exit node,然后在其他设备上连接到同个Tailnet。
这个方案的问题是:所有流量受限于exit node的网速,一般的家宽基本不够。 所以我不想用。

2.使用Userspace Networking

文档如下

大致是使用Tailscaled开一个socks5和http代理,然后在clash中将这个代理作为一个节点,让所有100.64.0.0/10的流量走这个代理。

Windows 11 PowerShell 执行的下面的命令

tailscaled --tun=userspace-networking --socks5-server=localhost:1055 --outbound-http-proxy-listen=localhost:1055 &
tailscale up --accept-routes

返回如下结果

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Job1            BackgroundJob   Running       True            localhost            tailscaled --tun=userspa…

看起来很美好,但是我遇到的问题是这个代理节点一直连不上,我看了下文档,好像是只能在同一个容器里用(不确定)。

3.choc(已跑路的iOS app)

商店能搜到,但是已经2年没更新了,且收费

是我的方法有什么问题吗?

各位大佬有没有什么好用的办法,给支个招呗

我觉得这样在手机上是不是太复杂了?

您说的复杂是指哪个方法,还是指这个需求?
其实是我现在是手动切换,但这不是想偷个懒

正好我也在用 Tailscale,可以给你推荐一个我的解决方案。这里假设题主指的其他 VPN指的是代理软件,如 clash 等,而不是正经的 VPN 例如 OpenVPN,那么此方案可能不适用。

对于桌面平台

Window 和 Linux 下 Tailscale 均可以与常见的VPN代理软件共同工作。

对于 Android 平台

我使用的方案是 Tailscale 开 VPN,代理软件开系统代理。

优势

  1. 系统代理不占据 VPNService,可以允许其他 VPN 使用。
  2. 性能相对 VPNService 要强。
  3. 仅需一次配置即可一直使用。

劣势

  1. 仅能代理支持使用系统代理的 App 发起的连接。大多数常规应用都支持,几乎所有游戏应用不支持;自定义传输层的应用如 QQ 不受支持,但微信可以(?)。
  2. 打开和关闭需要会用 adb。
  3. 部分应用支持不太好,可能需要手动配置排除列表。例如京东的前几个版本。

配置方法

  1. 首先配置代理软件的仅代理模式,使其只监听 HTTP 端口而不启用 VPN Service。clash 可能需要在配置文件中增加字段 port: 7890 (7890 是监听端口,可以自定义)。
  2. 配置好 adb。参见 Android Developer,如果题主不需要 Android Studio,可以仅下载独立的 Platform Tools。
配置系统代理

参考自 Stackoverflow

  1. 打开 PowerShell
  2. cd <path-to-platform-tools> # <path-to-platform-tools> 是上一步下载的 Platform Tools 的目录
    
  3. .\adb.exe shell settings put global http_proxy 127.0.0.1:7890 # 这里 7890 可以根据需要修改
    #.\adb.exe shell settings put global http_proxy :0 # 用于关闭系统代理
    .\adb.exe shell settings put global global_http_proxy_exclusion_list localhost,*.ts.net # 这里是排除列表
    
  4. 重启手机

秀啊老哥,我说的就是代理软件,一会儿我修改一下描述。
这里有个小问题:排除列表可以写app名吗?就是指定应用不走代理。

排除应用应该是不行的,这个方法配置的是全局系统代理,就和 Windows 的设置里那个一样。

网络环境啊,不过你可以试试 @nullptr 说那个方法,我觉得系统代理挺不错的。

adb settings put global http_proxy 127.0.0.1:7890
adb.exe: unknown command settings

查了一下应该是adb shell

adb shell settings put global http_proxy 127.0.0.1:7890
Exception occurred while executing 'put':
java.lang.SecurityException: Permission denial, must have one of: [android.permission.WRITE_SECURE_SETTINGS]
        at com.android.providers.settings.SettingsProvider.enforceHasAtLeastOnePermission(SettingsProvider.java:2645)
        at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1608)
        at com.android.providers.settings.SettingsProvider.insertGlobalSetting(SettingsProvider.java:1562)
        at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:522)
        at android.content.ContentProvider.call(ContentProvider.java:2716)
        at android.content.ContentProvider$Transport.call(ContentProvider.java:641)
        at com.android.providers.settings.SettingsService$MyShellCommand.putForUser(SettingsService.java:385)
        at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:281)
        at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
        at android.os.ShellCommand.exec(ShellCommand.java:38)
        at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:53)
        at android.os.Binder.shellCommand(Binder.java:1092)
        at android.os.Binder.onTransact(Binder.java:912)
        at android.os.Binder.execTransactInternal(Binder.java:1392)
        at android.os.Binder.execTransact(Binder.java:1299)

AI告诉我:
您遇到的错误提示表明,您在尝试使用ADB命令设置全局代理时,没有足够的权限。这是因为在Android 4.2(Jelly Bean)及以后的版本中,修改系统设置需要WRITE_SECURE_SETTINGS 权限,而这个权限通常只授予系统应用。对于非系统应用,您需要使用root权限或者通过其他方式来获得这个权限。

我是Android 14 未 root,是不是没办法用adb设置?
WiFi下我会在设置里填代理地址,cellular下有什么好办法吗?

你的手机是小米手机的话,需要配置 设置 → 开发者选项 → USB 调试(安全设置) → 打开

感谢回复!
我用的OPPO家的真我GT,realme UI 5.0,只有USB调试(已打开),没有那个安全设置:melting_face:

那可能是 OPPO 限制吧 :joy:,模拟器和小米手机应该是没问题的。

另外移动数据的代理设置在 设置 → 移动数据 → APN。修改 APN 记得备份。

感谢,祝您发财:saluting_face:

大佬们 问下这种类似的组网 有没有收费无限流量 转发速度能到50的。。。
我用着星空只有20

mac 开surge,手机端靠surge自带的功能回家
软路由开zerotier,其他设备用zerotier

Magisk Tailscaled?

这个全局代理设置后,生效范围应该包括使用移动数据连接?

手机没有root :melting_face:

包括的

其实有一个简单方案,反正都有独立服务器,在服务器上给一个PAC配置就好
几乎所有手机,所有浏览器都支持