通过 SSH 隧道进行系统范围的 DNS 查找

通过 SSH 隧道进行系统范围的 DNS 查找

IT 部门已将实验室锁定,因此我无法在 Ubuntu 机器上执行 apt-get 更新或安装任何软件包。我们有一个 Windows RDP 桌面,其互联网访问受到限制。我在 Windows 机器上运行了一个 SSH 服务器,我可以使用以下命令从 Ubuntu 机器通过 SSH 隧道连接到它

ssh -CND localhost:1080 me@windowsbox

问题是我仍然无法从 Ubuntu 机器解析任何 DNS。因此,我想做的是配置 DNS 以通过 SSH 隧道。是的,我已经看到很多关于配置 Firefox 或任何浏览器以执行此操作的其他帖子,但这不适用于此处。我正在寻找系统级 DNS,或者至少是 apt-get 通过隧道解析的能力。

谢谢

答案1

您可以完全控制客户端,这很好。您没有提到您对 SSH 服务器有多少控制权。如果您控制服务器端,那么您可以在客户端上启动 UDP 到 TCP 代理,如下所示 这里

socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:5353

然后通过 SSH 将 TCP 连接转发到您的服务器,在那里启动 TCP 到 UDP 守护程序:

socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53

SSHuttle(例如提到 这里)。有一个补丁可以轻松转发DNS查询。

YMMV,但是我已经成功做到了以下几点

#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle  \
    -vvv                \
     --dns-hosts ${DNSSERVERS}   \
    -r server   \
    254.254.254.254/32

相关内容