kali linux 中文文档 下载 App

NetworkManager 与渗透测试工具的冲突处理

问题背景

NetworkManager 是 Kali 默认的网络连接管理程序,负责:

但它和渗透测试工具(airmon-ng、iwconfig、dhclient、aircrack-ng)有一个根本冲突:

NetworkManager 会持续扫描所有无线接口,尝试连接已保存的 Wi-Fi 网络、管理接口状态。当你手动把 wlan0 切成 monitor mode 时,NetworkManager 可能随时把它切回来。

临时解决方案(最常用)

airmon-ng 自己能处理这个冲突:

airmon-ng check kill    # 杀掉 NetworkManager 和 wpa_supplicant
airmon-ng start wlan0  # 然后再切 monitor mode

check kill 会杀掉:

测试完后恢复:

sudo systemctl start NetworkManager

半永久方案:让 NetworkManager 忽略无线接口

# 找到 NetworkManager 配置目录
sudo bash -c 'cat > /etc/NetworkManager/conf.d/ignore-wifi.conf <<EOF
[keyfile]
unmanaged-devices=interface-name:wlan0;interface-name:mon0
EOF'

sudo systemctl restart NetworkManager

这样 NetworkManager 就不会碰 wlan0 和 mon0,但你仍然可以在 GUI 里管理有线网络。

永久方案:禁用 NetworkManager

如果你整个 Kali 就是为了渗透测试用,完全不需要图形化网络管理:

sudo systemctl disable --now NetworkManager
sudo systemctl disable --now ModemManager

# 改用 WPA supplicant + dhcpcd
sudo systemctl enable --now wpa_supplicant
sudo systemctl enable --now dhcpcd

手动连接 Wi-Fi(不用 NetworkManager)

# 扫描网络
iw dev wlan0 scan | grep SSID

# 创建 wpa_supplicant 配置
cat > wpa.conf << 'WPA'
network={
    ssid="MyWiFi"
    psk="mypassword"
}
WPA

# 连接
sudo wpa_supplicant -Dnl80211 -i wlan0 -c wpa.conf &
# 或直接后台启动
sudo wpa_supplicant -B -Dnl80211 -i wlan0 -c wpa.conf

# 获取 IP
sudo dhclient wlan0

有线网络

sudo dhclient eth0    # 动态 IP
# 或手动配置
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1

IPv6 冲突

某些渗透测试工具默认用 IPv4,但系统配置了 IPv6,导致抓包或扫描异常。临时禁用 IPv6:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

# 永久:
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

systemd-networkd 替代方案

Kali 也可以用 systemd-networkd(systemd 自带的网络管理)替代 NetworkManager:

sudo systemctl disable --now NetworkManager
sudo systemctl enable --now systemd-networkd

# 创建有线网络配置
cat > /etc/systemd/network/10-eth0.network << 'NET'
[Match]
Name=eth0

[Network]
DHCP=ipv4
NET

# 创建 Wi-Fi 配置(需要 wpa_supplicant)
cat > /etc/systemd/network/10-wlan0.network << 'NET'
[Match]
Name=wlan0

[Network]
DHCP=ipv4
NET

sudo systemctl restart systemd-networkd

推荐实践

场景推荐配置
日常使用 + 偶尔测试NetworkManager 保留 + airmon-ng check kill 按需
纯渗透测试专用机禁用 NetworkManager + wpa_supplicant/dhcpcd
虚拟机(NAT 模式)NetworkManager 正常用,无线测试极少用到