Kali虚拟机端口映射的核心答案:在VMware或VirtualBox中,将虚拟机网络设置为NAT模式,然后通过端口转发规则,把宿主机端口映射到虚拟机指定端口,即可实现内网访问;若需外网访问,则需借助公网IP或内网穿透工具。
很多时候,我们手上有一台Kali虚拟机,想从宿主机直接SSH进去,或者想开放一个Web服务给局域网里的其他电脑访问,默认情况下,虚拟机像躲在幕后的小透明,外面访问不到它,我在折腾的过程中踩过不少坑,这篇就把VMware和VirtualBox两种主流虚拟机下的端口映射方法,以及外网访问的几种思路,一次说清楚。
kalis虚拟机端口映射的两种主流方案对比
行业里做端口映射,基本绕不开两种模式:NAT模式配合端口转发和桥接模式直连,它们各有各的脾气,选哪个取决于你当下的网络环境。
| 对比维度 | NAT模式 + 端口转发 | 桥接模式 |
|---|---|---|
| IP获取方式 | 虚拟机在虚拟内网中,由VMnet8(VMware)或VirtualBox NAT网卡分配IP | 虚拟机直接从路由器获取与宿主机同网段的IP |
| 外网可见性 | 隐藏,需显式配置转发规则 | 完全暴露,像一台独立主机 |
| 配置复杂度 | 稍高,但一劳永逸 | 较低,但依赖路由器设置 |
| 典型适用场景 | 需要宿主机统一监管入口、只暴露少数服务 | 需要多种服务频繁接入、追求零配置直连 |
NAT模式下的映射地址是宿主机自己的IP,你在其他机器上访问宿主机IP:映射端口,数据就会沿着虚拟网卡那条隧道,转发给Kali虚拟机里对应的服务端口。
vmware kali端口转发配置一条龙
VMware的NAT模式默认开启了DHCP,虚拟机的IP通常长这样:168.网段.xxx,我们要做的就是把宿主机的某个端口“借”给Kali用。
第一步:检查虚拟机的网络适配器
右键虚拟机 → 设置 → 网络适配器,确保勾选的是
NAT模式,这是整个链路的地基,选错了后面全白搭。
第二步:打开虚拟网络编辑器映射入口
在VMware主界面点击“编辑” → “虚拟网络编辑器”,弹窗里会看到一堆VMnet,记住你的Kali用的是哪个网段,通常是VMnet8,选中VMnet8,点击下方的 “NAT设置”。
第三步:添加端口转发规则
在弹出的NAT设置窗口里,你能看到“端口转发”这个区域,点击“添加”,填写三件事:
- 主机端口:你想让宿主机哪个端口代表Kali,比如我用
2222代表SSH服务的22端口,这样避免和宿主机已有服务冲突。 - 虚拟机IP地址:在Kali里用
ip addr查一下,记下那个168.xxx.xxx的地址,填进去。 - 虚拟机端口:Kali里服务实际监听的端口,SSH是
22,Web服务是80或8080。
填完之后点确定,这时,你在宿主机命令行里执行ssh root@127.0.0.1 -p 2222,就能直接钻进Kali的shell了。局域网内其他机器想访问,只需把IP换成宿主机的局域网IP,比如ssh root@192.168.1.10 -p 2222。
VirtualBox里的端口映射操作路径
VirtualBox的NAT端口映射设置位置和VMware不太一样,但逻辑相通,它没有独立的管理器,藏在每台虚拟机的设置面板里。
选中Kali虚拟机 → 设置 → 网络 → 连接方式选 NAT → 点击 “高级” 展开 → 点击 “端口转发” 按钮,在这里添加规则,表格里有四个字段:
- 名称:随便起,方便自己认,比如
SSH映射。 - 协议:TCP还是UDP,SSH、Web用TCP,DNS查询这类才用UDP。
- 主机IP:留空代表绑定所有网卡(0.0.0.0),这样局域网所有机器都能通过宿主机IP访问,若填
0.0.1则仅限本机。 - 主机端口:填
2222之类的高位端口。 - 子系统IP:填Kali虚拟机自己的IP,比如
0.2.15。 - 子系统端口:填
22。
配置完成后,访问方式和VMware一模一样。这里有个关键差异:VirtualBox的NAT网段默认是0.2.0/24,和VMware的168.x.0/24不同,排查问题时别搞混了。
外网访问Kali的两种落地路线
内网玩得再溜,总有想在外面连回家里Kali的时候,这就没法绕开公网IP和内网穿透了。
有公网IP,用路由器端口转发
如果你家里宽带能拿到公网IP,那就简单了,在路由器管理后台找到“端口转发”或“虚拟服务器”功能,把外网端口(例如2222)转发到宿主机的内网IP和端口(宿主机IP的2222端口)。
链路就变成了:外网 → 路由器公网IP:2222 → 宿主机内网IP:2222 → Kali虚拟机:22,前置条件是确保运营商给你的是公网IP,而不是大内网IP。
没有公网IP,上内网穿透
现在多数家庭宽带没有公网IPv4,这时就需要内网穿透工具,业界共识是使用frp或ngrok这类工具,它们能在没有公网IP的情况下,通过一台有公网IP的云服务器作为跳板,把流量安全地引进来。
以frp为例(frp采用客户端-服务器架构,一端连接公网,一端连接Kali):
- 准备一台有公网IP的云服务器(价格丰俭由人,月付几十元的基础款就够用)。
- 在服务器上运行frp服务端(frps),开放一个通信端口。
- 在Kali里运行frp客户端(frpc),配置好
local_ip为0.0.1,local_port为22,remote_port为你自定义的外网端口。 - 之后你在任何地方,访问
服务器公网IP:remote_port,就能穿透层层防火墙,摸到Kali的SSH。
这类工具由客户端主动向外发起连接,因此能有效绕过NAT和路由器的入站限制,这是它最核心的价值所在。
端口映射失败的常见排查清单
端口映射配置完了,敲回车却卡住不动?别慌,八成是下面几个小妖精在作祟,按顺序排查效率最高。
虚拟机防火墙拦路
Kali默认防火墙通常没开,但万一你装过ufw,就得检查一下,在Kali里执行sudo ufw status,如果是active状态,执行sudo ufw allow 22/tcp放行对应端口。
SSH服务没监听所有网卡
Kali的SSH默认配置可能只监听0.0.1,修改/etc/ssh/sshd_config文件,找到ListenAddress,确保它被注释掉或指定为0.0.0,然后执行sudo systemctl restart sshd让改动生效。
端口号冲突
宿主机上自己跑了别的服务占用了映射端口,会导致转发失败,换一个高位端口(比如2222
、8080)能避开绝大多数冲突。
虚拟机IP地址变了
NAT模式下DHCP租约到期,虚拟机IP可能会变,为保证映射长期有效,可以在Kali里将网卡IP设置为静态地址,或者专门给MAC地址绑定固定IP。
网络安全配置须知:暴露端口等于开门迎客
映射一个SSH端口到公网,就等于在Kali的围墙上开了一扇门。暴力破解攻击全天候都在扫描全网IP的22端口,这是安全行业的基本常识,将默认端口暴露到公网是个不太明智的选择,原因有两点:
- 默认端口的破解工具极多,门槛极低。
- 日志会被大量无效登录刷屏,掩盖真实攻击。
基于此,以下安全配置被广泛认为是操作底线,建议按此执行:
- 修改SSH默认端口,比如改用
2222或52222这类非主流端口,能过滤掉绝大多数自动化扫描流量。 - 使用密钥登录并禁止密码登录,这是对抗暴力破解的可靠防线,在
/etc/ssh/sshd_config中设置PasswordAuthentication no。 - 配置
fail2ban工具,自动封禁短时间内多次尝试登录失败的IP地址。 - 若使用frp穿透,可在云服务器的安全组策略里,将入方向规则限制为仅允许你自己的IP段访问。
常见疑问速答
kali虚拟机端口映射成功后,外网依然访问不了?
优先排查两层关卡:第一层,检查Kali虚拟机的防火墙和SSH监听地址;第二层,检查路由器或云服务器的端口转发规则是否生效,若是内网穿透,确认frp客户端日志里是否出现proxy successfully created之类的成功字样。
用NAT映射端口和桥接模式访问,哪个更适合我的渗透测试场景?
两者访问效果殊途同归,但躲藏逻辑迥异,NAT模式相当于让Kali躲在宿主机的背后,适合需要隐藏自身、且仅开放少数服务给外部的场景;桥接模式则让Kali直接暴露在局域网中,方便别人直接访问你的各种服务,适合需要频繁调试网络协议或想完全模拟真实主机行为的场景。
Kali映射端口时的系统风险如何规避?
规避风险的核心在于控制暴露面,即你暴露出的服务越多、端口越普及,被攻击的概率就越大,因此在配置映射时,仅暴露必要的服务端口,其余一律关闭;同时保持Kali系统及工具的更新,并在宿主机层面设置防火墙规则,允许访问来源IP的粒度尽可能细致。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/627988.html





