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