别被名字唬住
获取本机域名,本质上是查询操作系统分配给这台设备的唯一标识符,以及它在当前网络中的“门牌号”。 说白了,你需要的答案就藏在几条命令里,Windows、Linux和macOS各有各的招,往下看直接抄作业。
很多朋友一听到“域名”两个字,脑子里全是 baidu.com 这种互联网门牌,但咱们今天聊的“本机域名”,是另一码事,它可能是你电脑在局域网里的名字,也可能是你在浏览器里访问自己电脑服务时用的那个地址,搞混了,后面配置环境、调试接口时能卡你半天。
搞清楚你要的到底是哪个“本机域名”
在敲键盘之前,先花三十秒想清楚你的真实需求,因为“获取本机域名”这句话,在技术圈里至少对应着三种完全不同的东西,搞错了方向,拿到的信息自然不是你要的。
- 主机名(Hostname):这是设备在网络里的“小名”,
DESKTOP-ABC123,它是给人看的,方便你在路由器后台认出哪台设备是谁。 - 局域网IP:这是设备在当前Wi-Fi或网线网络里的临时地址,通常是
168.x.x或0.x.x,手机要访问你电脑上的网页,用的就是它。 - 映射后的公网域名:这是通过内网穿透工具或云服务器把本地服务暴露到公网后,别人访问你时用的那个以
.top、.vip结尾的地址。
行业共识认为,百分之八十的“获取本机域名”需求,实际上是在找局域网IP或者完整主机名,想明白这一点,你就能少走很多弯路。
核心场景:如何获取本机域名和IP地址
下面直接上干货,针对不同系统给你最稳的操作路径。
Windows系统:命令提示符两连击
Windows用户获取本机域名相关信息,最优先推荐用系统自带的命令提示符或PowerShell,不需要下载任何第三方工具,干净利落。
-
第一步:查看主机名
按下Win + R组合键,输入cmd并回车,在黑色窗口里输入hostname再回车,屏幕上跳出来的那串字母数字组合,就是你的主机名,也就是本机域名在系统层面的核心标识。 -
第二步:查看完整域名和IP
继续在窗口里输入ipconfig /all然后回车,你会看到一长串信息,重点看这几行:- 主机名:确认一下,跟刚才
hostname命令输出的结果一致。 - 主 DNS 后缀:这一行如果有内容,
local,那你的完整计算机名就是你的主机名.local。 - IPv4 地址:这就是你的局域网IP,如果同时连着Wi-Fi和网线,会有多个,注意看“无线局域网适配器”或“以太网适配器”下的那个。
- 主机名:确认一下,跟刚才
Linux和macOS:终端三兄弟
在Linux和macOS上,思路类似,但命令稍有区别,这里以Ubuntu为例,macOS终端同样适用大部分命令。
- 查看主机名:输入
hostname,回车,这是最直接的获取本机域名的命令,任何Linux发行版都支持。 - 查看完整域名:输入
hostname -f(f代表FQDN,即完全限定域名),如果系统没配置DNS后缀,通常会报错或者只显示主机名,这很正常。 - 查看局域网IP:推荐用
hostname -I(大写字母I),这个命令会列出所有内网IP,干净利落,不会像ifconfig那样输出一堆无关信息,如果你的系统提示命令不存在,可以用ip addr show或者传统一点的ifconfig。
进阶玩法:当“本机域名”变成“本地服务网址”
现在很多开发者用Docker或者本地环境做项目,比如在电脑上跑了一个网站,端口是 8080,这时候,你需要的可能不仅仅是主机名,而是一个能直接访问服务的地址,这就涉及到了 localhost 和

