我试图向无线提供商完全隐藏手机上的所有流量。
我想通过 iptables 将流量通过 SSH 隧道引导到我的家庭路由器(不确定它们是否有帮助?)。
手机已获得 root 权限并运行 CyanogenMod 7.1(因此支持 iptables)。
我已经看过这个问题,但我对细节仍然有些犹豫。 这个问题描述了如何对单个端口执行此操作 - 但我如何对每个端口上的每个数据包执行此操作?
这个问题既具有实践意义,又具有学术意义。 谢谢。
这并不能解决您的用例,因为这只能引导 Firefox 的流量,但是 您不需要 root 。
在 Android 上安装 Termux 应用程序,编辑重要提示: Termux 不再在 Play 商店上接收更新。请从 F-Droid 安装应用程序和附加组件。
在termux中安装openssh
pkg i -y openssh
使用 动态端口转发 ssh 进入服务器
ssh user@server -D12345
在android上安装Firefox Beta(目前普通Firefox不支持使用
about:config
进行配置)
打开 Firefox Beta,然后转到
about:config
搜索
proxy
查找并设置以下属性:
network.proxy.allow_hijacking_localhost: true
network.proxy.socks: localhost
network.proxy.socks_port: 12345
network.proxy.type: 1
确保
network.proxy.socks_port
与上面 ssh 命令中的端口匹配
完成!,您现在正在 Firefox 上浏览 ssh 服务器
ssh user@server -D12345
(或者如果您之前运行过此命令,则只需按 Up+Enter)安装Termux
通过运行以下命令配置 ssh 客户端:
# 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
(可选)如果您可以通过 ssh 访问服务器,则运行:
ssh-copy-id user@server
如果没有,您需要手动将公钥添加到服务器。下面的设置服务器部分
对此进行了解释安装 Firefox Beta - 如果您可以访问
about:config
,普通的 Firefox 可能会工作
打开 Firefox 并转到 url
about:config
,搜索 proxy
并设置以下配置:
network.proxy.allow_hijacking_localhost: true
network.proxy.socks: localhost
network.proxy.socks_port: 12345
network.proxy.type: 1
确保
network.proxy.socks_port
与 Usage 部分中 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
您尝试过使用sshtunnel吗?仅靠 iptables 不足以做到这一点。
至于实际如何完成的概述:
localhost:3128
的流量实际上都会流向远程计算机(您的家庭路由器)。 localhost:3128
。这就是 iptables 发挥作用的地方:iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to localhost:3128
如果您也想重定向其他协议,可以使用具有类似设置的 SOCKS 代理。要重定向 DNS,通过隧道重定向端口 53 等。
总而言之,要完全隐藏“所有流量”并不那么容易,所以只需使用该应用程序即可。如果您想修补 Cyanogenmod 来执行此操作,请查看源代码并修改启动脚本。