项目简介
iodine是一款基于DNS隧道的工具,使用C语言编写,支持Linux、Windows、Android等多种操作系统。它允许用户通过DNS查询传输IPv4数据,尤其适用于防火墙限制互联网访问但允许DNS查询的环境,可借此绕过网络限制。
项目的主要特性和功能
- DNS隧道:利用DNS查询和响应传输IPv4数据,突破网络限制。
- 跨平台支持:支持Linux、Windows、Android等多种操作系统。
- 多种编码方式:支持Base32、Base64、Base64u和Base128等多种编码方式,能自动检测最佳编码。
- IPv4和IPv6支持:服务器可监听IPv4和IPv6请求,客户端能使用IPv4或IPv6的DNS服务器。
- 自动探测最佳配置:自动探测最佳的DNS响应片段大小和请求类型,以最大化带宽。
- 用户认证:支持密码认证,保障隧道连接的安全性。
- 虚拟网络接口:通过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字节。
注意事项
- 安全性:DNS隧道传输的数据未加密,建议在隧道内使用VPN或SSH等加密工具。
- DNS服务器配置:确保DNS服务器正确配置,能够将子域名的查询转发到
iodined
服务器。 - 网络环境:iodine的性能受网络环境和DNS服务器响应速度的影响,建议在稳定的网络环境中使用。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】