host.docker.internal 的区别。
手机调试场景:局域网IP怎么获取
场景描述:你在电脑上写了个前端页面,想用手机连着同一个Wi-Fi,通过浏览器打开看看效果。
这时候,你只需要在手机浏览器地址栏输入 http://你的局域网IP:端口号,获取这个局域网IP的方法很简单:
- 按住
Win + R,输入cmd,打开命令提示符。 - 输入
ipconfig,找到“无线局域网适配器 WLAN”下的“IPv4 地址”,通常是168.开头。 - 在手机上输入
http://192.168.x.x:8080即可。
注意:这里有个巨大的坑,Windows防火墙默认会拦截来自局域网的入站连接,如果你发现手机死活打不开,别怀疑IP获取错了,先检查防火墙设置,在“允许应用通过防火墙”里,找到你的开发工具(比如Node.js或Python),勾选“专用”网络权限。
Docker容器场景:host.docker.internal
场景描述:你在电脑上通过Docker跑了一个MySQL容器,然后想在容器里运行的PHP代码连接宿主机上的某个服务。
在容器内部,localhost 指向的是容器本身,而不是你的电脑,这时候要访问宿主机,就得用 host.docker.internal 这个特殊域名,在Docker for Windows和Docker for Mac中,这个域名是默认内置的,直接能用。
关键操作:获取宿主机IP地址更通用的办法,是在容器内执行 ip route show default | awk '{print $3}',这串命令输出的是网关IP,通常也就是宿主机的局域网IP。
那些让人头疼的“域名后缀”问题
很多人在获取本机域名后,会看到 .local 后缀,my-mac-book.local,这其实是Apple的Bonjour服务(零配置网络)自动生成的,在同一个Wi-Fi下,你的Mac和iPhone可以通过 my-mac-book.local 互相访问,不需要记IP,但Windows上偶尔也会冒出这个后缀,一般是某些软件(如Adobe Creative Cloud)为了局域网共享装的驱动。
获取本机域名的正确姿势总结
| 系统 | 核心命令 | |
|---|---|---|
| Windows | hostname |
主机名 |
| Windows | ipconfig /all |
完整域名、局域网IP、DNS后缀 |
| Linux | hostname -I |
局域网IP地址 |
| Linux | hostname -f |
完全限定域名(FQDN) |
| macOS | scutil --get LocalHostName |
本地主机名(.local后缀) |
| macOS | ifconfig en0 | grep inet |
局域网IP(en0是Wi-Fi网卡) |
解决报错:为什么命令执行失败?
不是每次敲命令都那么顺风顺水,这里有几个高频报错,帮你提前排雷。
- 提示
hostname不是内部或外部命令:多见于精简版Windows系统,解决办法是使用环境变量补齐,或者直接用PowerShell,输入$env:COMPUTERNAME也能拿到主机名。 - Linux下
hostname -I显示两个IP:说明你同时连着有线网卡和无线网卡,或者有虚拟网卡(如VMware、VirtualBox),优先使用168.开头且不带vEthernet字样的那个。 - 获取本机域名时,提示“找不到主机名”

