内网端口映射+dnslog

以前的DNSLOG部署在公网上也即自己的服务器上,产品依赖个人的环境不是很好。于是做了修改。

框架

细节

1)A域名的域名服务器指向B域名

  • ns0.B.com
  • ns1.B.com

2)B域名的两个ns0 与 ns1 作A记录到公网的IP上

3)公网通过VIP的方式将公网IP的53端口流量映射到内网服务器的任意端口(最好在一千端口以上,因为绑定1000以下端口需要root权限)

4)重要
内网服务器监听绑定本地前,先用ifconfig查看下,是否有映射的外网IP(我的通过VIP是有的)。dnslog程序直接绑定到VIP上,这样返回DNS请求报文时,是通过VIP也就是原本的IP的。即使UDP的方式也是支持进出的

当一个机器向DNS服务器(公网)请求域名解析时,收到的报文是来自另外的IP(内网其他出口IP),正常的网络是不会过滤的。
但是阿里云和TX云好像会把这种请求/返回地址不一致的DNS返回包拦截掉。可能是处于安全考虑,DDOS/DNS劫持之类。

虽然过程中想了一堆UDP伪造IP的方法、网络是不是不通啥的,但最后找到了这个网卡,顺利返回数据包解决问题。

5)最后将B域名的A记录解析到内网服务器上,那么可以通过B域名访问搭建在内网服务器上的WEB。

链接

自己写实现dns
https://www.cnblogs.com/Chorder/p/9087386.html

四叶草的用dnslib的模块(四叶草的功能没怎么实现,某些代码不符合pep8格式看着难受)
https://github.com/BugScanTeam/DNSLog

posted @ 2019-07-02 21:13  huim  阅读(890)  评论(0编辑  收藏  举报