步骤一:
1.配置虚拟机系统的网络连接方式为"NAT模式"(默认模式)。
将虚拟机的网络连接配置为"NAT模式",设置界面如下图所示:

在虚拟机中使用ifconfig 查看虚拟机中各网络接口的相关配置,
记录eth0(虚拟机 以太网接口)的IP地址。

在宿主机中使用 ipconfig 查看宿主机中各网络接口的相关配置,
查找与虚拟机中 eth0 接口的IP地址属于同一网段的IP地址(虚拟网络地址)


192.168.145.1
关闭宿主机的Windows防火墙(控制面版àWindows防火墙),其操作界面如下图 所示。

在虚拟机中ping宿主机,查看网络连通情况。

在宿主机中ping虚拟机,查看网络连通情况(正常情况是连通的)

在虚拟机中ping与宿主机处于同一网段的其它物理机,查看网络连通情况(连通)。

用与宿主机处于同一网段的其它物理机ping虚拟机,查看网络连通情况(正常情况 是不连通的)

步骤二:
配置虚拟机系统的网络连接方式为"桥接模式"。 将虚拟机的网络连接配置为"桥接模式",设置界面如下图所示:

查看宿主机的以太网IP地址。

在虚拟机中使用ifconfig 将eth0 接口的IP 地址设置为与宿主机以太网IP地址 处于同一网段的地址。

注意虚拟机和主机要在同一个网上,不能一个热点一个无线网卡
确保宿主机的Windows 防火墙关闭的情况下,在虚拟机中ping宿主机,查看网络 连通情况

(按Ctrl+Z 可终止ping命令的执行) 在宿主机中ping虚拟机,查看网络连通情况

问题1:最后为什么是不可达的,虚拟机和主机不在同一个网段下吗

问题出在**子网掩码(Netmask)**上,而不是网段本身。
虽然你的 IP 地址看起来是在同一个网段(
192.168.43.x),但你设置的掩码导致了路由判断错误。根本原因分析
请看你的截图中的这行配置:
inet 192.168.43.187 netmask 255.255.255.0
- 你的 IP:
192.168.43.187- 你的掩码:
255.255.255.0(即 /24)这意味着:
你的虚拟机认为,只有
192.168.43.1到192.168.43.254之间的设备是在"本地局域网"里。推测真实情况(常见的手机热点环境):
你很可能是在使用手机热点 上网。手机热点的网关通常是
192.168.43.1,但是它的子网掩码往往是255.255.255.254(/31) 或更奇怪的设置,甚至有些热点只允许特定的 DHCP 分配。最可能的情况是:
你的宿主机(Windows)或者网关实际上并不在
255.255.255.0这个范围内,或者你的网关不是你认为的那个。如果网关实际上是
192.168.43.1,而你把掩码设为了255.255.255.0,理论上是可以通的。但报错"网络不可达"通常意味着找不到去往目标 IP 的路由路径。另一种极大的可能性:VMware NAT 模式冲突
如果你使用的是 VMware 的 NAT 模式(这是默认设置):
- VMware 的 NAT 模式通常默认使用
192.168.x.0/24网段(比如192.168.137.0或192.168.223.0)。- 你手动强制 把 IP 改成了
192.168.43.x。- 这导致虚拟机的流量不知道该往哪里发。VMware 的虚拟网卡(VMnet8)并没有配置在
192.168.43.x这个网段上,所以它不知道怎么把包发出去,直接报"网络不可达"。解决方案
请按顺序尝试以下操作:
方案一:恢复自动获取(最推荐)
不要手动指定 IP,让 VMware 的 DHCP 服务自动分配正确的 IP。
输入命令释放当前 IP:
dhclient -r eth0输入命令重新获取 IP:
dhclient eth0再次输入
ifconfig查看分配到的 IP 是什么。如果是192.168.x.x(x 不是 43),尝试 ping 网关看看通不通。方案二:如果你必须手动设置 IP(桥接模式)
如果你想让虚拟机和主机在同一个网段(比如为了做局域网渗透测试),你需要确保:
- VMware 网络适配器设置为**"桥接模式"**。
- 你的掩码必须和主机完全一致。
查看主机的掩码:
在 Windows 命令行输入
ipconfig,查看你的无线网卡(或有线网卡)的子网掩码。
如果是
255.255.255.0,你的命令没问题。如果是
255.255.255.254(手机热点常见),你就必须改成:
ifconfig eth0 192.168.43.187 netmask 255.255.255.254(注:手机热点通常只允许两个设备通信,手动设 IP 很容易被拒绝连接)
方案三:检查路由表
输入以下命令查看路由表:
route -n如果输出中没有以
192.168.43.0开头的行,或者没有默认网关(0.0.0.0),说明系统根本不知道要把数据包发给谁。手动添加路由(临时测试):
假设你的网关是
192.168.43.1:
route add default gw 192.168.43.1 eth0然后再 ping 试试。
问题2:释放当前 IP之后,重新获取 IP报错