:在macOS上比较常见,因为系统偏好设置里的“共享”名称和终端里的主机名是两码事,用
scutil --get ComputerName查看电脑的“友好名称”,用hostname查看内核级主机名,这俩不一样是正常的。
从“获取”到“使用”:把域名变成生产力
拿到IP和主机名之后,真正的用途才算开始,比如你要访问局域网里的一台NAS,直接在资源管理器地址栏输入 \192.168.1.100 就行,而公网域名,通常需要借助frp或ngrok这类内网穿透工具。
实操提醒:在配置任何Web服务(如Nginx、Apache)时,如果监听地址是 0.0.1,那么只能本机访问,想通过局域网IP访问,必须把监听地址改成 0.0.0,这一步不做好,你前面获取的本机域名和IP全白搭。
在Windows上查看具体监听端口对应的应用,可以用 netstat -ano | findstr 端口号,找到对应的PID后,在任务管理器里就能看到是哪个程序在占用,这是排查“为什么手机访问不了”的终极武器。
获取本机域名,关键在于区分“主机名”和“局域网IP”这两个概念,前者是身份标识,后者是通信地址,在日常开发调试中,绝大多数场景下你需要的只是后者,把这些命令记牢,遇到问题多试两次,基本能搞定九成以上的网络访问困惑。
获取本机IP地址的几种方法:实战对比
既然聊到获取本机域名,就绕不开获取IP地址,因为在实际操作中,这俩经常是绑定的,这里把主流方法拉出来做个对比,方便你按需选择。
- 图形界面法(Windows设置 → 网络和Internet → 查看属性):适合不熟悉命令行的新手,信息直观,但操作步骤多,且偶尔会因为系统版本不同导致路径变化。
- 命令行法(
ipconfig/ifconfig):最推荐,速度快,信息全,支持批处理脚本,唯一缺点是输出信息较多,新手需要学会筛选。 - 在线查询法(访问
ip.sb等网站):获取的是公网出口IP,不是局域网IP,如果你想看自己电脑在互联网上的“大IP”,用这个,但要注意,这跟本机域名是两个维度的东西。
| 方法类型 | 核心工具 | 获取对象 | 适用场景 |
|---|---|---|---|
| 命令行 | ipconfig |
局域网IP、网关、DNS | 日常开发、网络排查 |
| 图形界面 | 系统设置 | 局域网IP、物理地址(MAC) | 不熟悉命令行的初级用户 |
| 在线服务 | 浏览器访问特定网站 | 公网出口IP | 需要了解外网访问地址时 |
| 开发工具 | Node.js 或 Python 代码 |
局域网IP(代码级) | 程序需要动态获取IP做上报时 |
不同操作系统的本地域名解析机制
知道怎么获取本机域名后,再往深走一步:系统是如何解析这些域名的?这决定了你访问 localhost 和访问 your-name.local 时的速度差异。
在Windows上,C:WindowsSystem32driversetchosts 文件是“本地域名”的终极裁判,你可以手动把某个域名指向 0.0.1,实现本机访问,在Linux和macOS上,对应文件是 /etc/hosts。
实操技巧:在Windows上开发时,如果你想让某个测试域名(myproject.test

)指向本机,只需要用管理员身份打开记事本,编辑hosts文件,加入一行 0.0.1 myproject.test,保存后,浏览器直接访问 http://myproject.test 就能打开你的本地站点,这一步比记IP和端口省心得多。
公网域名映射:从内网穿透到云服务器
如果你做的项目需要让异地的同事看一眼效果,那本机域名和局域网IP都不够用了,你需要一个公网地址,目前主流做法是:
- 使用内网穿透工具(如ngrok、frp):将本地
0.0.1:8080映射到一个公网域名,操作简便,一条命令即可,ngrok免费版会分配随机域名,不稳定;付费版支持自定义域名,frp则需要你自己有一台带公网IP的服务器,可控性更强,适合长期使用。 - 部署到云服务器(简米云、酷番云):直接把项目扔到服务器上,用Nginx反向代理绑定域名,这种方式获取的域名是真正意义上的公网域名,但需要购买服务器和备案(国内服务器必须备案)。
行业共识:对于轻量级演示,ngrok足够;对于生产环境,必须走云服务器,别想着在本地路由器上做端口映射暴露公网,家用宽带普遍没有公网IPv4,做了也是白做。
获取本机域名后,如何验证配置是否生效?
拿到主机名或IP后,不能光看不练,用下面这几招,确认它是真实可用的。
- 本机回环测试:在浏览器输入
http://127.0.0.1:端口号,能打开说明服务本机监听正常。 - 局域网设备测试:用手机浏览器访问
http://局域网IP:端口号,这一步能测出防火墙是否放行。 - 域名解析测试:在命令行输入
ping 你的主机名.local,如果能在局域网内解析出IP,说明DNS或NetBIOS解析正常,Windows下用nbtstat -a 对方IP可以反向查看对方的主机名。
常见误区:很多人用 ping 测试本机域名时,得到 0.0.1 的回应,就以为域名解析正常,这不对。ping localhost 走的hosts文件规则,而 ping 你的主机名 走的是NetBIOS或mDNS协议,两者解析路径完全不同,不能混为一谈。
Q&A:关于获取本机域名的三个高频疑问
Q1:为什么我用 hostname 命令获取本机域名后,在路由器后台却找不到这个名字?
因为Windows在路由器上注册的名字可能是“物理网卡的NetBIOS名称”,而你在终端里看到的可能是“完整的计算机名”,如果电脑名包含中文或特殊字符,路由器后台会显示成乱码或者被截断,最直接的办法是登录路由器后台,查看DHCP客户端列表,对比MAC地址来确定设备,而不是只看名字。
Q2:获取本机IP地址的几种方法里,哪种最快且不会因为Wi-Fi断连而变化?
最快的是命令行法,但任何局域网IP都会因为网络环境变化而变化(比如切换Wi-Fi、路由器重启),如果你需要一个固定的“本机域名”用于开发,建议在路由器后台给这台设备绑定一个静态DHCP租约,这样你获取本机域名后,无论怎么重连,IP地址都会保持稳定,具体路径通常是“路由器后台 → DHCP服务器 → 静态地址分配”,填入你的MAC地址和想要的IP。
Q3:在Linux服务器上,hostname 命令的输出被截断了,只显示部分字符,怎么解决?
这是主机名长度限制问题,Linux内核规定主机名最大长度为64字节,如果你的主机名设置过长(比如超过15个字符),某些旧版工具或网络协议(如NetBIOS)就会截断显示,解决办法是修改 /etc/hostname 文件,把名字改短,然后执行 hostnamectl set-hostname 新名字 并重启网络服务,对于使用systemd的系统,也可以用 hostnamectl --pretty 设置一个更长的“展示名称”,这个不会影响内核级主机名,但部分服务(如邮件系统)读取的是短名。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/731536.html

