在不可信网络下基于iodine建立DNS隧道

场景

不受信任的公共网络(如安装了审计设备的内网)、开启了WEB Portal认证的网络(如CMCC、ChinaNet)等。
注意:Win下直接使用iodine需要安装OpenVPN并且可能存在兼容性问题,建议通过虚拟机连接服务器然后开启端口转发。此外,网络速率与质量不会很高,延迟也会达到上百或数百毫秒。

原理

通过iodine将数据包封装为DNS请求,直接传输或通过DNS递归传输给自建的服务器再传送至互联网。当然,这个隧道只是联通了客户机与服务器,如果需要连接互联网,我们需要将本机通过位于服务器上的SS或SSH Tunnel等服务代理出去。

步骤

  • 获取iodine服务端与客户端,拥有一个公网IP地址的VPS服务器及域名。
  • 建立一个NS记录,如a.example.com值为b.example.com.
  • 建立一个A记录b.example.com,值为SERVER_IP
  • 服务端:执行iodined -f a.example.com,设置一个连接密码。
  • 客户端:执行iodine a.example.com,输入连接密码。
  • 完成连接,通过ipconfig(win)或ifconfig(Xnix)等命令即可看到一个名为dnsX的网络接口(X为连接序数,可以有多个DNS隧道在运行)。
  • 扩展

    iodine初步研究 – 小西的博客 | Xiaoxi’s Blog
    iodine README
    GitHub – yarrick/iodine: Official git repo for iodine dns tunnel

    CC BY-SA 4.0 在不可信网络下基于iodine建立DNS隧道 by 小小泥娃的部落格 is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

    发表评论