我试图完全隐藏无线提供商手机上的所有流量。
我想通过iptables将流量通过SSH隧道引导到我的家庭路由器(不确定它们是否有帮助?)。
手机已植根并运行CyanogenMod 7.1(因此支持iptables)。
我看过this question,但我对细节仍然有些不稳定。 这个问题描述了如何为单个端口执行此操作 - 但是如何为每个端口上的每个数据包执行此操作?
这个问题具有实际和学术意义。 感谢。
答案 0 :(得分:3)
您是否尝试过使用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来执行此操作,请查看源代码并修改启动脚本。
答案 1 :(得分:1)
这不能解决您的用例,因为它仅引导firefox的流量,但您不需要root 。
在Android上安装Termux应用
在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并转到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
与用法部分中的ssh命令中使用的端口匹配
如果成功运行命令ssh-copy-id
,则无需执行任何操作。
但是,如果没有,则需要手动添加生成的公钥:
echo 'public key' >> ~/.ssh/authorized_keys
将来,我将在此处保持最新状态:https://github.com/madacol/knowledge/blob/master/Ssh%20poor-man's-vpn%20on%20android.md