通过 SSH 隧道引导所有 Android 流量

发布于 2025-01-07 03:22:27 字数 1817 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执笔绘流年 2025-01-14 03:22:27

这并不能解决您的用例,因为这仅引导 Firefox 的流量,但您不需要 root


TL;DR

  1. 在 Android 上安装 Termux 应用程序,编辑重要信息: Termux 不再在 Play 商店上接收更新。请从 F-Droid 安装应用程序和附加组件。

  2. 在termux中安装openssh pkg i -y openssh

  3. 使用动态端口转发ssh到服务器 ssh user@server -D12345

  4. 安装Android 上的 Firefox Beta(目前,普通 Firefox 不支持配置关于:配置

  5. 打开 Firefox Beta,然后转到 about:config

  6. 搜索 proxy

  7. 查找并设置以下属性:

    network.proxy.allow_hijacking_localhost:true
    网络.proxy.socks:本地主机
    网络.代理.socks_端口:12345
    网络.代理.类型:1
    

    确保network.proxy.socks_port与上面 ssh 命令中的端口匹配

  8. 完成!,您现在正在 Firefox 上的 ssh 服务器中导航


使用 ssh-keys 的完整说明

使用

  1. 打开 Termux 并运行 ssh user@server -D12345 (或者只需按 Up+ 输入(如果您之前运行过此命令))
  2. 使用代理配置的 Firefox 进行导航
  3. 完成!,您的流量将通过服务器

安装

设置 Android

Termux

  1. 安装Termux

  2. 通过运行以下命令配置 ssh 客户端:

    # 请求存储权限
    termux-设置-存储 &&
    # 安装openssh
    apt install -y openssh &&
    # 生成 SSH 密钥
    ssh-keygen -t ecdsa -f ~/.ssh/id_ecdsa &&
    # 设置私钥密码
    # 获取公钥
    echo -e '\n复制以下公钥:'
    猫 ~/.ssh/id_ecdsa.pub
    
  3. (可选)如果您可以通过 ssh 访问服务器,则运行:

    ssh-copy-id user@server
    

    如果没有,您需要手动将公钥添加到服务器。下面的设置服务器部分对此进行了解释

Firefox

  1. 安装 Firefox Beta - 如果您可以访问 about:config

    ,普通的 Firefox 可能会工作

  2. 打开 Firefox 并转到 url about:config,搜索 proxy 并设置以下配置:< /p>

    network.proxy.allow_hijacking_localhost:true
    网络.proxy.socks:本地主机
    网络.代理.socks_端口:12345
    网络.代理.类型:1
    

    确保network.proxy.socks_port用法部分中ssh命令中使用的端口匹配

设置服务器

如果您成功运行命令ssh-copy-id,则此处无需执行任何操作。
但如果没有,则需要手动添加生成的公钥:

echo 'public key' >> ~/.ssh/authorized_keys

来源:https://github.com/madacol/blog/blob/master/content/Ssh%20poor-man's-vpn%20on%20android.md

This doesn't solve your use case because this only directs the traffic of firefox, but you don't need root.


TL;DR

  1. Install Termux app on android, EDIT IMPORTANT: Termux does not receive updates on Play Store anymore. Install the application and add-ons from F-Droid instead.

  2. In termux install openssh pkg i -y openssh

  3. ssh into server using dynamic port forwarding ssh user@server -D12345

  4. Install Firefox Beta on android (at this time, plain Firefox doesn't support configuring with about:config)

  5. Open Firefox Beta, and go to about:config

  6. Search proxy

  7. Look for and set the following properties:

    network.proxy.allow_hijacking_localhost: true
    network.proxy.socks: localhost
    network.proxy.socks_port: 12345
    network.proxy.type: 1
    

    make sure network.proxy.socks_port matches with the port in the ssh command above

  8. Done!, you are now navigating through the ssh server on Firefox


Full instructions using ssh-keys

Usage

  1. Open Termux and run ssh user@server -D12345 (or just press Up+Enter if you have run this command previously)
  2. Navigate using the proxy-configured Firefox
  3. Done!, your traffic is going through the server

Install

Setup Android

Termux

  1. Install Termux

  2. Configure ssh client by running the following commands:

    # Ask for storage permission
    termux-setup-storage &&
    # Install openssh
    apt install -y openssh &&
    # Generate an SSH key
    ssh-keygen -t ecdsa -f ~/.ssh/id_ecdsa &&
    # Set a password for the private key
    # Get public key
    echo -e '\nCopy the following public key:'
    cat ~/.ssh/id_ecdsa.pub
    
  3. (Optional) If you have access to the server with ssh, then run:

    ssh-copy-id user@server
    

    If not, you need to manually add the public key to the server. This is explained below in the Setup server section

Firefox

  1. Install Firefox Beta - normal firefox might work if you can access to about:config

  2. Open Firefox and go to the url about:config, search proxy and set the following configurations:

    network.proxy.allow_hijacking_localhost: true
    network.proxy.socks: localhost
    network.proxy.socks_port: 12345
    network.proxy.type: 1
    

    make sure network.proxy.socks_port matches with the port used in the ssh command in the Usage section

Setup server

If you succesfully run the command ssh-copy-id there's nothing to do here.
But if not, you need to manually add the public key generated:

echo 'public key' >> ~/.ssh/authorized_keys

Source: https://github.com/madacol/blog/blob/master/content/Ssh%20poor-man's-vpn%20on%20android.md

娇纵 2025-01-14 03:22:27

您是否尝试过使用 sshtunnel?仅靠 iptables 不足以做到这一点。

至于实际如何完成的概述:

  1. 使用 ssh 登录到您的服务器并将 HTTP 代理端口转发到 Android 设备。因此,任何流向 localhost:3128 的流量实际上都会流向远程计算机(您的家庭路由器)。
  2. 由于 Android 没有全局代理设置,因此您将所有流向端口 80(HTTPS 为 443)的流量重定向到 localhost:3128。这就是 iptables 的用武之地:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to localhost:3128

如果您也想重定向其他协议,则可以使用 SOCKS 代理具有类似的设置。重定向 DNS、通过隧道重定向端口 53 等。

总而言之,要完全隐藏“所有流量”并不那么容易,所以只需使用该应用程序即可。如果您想修补 Cyanogenmod 来执行此操作,请查看源代码并修改启动脚本。

Have you tried using sshtunnel? Iptables alone is not enough to do this.

As for an overview of how it's actually done:

  1. Login to your server with ssh and forward the HTTP proxy port to the Android device. Thus any traffic going to localhost:3128 will actually go to the remote machine (your home router).
  2. Because Android doesn't have a global proxy setting, you make redirect all traffic going to port 80 (and 443 for HTTPS) to localhost:3128. That's where iptables comes in:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to localhost:3128

If you want to redirect other protocols too, you use a SOCKS proxy with a similar setup. To redirect DNS, redirect port 53 through the tunnel, etc.

All in all to complete conceal 'all traffic' is not that easy, so just use the app. If you want to patch Cyanogenmod to do this, look at the source and modify the startup scripts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文