kali linux配置固定IP比较麻烦,以下本人经历过的过程。
向AI发问:
┌──(mykali㉿kali)-\~
└─$ ping www.baidu.com
ping: www.baidu.com: Temporary failure in name resolution
┌──(mykali㉿kali)-\~
└─$ ping 192.168.21.1
ping: connect: Network is unreachable
┌──(mykali㉿kali)-\~
└─$ ping 192.168.21.103
ping: connect: Network is unreachable
┌──(mykali㉿kali)-\~
└─$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:b7:f7:6c brd ff:ff:ff:ff:ff:ff
┌──(mykali㉿kali)-\~
└─$ ip addr show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:b7:f7:6c brd ff:ff:ff:ff:ff:ff
inet 192.168.21.50/24 brd 192.168.21.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb7:f76c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
┌──(mykali㉿kali)-\~
└─$ ip route show
default via 192.168.21.1 dev eth0 proto static metric 100
192.168.21.0/24 dev eth0 proto kernel scope link src 192.168.21.50 metric 100
┌──(mykali㉿kali)-\~
└─$ cat /etc/network/interfaces
This file describes the network interfaces available on your system
and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
The loopback network interface
auto lo
iface lo inet loopback
#auto eth0 # 替换为你的接口名,例如 eth0, ens33 等
#iface eth0 inet static
#address 192.168.21.50 # 你的IP地址
#netmask 255.255.255.0 # 子网掩码,等同于 /24
#gateway 192.168.21.1 # 网关地址
#dns-nameservers 8.8.8.8 8.8.4.4 # DNS服务器地址
-----------------------反馈:---------------------------------------------------------------
从你贴的输出看,网卡已 UP、IP 和路由也配好了,但连网关 192.168.21.1 都 ping 不通,说明问题在 二层连通性 或 虚拟机网络模式,而不只是 DNS。
现象分析
| 命令 | 结果 | 含义 |
|---|---|---|
ping 192.168.21.1 |
Network is unreachable | 内核发不出包,常见是 L2/路由/防火墙 |
ping www.baidu.com |
name resolution failed | 没 DNS,或根本没网 |
ip addr |
192.168.21.50/24 |
IP 已配置 |
ip route |
默认网关 192.168.21.1 |
路由看起来正常 |
/etc/network/interfaces 里 eth0 静态配置是注释掉的,当前 IP 多半来自 NetworkManager 或手动 ip addr,不一定和 VMware/VirtualBox 实际网络一致。
先在 Kali 上跑这些诊断
1. 看 ARP 能否解析网关(最关键)
ip neigh show dev eth0
2. DNS 配置
cat /etc/resolv.conf
3. NetworkManager 状态
nmcli device status
nmcli connection show --active
4. 防火墙
sudo iptables -L -n -v
5. 抓包看有没有 ARP 请求/应答
sudo tcpdump -i eth0 -n arp or icmp &
sleep 1
ping -c 2 192.168.21.1
sudo kill %1
重点看 ip neigh:
- 若网关一直是
FAILED或(incomplete)→ 二层不通(VM 网络模式/宿主机网段不对) - 若有 MAC 但仍 ping 不通 → 可能是网关禁 ICMP 或防火墙
最可能原因:虚拟机网络模式不对
你在 Kali 里手动设了 192.168.21.50,但 VM 网卡可能还在 NAT 或 Host-Only,并不在 192.168.21.0/24 真实网段上。
VMware 建议设置
- 虚拟机 → Settings → Network Adapter
- 选 Bridged(桥接),并桥接到连接
192.168.21.x网段的那块物理网卡(Wi-Fi 或以太网) - 确认宿主机本身能 ping 通
192.168.21.1
VirtualBox 建议设置
- 设置 → 网络 → 网卡1 → 桥接网卡
- 桥接到宿主机正在上网的那块网卡
修复方案(二选一)
方案 A:用 DHCP(推荐,先验证能否上网)
删掉手动 IP,改用 DHCP
sudo nmcli connection modify "Wired connection 1" ipv4.method auto
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"
或者(连接名以 nmcli connection show 为准)
sudo dhclient -r eth0
sudo dhclient -v eth0
ip addr show eth0
ip route show
ping -c 3 192.168.21.1
ping -c 3 www.baidu.com
若 DHCP 能拿到 IP 并 ping 通网关,说明之前 静态 IP 与 VM 网络不匹配。
方案 B:继续用静态 IP 192.168.21.50
确认 VM 已桥接到 192.168.21.0/24 后:
sudo nmcli connection modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.21.50/24 \
ipv4.gateway 192.168.21.1 \
ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"
或用 /etc/network/interfaces(需先停 NetworkManager 对该网卡的管理):
/etc/network/interfaces 取消注释并改成:
auto eth0
iface eth0 inet static
address 192.168.21.50
netmask 255.255.255.0
gateway 192.168.21.1
dns-nameservers 8.8.8.8 114.114.114.114
快速检查清单
- 宿主机能否 ping
192.168.21.1?(不能则问题在路由器/网线,不在 Kali) - VM 网卡是否为 Bridged,且桥接网卡正确?
192.168.21.50是否与其他设备 IP 冲突?- Kali 里
ip neigh show网关是否有 MAC?
把下面命令的输出贴出来,我可以帮你精确定位:
ip neigh show dev eth0
cat /etc/resolv.conf
nmcli device status
nmcli connection show --active
另外说明一下:VMware 还是 VirtualBox,以及宿主机当前 IP 是多少(例如 192.168.21.x 还是别的网段)。
、、、、、、、、、再次向AI发问、、、、、、、、、、、、
┌──(mykali㉿kali)-\~
└─$ ip neigh show dev eth0
cat /etc/resolv.conf
nmcli device status
nmcli connection show --active
192.168.21.103 FAILED
192.168.21.1 INCOMPLETE
Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected Wired connection 1
lo loopback connected (externally) lo
NAME UUID TYPE DEVICE
Wired connection 1 f663b16f-1328-49b2-96c2-0faf2a1066a2 ethernet eth0
lo 5948d9a8-4bf7-49b4-b4ed-6a830fe6388f loopback lo
┌──(mykali㉿kali)-\~
└─$
------------------------------------------反馈-------------------------------------
结论已经比较明确:二层不通(ARP 失败)
192.168.21.1 INCOMPLETE ← 网关 MAC 解析不出来
192.168.21.103 FAILED ← 同网段主机也解析不到
网卡显示 connected、IP/路由/DNS 都配好了,但 ARP 拿不到应答,所以 ping 会报 Network is unreachable。问题不在 DNS,而在 虚拟机没有真正接到 192.168.21.0/24 物理网络。
网卡 MAC 00:0c:29:... 说明你在用 VMware,下面按 VMware 来修。
第一步:在 Windows 宿主机上确认
在 PowerShell 里执行:
ipconfig
ping 192.168.21.1
ping 192.168.21.103
看宿主机是不是 192.168.21.x:
- 宿主机 ping 不通 → 先修路由器/网线/Wi-Fi,不是 Kali 的问题
- 宿主机 能 ping 通,Kali 不通 → 99% 是 VMware 桥接配置问题
第二步:改 VMware 网络模式(最关键)
- 关机 Kali 虚拟机(不要只挂起)
- VMware → 选中 Kali → Settings → Network Adapter
- 选择 Bridged: Connected directly to the physical network
- 点 Configure Adapters,勾选你 正在上网 的那块网卡:
- 有线:
Realtek/Intel Ethernet - 无线:
Intel Wi-Fi/WLAN - 不要 勾
VMware Virtual Ethernet之类虚拟网卡
- 有线:
- 启动 Kali
第三步:在 Kali 里刷新网络
先看连接名(你的是 Wired connection 1)
nmcli connection show --active
先改成 DHCP 测试(推荐)
sudo nmcli connection modify "Wired connection 1" ipv4.method auto
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"
查看新 IP
ip addr show eth0
ip route show
ip neigh show dev eth0
ping -c 3 192.168.21.1
ping -c 3 www.baidu.com
如果 DHCP 拿到了 192.168.21.x 且 ip neigh 里网关有 MAC,说明桥接已经正常。
第四步:确认要用静态 IP 时再改回
桥接正常后再设静态 IP:
sudo nmcli connection modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.21.50/24 \
ipv4.gateway 192.168.21.1 \
ipv4.dns "8.8.8.8 114.114.114.114"
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"
若桥接仍不行,可试 NAT(先保证能上网)
Settings → Network Adapter → NAT,然后在 Kali:
sudo nmcli connection modify "Wired connection 1" ipv4.method auto
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"
NAT 下 IP 通常是 192.168.x.x(VMware 虚拟网段),不要 再手动设 192.168.21.50。
其他可能原因
| 情况 | 处理 |
|---|---|
| 路由器开了 AP 隔离 / 访客网络 | 换普通 Wi-Fi 或接有线 |
192.168.21.50 已被占用 |
换 IP 或先 DHCP 看分配结果 |
| VMware 桥接服务异常 | Windows 服务里重启 VMware Bridge Protocol |
修复成功的标志
ip neigh show dev eth0
应类似:
192.168.21.1 lladdr xx:xx:xx:xx:xx:xx REACHABLE
ping -c 2 192.168.21.1 # 通
ping -c 2 www.baidu.com # 通
请补充这两点,我可以帮你判断该用桥接还是 NAT:
- Windows 上
ipconfig显示的 IPv4 地址(是不是192.168.21.x) - 改完 Bridged 并 DHCP 后,
ip addr show eth0和ip neigh show dev eth0的输出