如何在运行openwrt的路由器上使用sshuttle?

如何在运行openwrt的路由器上使用sshuttle?

我正在使用TP-Link TL-WR1043ND路由器正在运行开放Wrt石像鬼。我想将所有流量从我的本地网络(由路由器提供服务)透明地转发到远程服务器。本质上就像 socks 代理一样工作,只是不需要为代理配置连接的客户端计算机。

我读过穿梭巴士是满足这种要求的方法。经过多次尝试,我终于满足了所有先决条件,并且可以启动 sshuttle 而不会出现任何错误消息,如下所示:

./sshuttle --dns -vvr [email protected] 0/0

其中 XXXXXX 是我在远程服务器上的用户名 YY.YY.YY.YY sshuttle 似乎初始化得很好,没有错误消息,将所有必要的规则添加到 iptables,但在建立本地代理后,我无法连接任何地方来自我的本地网络。这是 sshuttle 的输出:

Starting sshuttle proxy.
Binding: 12300
Listening on ('127.0.0.1', 12300).
DNS listening on ('127.0.0.1', 12300).
firewall manager ready.
c : connecting to server...
c : executing: ['ssh', '[email protected]', '--', 'P=python2; $P -V 2>/dev/null || P=python; exec "$P" -c \'import sys; skip_imports=1; verbosity=2; exec compile(sys.stdin.read(764), "assembler.py", "exec")\'']
c :  > channel=0 cmd=PING len=7 (fullness=0)
WARNING: Ignoring unknown argument '--'
[email protected]'s password:
server: assembling 'cmdline_options.py' (29 bytes)
server: assembling 'helpers.py' (914 bytes)
server: assembling 'ssubprocess.py' (13668 bytes)
server: assembling 'ssnet.py' (5446 bytes)
server: assembling 'hostwatch.py' (2270 bytes)
server: assembling 'server.py' (2370 bytes)
 s: latency control setting = True
 s: available routes:
 s:   69.64.32.0/22
 s:  > channel=0 cmd=PING len=7 (fullness=0)
c : connected.
Connected.
c : Waiting: 3 r=[3, 5, 9] w=[9] x=[] (fullness=7/0)
c :   Ready: 3 r=[] w=[9] x=[]
c : mux wrote: 15/15
c : Waiting: 3 r=[3, 5, 9] w=[] x=[] (fullness=7/0)
 s:  > channel=0 cmd=ROUTES len=14 (fullness=7)
 s: Waiting: 1 r=[4] w=[5] x=[] (fullness=21/0)
 s:   Ready: 1 r=[] w=[5] x=[]
 s: mux wrote: 15/15
 s: mux wrote: 22/22
 s: Waiting: 1 r=[4] w=[] x=[] (fullness=21/0)
c :   Ready: 3 r=[9] w=[] x=[]
c : <  channel=0 cmd=PING len=7
c :  > channel=0 cmd=PONG len=7 (fullness=7)
c : <  channel=0 cmd=ROUTES len=14
firewall manager: starting transproxy.
 s:   Ready: 1 r=[4] w=[] x=[]
 s: <  channel=0 cmd=PING len=7
 s:  > channel=0 cmd=PONG len=7 (fullness=21)
 s: mux wrote: 15/15
 s: Waiting: 1 r=[4] w=[] x=[] (fullness=28/0)
>> iptables -t nat -N sshuttle-12300
>> iptables -t nat -F sshuttle-12300
>> iptables -t nat -I OUTPUT 1 -j sshuttle-12300
>> iptables -t nat -I PREROUTING 1 -j sshuttle-12300
>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 127.0.0.0/8 -p tcp
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 0.0.0.0/0 -p tcp --to-ports 12300 -m ttl ! --ttl 42
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 127.0.0.1/32 -p udp --dport 53 --to-ports 12300 -m ttl ! --ttl 42
c : mux wrote: 15/15
c : <  channel=0 cmd=PONG len=7
c : received PING response
c : Waiting: 3 r=[3, 5, 9] w=[] x=[] (fullness=0/0)
 s:   Ready: 1 r=[4] w=[] x=[]
 s: <  channel=0 cmd=PONG len=7
 s: received PING response
 s: Waiting: 1 r=[4] w=[] x=[] (fullness=0/0)

我甚至不知道如何开始调试这个问题。如果我停止 sshuttle,它将删除 iptables 规则,网络连接将再次工作:

firewall manager: undoing changes.
>> iptables -t nat -D OUTPUT -j sshuttle-12300
>> iptables -t nat -D PREROUTING -j sshuttle-12300
>> iptables -t nat -F sshuttle-12300
>> iptables -t nat -X sshuttle-12300
c :
c : Keyboard interrupt: exiting.

有人在 openwrt 上设置了可以运行的 sshuttle 实例吗?或者有其他方法可以实现我在这里需要的功能(在 openwrt 路由器上使用透明代理)?

相关且未解答的问题:DD-WRT / OpenWRT 路由器上的 sshuttle

答案1

幸运的是,我得到了答案sshuttle 谷歌群组来自 sshuttle 的作者。他写道:

您可能需要添加“-l 0.0.0.0”(小写的 L),以便告诉 sshuttle 监听来自本地主机(路由器本身)以外的连接。出于安全原因,默认情况下 sshuttle 不会路由其他人的流量。

效果非常好!使用:

./sshuttle -l 0.0.0.0 --dns -vvr[电子邮件保护]0/0

答案2

有几件事让我困惑:

从原版 OpenWRT 12.09 AA 开始,你必须安装以下软件包:

  1. python(有依赖项,消耗 3-4 MB 的闪存)
  2. iptables-mod-nat-extra
  3. iptables-mod-ipopt

然后,要使用 SSH 密钥通过 SSH 进入远程服务器,您必须创建一个 Dropbear 格式的密钥:

dropbearkey -t rsa -f /root/.ssh/id_rsa

最后,在sshuttle命令行上提供密钥位置:

./sshuttle -e "ssh -i /root/.ssh/id_rsa" -l 0.0.0.0 -r [email protected] 0/0 -vv --dns

答案3

在运行 OpenWrt Chaos Calmer 15.05 的 GL-AR300M 路由器上,该过程似乎与 @trapezoid 描述的略有不同。也许它不是原装的 OpenWRT(我购买后没有重新安装),或者只是时间的流逝。

我安装了他们命名的软件包,即python iptables-mod-nat-extra iptables-mod-ipopt

为了使基于 ssh 密钥的登录正常工作,我不需要生成特殊的 ssh 密钥,我通常使用的密钥就足够了,但autorized_keys需要将其移动到/etc/dropbear/(即ssh-copy-id没有将其放在正确的目录中)。

相关内容