littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C语言的DNS隧道工具

项目简介

iodine是一款基于DNS隧道的工具,使用C语言编写,支持Linux、Windows、Android等多种操作系统。它允许用户通过DNS查询传输IPv4数据,尤其适用于防火墙限制互联网访问但允许DNS查询的环境,可借此绕过网络限制。

项目的主要特性和功能

  1. DNS隧道:利用DNS查询和响应传输IPv4数据,突破网络限制。
  2. 跨平台支持:支持Linux、Windows、Android等多种操作系统。
  3. 多种编码方式:支持Base32、Base64、Base64u和Base128等多种编码方式,能自动检测最佳编码。
  4. IPv4和IPv6支持:服务器可监听IPv4和IPv6请求,客户端能使用IPv4或IPv6的DNS服务器。
  5. 自动探测最佳配置:自动探测最佳的DNS响应片段大小和请求类型,以最大化带宽。
  6. 用户认证:支持密码认证,保障隧道连接的安全性。
  7. 虚拟网络接口:通过TUN/TAP设备创建虚拟网络接口,实现隧道通信。

安装使用步骤

1. 编译项目

在项目根目录下运行以下命令编译项目: bash make 编译完成后,会生成 iodine(客户端)和 iodined(服务器)两个可执行文件。

2. 安装

运行以下命令将二进制文件和手册页安装到系统目录: bash make install

3. 运行服务器

在服务器上运行 iodined,指定隧道内的IP地址和域名。例如: bash ./iodined -f 10.0.0.1 test.com -f 参数表示在前台运行,10.0.0.1 是隧道内的IP地址,test.com 是用于隧道的域名。

4. 运行客户端

在客户端上运行 iodine,指定服务器的IP地址和域名。例如: bash ./iodine -f -r 192.168.0.1 test.com -f 参数表示在前台运行,-r 参数强制使用DNS隧道,192.168.0.1 是服务器的IP地址,test.com 是用于隧道的域名。

5. 测试连接

在客户端和服务器上分别ping对方的隧道IP地址,确保隧道连接成功。例如: bash ping 10.0.0.1 # 在客户端上执行 ping 10.0.0.2 # 在服务器上执行

6. 其他配置

  • 指定DNS请求类型:使用 -T 参数指定DNS请求类型,例如 -Ttxt 表示使用TXT请求。
  • 指定编码方式:使用 -O 参数指定编码方式,例如 -Obase64 表示使用Base64编码。
  • 调整DNS响应片段大小:使用 -m 参数指定DNS响应片段大小,例如 -m1130 表示片段大小为1130字节。

注意事项

  1. 安全性:DNS隧道传输的数据未加密,建议在隧道内使用VPN或SSH等加密工具。
  2. DNS服务器配置:确保DNS服务器正确配置,能够将子域名的查询转发到 iodined 服务器。
  3. 网络环境:iodine的性能受网络环境和DNS服务器响应速度的影响,建议在稳定的网络环境中使用。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】