这个报错
Error: ipv4: Address already assigned的意思是:你想自动获取 IP,但系统发现网卡上已经有一个 IP 地址占着位置了,导致新的 IP 没法分配进来。这就好比你想住进酒店房间,但发现里面已经有人了,前台(dhclient)就不让你进。
解决方法
你需要先"赶走"那个旧 IP,然后再重新申请。请按顺序执行以下两步:
第一步:手动清除旧 IP
输入以下命令,强制把 eth0 上的 IP 地址清空:
ip addr flush dev eth0(注:如果没有
ip命令,也可以用老命令ifconfig eth0 0)第二步:重新获取 IP
等命令执行完(通常没有输出就是成功了),再次输入你刚才的命令:
dhclient eth0这时候应该就能成功获取到新的 IP 地址了。你可以用
ip addr或ifconfig检查一下。
问题3:还是报错怎么办

这就有点奇怪了,通常
flush命令下去 IP 就该没了,但dhclient还是报错,这说明系统内核里或者后台进程里,还有一个顽固的dhclient进程在死死抓着这个 IP 不放。就像是你把门锁换了,但屋里还有一个人拿着备用钥匙不肯走。
请尝试下面这两个更彻底的方法,按顺序来:
方法一:杀掉所有 dhclient 进程(最推荐)
既然旧的进程在捣乱,我们就直接把它杀掉。
查看正在运行的 dhclient
ps -e | grep dhclient(你会看到类似
1234 ? 00:00:00 dhclient的字样)强制杀掉它:
killall dhclient(如果提示找不到命令,就用
pkill dhclient)再次清理 IP(保险起见)
ip addr flush dev eth0最后重新获取
dhclient eth0方法二:重启网络管理服务
如果方法一不行,说明是网络服务卡死了。
重启网络服务:
service networking restart然后再获取 IP
dhclient eth0如果以上都失败...
如果还是报同样的错,那说明问题不在软件层面,而在虚拟机设置层面。
请回到你第一张图的 VMware 设置界面:
- 如果你选的是 NAT 模式:请检查 VMware 的"虚拟网络编辑器"里,NAT 设置是否被修改过,或者是否和你的手动 IP 冲突。
- 如果你选的是 桥接模式:请确保你桥接的是正确的网卡(Wi-Fi 还是 以太网),并且你的物理路由器还有剩余的 IP 可以分配给你。
大概率执行"方法一"就能解决问题。
问题4:还是有问题咋办

这就非常奇怪了,既然把后台进程都杀掉了,IP也清空了,但系统还是报"地址已分配"。这通常意味着问题不在软件层面,而是出在网络链路的最底层------也就是你的虚拟机和物理网络(或者路由器/热点)之间的连接出了问题。
结合你之前提到的"手机热点"和"手动配置IP",现在最大的嫌疑是:你的手机热点拒绝了这台虚拟机的连接请求。
请按以下步骤排查,不要纠结于命令行了,换个思路:
第一步:检查"MAC地址过滤"或"热点连接数"
很多手机热点有安全机制,或者单纯因为连接设备过多而拒绝新设备。
- 操作 :看一眼你的手机屏幕。当你在虚拟机里运行
dhclient eth0时,手机上有没有弹出"新设备尝试连接"的提示?或者手机热点列表里有没有多出一个设备?- 解决:如果有提示,点"允许"。如果没反应,说明数据包根本没发到手机上。
第二步:彻底重置网卡(关键操作)
有时候网卡处于"僵尸状态",需要把它"关掉再打开"。
请依次输入以下命令(每行输完按回车):
把网卡彻底关掉:
ifconfig eth0 down把网卡重新打开:
ifconfig eth0 up再次尝试获取 IP:
dhclient eth0第三步:如果还是不行,换个模式(最稳妥)
如果上面都试过了,依然报
Address already assigned,说明这个网络环境(可能是你的手机热点)和你的虚拟机桥接模式八字不合。建议操作:
- 去 VMware 设置里,把网络适配器从"桥接模式"改成 "NAT 模式"。
- 回到 Kali 系统,再次执行上面的"第二步"(ifconfig down/up)。
- 再次运行
dhclient eth0。通常情况下,改用 NAT 模式能解决 99% 的虚拟机联网问题。

