大家好,又见面了,我是你们的朋友全栈君。
Iodine介绍
Iodine,直译过来就是碘。碘元素在元素周期表中序号为53,正好是DNS使用的端口号。 该工具用于建立DNS隧道,其分为服务端和客户端两部分(也常称为主控端和被控端),客户端对服务器端发送DNS请求建立连接。这两部分都是用C语言编写,支持EDNS、base32、base64、base128等多种编码规范。 DNS隧道常分为中继和直连两种类型,中继是指DNS通过外网DNS服务器转发到服务端,直连是指直接通过服务端IP进行连接。Iodine对这两种类型都有支持。同时,Iodine支持多种DNS查询类型,包括NULL,TXT,SRV,MX,CNAME,A等。 iodine原理:通过TAP虚拟网卡,在服务端建立一个局域网;在客户端,通过TAP建立一个虚拟网卡;两者通过DNS隧道连接,处于同一局域网(可以通过ping命令通信),在客户端和服务端之间建立连接后,客户机上会多出一块 “dns0” 的虚拟网卡。 DNS隧道流程:iodine客户端 -> DNS服务商 -> iodined服务端,由于客户端和服务端都在一个局域网,那么只需要直接访问服务端,如 3389 (直接使用 mstsc) 、22 (ssh 建立连接) 。 与同类工具相比,iodine具有如下几种特点:
代码语言:javascript复制->不会对下行数据进行编码
->支持多平台(Linux、Windows、MacOS)
->支持16个并发连接
->支持强密码机制
->支持同网段隧道IP低质(不同于服务器——客户端网段
->支持多种DNS记录类型
->提供了丰富的隧道质量检测措施
Iodine下载与安装
linux版本可以从github上clone相应库 https://github.com/yarrick/iodine 或者是从gitee上的镜像库进行克隆 https://gitee.com/mirrors_yarrick/iodine 然后进入安装的克隆的路径中使用make install命令对二进制文件进行编译。 如果在Win上的话,可以直接下载应用,但是需要先下载tap支持虚拟网卡。 tap:http://www.qudong51.net/qudong/981.html Iodine: http://code.kryo.se/iodine/ 然后在cmd上运行(需要使用管理员权限)
Iodine的使用
服务端
首先需要在服务端配置DNS服务器,具体方法见Ubuntu搭建DNS服务器。这里使用的服务器是Ubuntu 20.0.4版本。 接着使用命令行 sudo iodined -f -DD -c 192.168.206.130 zjytest1.com 这里192.168.206.130是新建的dns0网卡ip,zjytest1.com是DNS服务器中记录的域名。 随后键入DNS隧道的密钥
客户端
在客户端,键入命令行 sudo iodine -f -r -T A 192.168.1.110 zjytest1.com 这里使用的是直连模式,192.168.1.110是服务器端在内网的IP地址,-T A代表查询类型为A。
更多使用方法可以看官方文档。
问题记录
1、无法连接到服务器端(已解决) 解决方法:第一步,检查服务器端与客户端是否能互ping。如果不能,解决互ping的问题。 第二步,检查服务器端的DNS服务(这里是bind9)是否正常。可以通过 host <域名>完成。如果正常的话,结果如下
如果不是,请检查bind配置是否正确。如配置无误,请删除/etc/resolv.conf中所有内容。 一般到这里,基本都可以正常连接。
2、如何利用DNS隧道(已解决) 理论上,在DNS隧道建立后,可以通过ssh进行远程控制,也可以通过nc发送文件,但是,出现端口无法连接的问题。 简单点说,就是我傻了。Iodine本身的功能仅仅是建立DNS隧道,绕过网关的防火墙,但是对于隧道的利用方式完全由使用者自己决定。所以,只要在服务端打开ssh,然后使用scp传输文件就可以了(傻球了,这种小事花了一天才想明白)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/207164.html原文链接:https://javaforall.cn