Hosts file 的使用以及管理

更新於 發佈於 閱讀時間約 5 分鐘

0x00 簡介

Hosts File
是一種可以取代 DNS 查詢的步驟
直接指定 domain 所指向的 IP 位址
甚至是不存在的 domain 也可以使用 hosts file 來給定 IP 位址

在 macOS 位在 (修改會需要 sudo 權限)

/etc/hosts

Windows 則是位在 (修改會需要 Administrator 權限)

C:\Windows\System32\drivers\etc\hosts

如果想測試的話可以在檔案內加上一行

0.0.0.0 stackoverflow.com

由於我們將 stackoverflow.com 指向了一個 0.0.0.0 的 IP
這樣就可以體驗一下沒有 stackoverflow 的開發囉!

(延伸閱讀:什麼是 DNS?)

0x01 使用情境

現在多數的網站開發都是採用前後端分離的方式開發
有時候我們只是想要改 back-end API 的一些邏輯
或是想要在 local debug 的時候
就可以利用 hosts file 將 API 指向 local
這樣就可以用 production 的 front-end
但使用 local 的 back-end 來整合

當然也有可能反過來
用 local 的 front-end 但使用 production 的 back-end

另一種使用情境則是
在 production 環境會有 load balancer 做分配
如果我們想指定就是測試某一台 server 時
就可以用 hosts file 的修改
對指定的 server 做測試

0x02 來點例子 🌰

建立了一個很簡單的網頁應用 -> Cave
顧名思義就是個山洞

raw-image

對著山洞喊話
會得到回音

輸入任何內容按下 yelling
就會用 query string 的方式呼叫 echo API

fetch(`//echo.zuplo.io/?echo=${echo.value}`)
.then((response) => response.json())
.then((data) => alert(data.query.echo))

echo.zuplo.io 是一個丟什麼過去就回什麼回來的 API 和 postman-echo.com 差不多的服務

當按下 yelling 的時候會彈跳一個 alert 的回音給你

raw-image

0x03 修改 feature

此時我們收到需求要將 ECHO 回來的字母全部變成大寫
由於不需要動到前端
作為 API 開發人員我們可以在 local 將程式碼寫好並且啟動

const http = require('http');
const port = 8080;
const requestListener = function (req, res) {
res.setHeader('Content-Type', 'application/json');
res.writeHead(200);
res.end(JSON.stringify({ msg: 'Hello, World!'}));
}

const server = http.createServer(requestListener);
server.listen(port);
console.log(`server start listening on ${port}`);

或者可以直接執行

curl -s https://gist.githubusercontent.com/neokn/32b2f49505111069c73ed8d41b5d09e4/raw/745e106a20699d087896c4e5460564d5a719f22a/server.js | node

接著在 hosts file 中添加這一行

127.0.0.1 echo.zuplo.io

此時重新 yelling 一下

raw-image

我們就得到了一個全大寫的回音了

如果使用 chrome 有遇到以下錯誤
這是因為 chrome 的安全機制所擋掉的

raw-image

需要用這個連結把開關打開
chrome://flags/#block-insecure-private-network-requests

raw-image

0xFF 管理工具

開發久了總是會有各種不同的 domain 要指向不同的 IP
但如果開發完之後忘了改回來
可是 local 的服務也關了
或是指向了某台 server 但那台 server 現在已經 offline

就會很容易以為出大事了
結果別的同事的電腦都好的
就自己的是壞掉的
所以有個好的工具幫我們管理是再好不過的事

目前推薦使用 SwitchHosts
除了採用下載安裝之外
也可以用熟悉的 command 安裝

macOS

brew install switchhosts

Windows

choco install switchhosts

由於使用上非常簡單
這邊就不寫教學囉~

留言
avatar-img
留言分享你的想法!
avatar-img
Justin Shaw's Salon
2會員
7內容數
Justin Shaw's Salon的其他內容
2023/08/06
簡介如何使用 NGROK 來協助開發與測試
Thumbnail
2023/08/06
簡介如何使用 NGROK 來協助開發與測試
Thumbnail
2023/07/31
由於遇到系統不支援歐洲語系的重音符號或變音符號因此有了這篇文章
Thumbnail
2023/07/31
由於遇到系統不支援歐洲語系的重音符號或變音符號因此有了這篇文章
Thumbnail
2023/07/22
講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
Thumbnail
2023/07/22
講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
最近在部署一些解決方案時,碰到了關於名稱解析上的一些問題,雖然有時候不難解決,但我發現如果清楚K8S有關於名稱解析的概念,會對除錯的時間與過程有很大的幫助。 透過本篇文章,除了幫自已留下問題查找的過程,同時也希望利用文章來整理自已對CoreDNS元件的一些觀念,同時也可以分享給大家參考。
Thumbnail
最近在部署一些解決方案時,碰到了關於名稱解析上的一些問題,雖然有時候不難解決,但我發現如果清楚K8S有關於名稱解析的概念,會對除錯的時間與過程有很大的幫助。 透過本篇文章,除了幫自已留下問題查找的過程,同時也希望利用文章來整理自已對CoreDNS元件的一些觀念,同時也可以分享給大家參考。
Thumbnail
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
Thumbnail
路徑處理 basename(string [.string]):回傳第一個參數路徑字串的檔案名稱,包含副檔案,如果有第二個參數字串,就會在檔案名稱刪除此字串,例如:刪除副檔名".php"。 dirname(string):回傳參數路徑字串中的路徑。 realpath(string):回傳參數路
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
因為想要使用FQDN的方式連接到Kubernetes cluster內部的應用服務,加上早已使用Linux Bind為測試環境的主要DNS
Thumbnail
簡介如何使用 NGROK 來協助開發與測試
Thumbnail
簡介如何使用 NGROK 來協助開發與測試
Thumbnail
Hosts File 是一種可以取代 DNS 查詢的步驟 直接指定 domain 所指向的 IP 位址 甚至是不存在的 domain 也可以使用 hosts file 來給定 IP 位址
Thumbnail
Hosts File 是一種可以取代 DNS 查詢的步驟 直接指定 domain 所指向的 IP 位址 甚至是不存在的 domain 也可以使用 hosts file 來給定 IP 位址
Thumbnail
身為一個非本科新手工程師,對於網路知識還是有許多疑惑之處,像是我在編輯器上寫了數十行的程式碼,那它們是怎麼透過終端機的指令被運行起來,讓我可以一邊開發一邊預覽結果呢?
Thumbnail
身為一個非本科新手工程師,對於網路知識還是有許多疑惑之處,像是我在編輯器上寫了數十行的程式碼,那它們是怎麼透過終端機的指令被運行起來,讓我可以一邊開發一邊預覽結果呢?
Thumbnail
一個網站可能除了首頁以外還會有其他的相關網站 例如/admin ,login/ ,home.php ,/root/等等 但是又不一定於是互聯網上就有一些words清單 像是 裡面就有存放各種可能的目錄名稱 例如給定一個網址在網址尾端增加/admin"有可能"就會連到後台 但是人手工一個一個去試去猜實
Thumbnail
一個網站可能除了首頁以外還會有其他的相關網站 例如/admin ,login/ ,home.php ,/root/等等 但是又不一定於是互聯網上就有一些words清單 像是 裡面就有存放各種可能的目錄名稱 例如給定一個網址在網址尾端增加/admin"有可能"就會連到後台 但是人手工一個一個去試去猜實
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News