获取本机域名
- 运维技术
- 2026-08-27
- 2
别被名字唬住
获取本机域名,本质上是查询操作系统分配给这台设备的唯一标识符,以及它在当前网络中的“门牌号”。 说白了,你需要的答案就藏在几条命令里,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 设置一个更长的“展示名称”,这个不会影响内核级主机名,但部分服务(如邮件系统)读取的是短名。