本機 hosts 與主機名(Linux、Windows、macOS)
- UtilshostshostnameLinuxWindowsmacOS網路作者:VincentCorgi約 1 分鐘閱讀
功能
說明 Linux、Windows、macOS 上 hosts 檔的位置、IP/主機名/別名 格式、如何編輯,以及查詢與設定 hostname 的指令。
情境
- 本機開發要把網域指到
127.0.0.1、或內網用固定 IP 對應主機名時,改hosts最直覺。 - 裝機後要確認/變更電腦在區網顯示的名稱;搭配 網路與防火牆 一起排查連不上服務的問題。
本機靜態名稱對照(hosts)與電腦主機名稱在各平台的檔案位置、編輯方式與常用指令。格式皆為:IP、主機名/域名、別名(可多個);以空白或 Tab 分隔;# 開頭為註解。
Linux
hosts 檔(/etc/hosts)
Code
cat /etc/hosts
sudo vi /etc/hosts
# 格式:IP 域名或主機名 別名
# 127.0.0.1 localhost
# <ip> <hostname> [<alias> ...]
變更後若解析仍舊,可視環境清除本機 DNS 快取(例如使用 systemd-resolved 時):
Code
resolvectl flush-caches
主機名(hostname)
Code
hostname
hostnamectl
sudo hostname <hostname>
sudo hostnamectl set-hostname <hostname>
選讀:搭配 ufw 限制來源 IP
僅允許特定 IP 連入某埠等設定,見 網路與防火牆(Linux、Windows、macOS)。
Code
sudo ufw allow from <allowed_ip> to any port <port> proto tcp
sudo ufw allow from <subnet> to any port <port> proto tcp
Windows
hosts 檔
路徑:C:\Windows\System32\drivers\etc\hosts(需系統管理員權限編輯)。
以系統管理員身分開啟「記事本」後開啟該檔,或使用已提升權限的終端機:
Code
notepad C:\Windows\System32\drivers\etc\hosts
格式與 Linux 相同(每行一筆:IP hostname alias)。儲存後可刷新本機 DNS 快取:
Code
ipconfig /flushdns
電腦名稱
Code
hostname
$env:COMPUTERNAME
重新命名電腦(通常需重新開機後生效):
Code
Rename-Computer -NewName "<new_name>" -Restart
macOS
hosts 檔(/etc/hosts)
Code
cat /etc/hosts
sudo vi /etc/hosts
# 格式與 Linux 相同
變更後可重載 mDNS(版本不同指令可能略有差異,以下為常見寫法):
Code
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
主機名稱(HostName / 本機主機名 / 電腦名稱)
Code
hostname
scutil --get HostName
scutil --get LocalHostName
scutil --get ComputerName
設定(依需求擇一或併用;部分需登出/重開機後才完整生效):
Code
sudo scutil --set HostName <hostname>
sudo scutil --set LocalHostName <local_hostname>
sudo scutil --set ComputerName "<顯示名稱>"
驗證(各平台共通思路)
Code
ping <hostname或別名>
有 getent 的 Linux 可再查:
Code
getent hosts <name>
以 HTTPS 服務測試(將埠與主機名換成你的環境):
Code
curl -I https://<hostname>:<port>
Windows 上若已安裝 curl(Windows 10 起內建),用法相同;亦可搭配 Test-NetConnection 測連線埠。