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
    2會員
    7內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    Justin Shaw's Salon 的其他內容
    講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
    當 Story 被確定下來之後 要如何切割 Story  讓他們可以在 Sprint 期間能 Done 過去經驗我們都知道 當 Story 太大的時候要拆小 但問題就來了 小要小到多小 有可能小到 Task 嗎?
    從一開始 Story 的出生 就會被放進 Product Backlog 經過漫長的等待 終於在某次的 Sprint 中被提到 Sprint Backlog 接著透過獅子🦁及猿猴🦍們的努力 將 Coffin 轉換成 Code Story 終於蛻變成了 PSPI
    最近上完了一門 LeSS in Action 的課程 雖然在 Scrum Team 少說也四五年了 這期間也考過了 CSM, PMP 認證 但這次的課程後對 Scrum 又有了新的認識 同時也回顧一下自己在執行了將近五年的 Scrum 開發經驗
    講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
    當 Story 被確定下來之後 要如何切割 Story  讓他們可以在 Sprint 期間能 Done 過去經驗我們都知道 當 Story 太大的時候要拆小 但問題就來了 小要小到多小 有可能小到 Task 嗎?
    從一開始 Story 的出生 就會被放進 Product Backlog 經過漫長的等待 終於在某次的 Sprint 中被提到 Sprint Backlog 接著透過獅子🦁及猿猴🦍們的努力 將 Coffin 轉換成 Code Story 終於蛻變成了 PSPI
    最近上完了一門 LeSS in Action 的課程 雖然在 Scrum Team 少說也四五年了 這期間也考過了 CSM, PMP 認證 但這次的課程後對 Scrum 又有了新的認識 同時也回顧一下自己在執行了將近五年的 Scrum 開發經驗
    你可能也想看
    Google News 追蹤
    Thumbnail
    徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
    Thumbnail
    隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
    DNS 和 SEO 緊密相關,擁有一個載入速度更快的網站將為您的訪客帶來卓越的用戶體驗,Google 也更喜歡快速載入的網域,閱讀本文了解更多關於 DNS 的小知識! DNS(網域名稱系統)是什麼? 全名為 Domain Name System,是一種分散的分層結構,DNS 將網域名稱(電腦、服
    Thumbnail
    ※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
    Thumbnail
    當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
    Thumbnail
    在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
    Thumbnail
    之前分享過【網路請求帶參數的方式】,開發者可以透過 URL 代入參數,來向伺服器請求特定的資源,我們當然也可以擷取 URL 的內容,來做為後續開發的判斷條件,這篇就來記錄一下,網址(URL) 和域名(Domain) 是什麼,以及如何取得網址的參數吧! 我們常說的網址連結 URL 完整名稱是 U
    Networking 網路類 Get the IP address of all interfaces(顯示網路資訊): networkctl status Display all IP addresses of the host(顯示主機名稱相關): hostname -I Enable/d
    Thumbnail
    本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
    你對主機、網站感興趣嗎?你瞭解什麽是Hostinger嗎?本篇文章將具體介紹Hostinger,爲你帶來最全面、最完整的Hostinger教學。從Hostinger背景瞭解,到優劣勢分析,到主機購買意見,再到網站架設,一站式學習Hostinger,點進來看看吧!
    1.開機前插入USB指定開機後,依據畫面指示安裝即可。 2.設定IP 按F2 Configure Management Network IPv4 Configuration Set Static IPv4 address and Network configuration 依據實際...
    Thumbnail
    徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
    Thumbnail
    隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
    DNS 和 SEO 緊密相關,擁有一個載入速度更快的網站將為您的訪客帶來卓越的用戶體驗,Google 也更喜歡快速載入的網域,閱讀本文了解更多關於 DNS 的小知識! DNS(網域名稱系統)是什麼? 全名為 Domain Name System,是一種分散的分層結構,DNS 將網域名稱(電腦、服
    Thumbnail
    ※ 什麼是路由? 當我們說「路由」時,可能是在談論路由器(實體設備),也可能是在談論路由(選擇路徑的過程),或者是在談論路徑(資料封包的傳輸路徑)。 路由器 (Router):這是一種實體設備,負責將資料封包 (Packet) 從一個網路傳送到另一個網路。它的工作方式類似於交通指揮,確保資料封包
    Thumbnail
    當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
    Thumbnail
    在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
    Thumbnail
    之前分享過【網路請求帶參數的方式】,開發者可以透過 URL 代入參數,來向伺服器請求特定的資源,我們當然也可以擷取 URL 的內容,來做為後續開發的判斷條件,這篇就來記錄一下,網址(URL) 和域名(Domain) 是什麼,以及如何取得網址的參數吧! 我們常說的網址連結 URL 完整名稱是 U
    Networking 網路類 Get the IP address of all interfaces(顯示網路資訊): networkctl status Display all IP addresses of the host(顯示主機名稱相關): hostname -I Enable/d
    Thumbnail
    本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
    你對主機、網站感興趣嗎?你瞭解什麽是Hostinger嗎?本篇文章將具體介紹Hostinger,爲你帶來最全面、最完整的Hostinger教學。從Hostinger背景瞭解,到優劣勢分析,到主機購買意見,再到網站架設,一站式學習Hostinger,點進來看看吧!
    1.開機前插入USB指定開機後,依據畫面指示安裝即可。 2.設定IP 按F2 Configure Management Network IPv4 Configuration Set Static IPv4 address and Network configuration 依據實際...