← 返回所有文章

本機 hosts 與主機名(Linux、Windows、macOS)

UtilshostshostnameLinuxWindowsmacOS網路作者:VincentCorgi約 1 分鐘閱讀

功能

說明 Linux、Windows、macOShosts 檔的位置、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 測連線埠。