我正在使用来自如何在外壳脚本中获取外部IP地址?的伟大技术来查找我的公共IP地址:
dig +short myip.opendns.com @resolver1.opendns.com我还使用s梭子作为ssh隧道的代理。它使用以下命令开始转发所有端口和IP上的通信量(包括DNS请求):
sshuttle --dns -vr usr@sshserver 0/0代理启动后,我访问https://canihazip.com/s以验证我的外部IP是否已更改。有,但当我再次运行dig命令时,它报告的外部IP与代理启动前相同。
从详细的输出来看,s梭子似乎是在对其他dig命令进行转发,而检查https://dnsleaktest.com只会像预期的那样在代理的另一端显示IP。据我所知,航天飞机似乎在工作。
有人能解释为什么dig命令在代理之前报告我的外部IP吗?我的目标是使opendns服务器觉得请求来自我的ssh服务器。
这有点过头了,但我在Wireshark中快速查看了一下,当筛选DNS流量时,Wireshark除了上面的DIG命令外,没有看到任何DNS请求。命令正在绕过代理。
我很乐意使用任何其他(不太优雅)的方法来找到我的外部IP,但这让我问了一个问题:还有什么是绕过航天飞机的?
发布于 2021-06-09 01:53:56
现在您已经使用了-v选项来显示运行穿梭命令时的调试消息,您可以发现穿梭机创建了一些iptables规则。其中一项规则如下:
iptables -t nat -A sshuttle-12300 -j REDIRECT --dest <nameserver>/32 -p udp --dport 53 --to-ports 12299上述规则将发送到<nameserver>的DNS请求重定向到穿梭代理端口。穿梭机在<nameserver>文件中找到这些/etc/resolv.conf S,并根据它们自动创建iptables规则。
因此,当dig命令使用/etc/resolv.conf文件中定义的名称服务器进行DNS查询时,它将被s梭子代理,但如果不是,则不会被代理。
在您的示例中,resolver1.opendns.com的地址(即208.67.222.222 )没有在您的/etc/resolv.conf中定义,因此它将不会被穿梭服务代理。
发布于 2018-07-30 10:01:33
网关有两个外部IP地址。在网关上运行的NAT采用某种负载平衡。它可以基于目标IP或协议类型。如果是这种情况,DNS查询和HTTP数据包的源IP地址将是不同的。
https://unix.stackexchange.com/questions/449294
复制相似问题