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

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

    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
    Thumbnail
    avatar
    黑貓老師
    2024-06-29
    A Novelist Who Sincerely Hosts Readers in His Own KitchenJonathan Franzen in a Remote Meeting at the Taipei International Book Exhibition 2022.
    Thumbnail
    avatar
    新經典文化 ThinKingDom
    2023-05-30
    【臺灣旅遊・美食】Royal Host ・樂雅樂【Royal Host ・樂雅樂】 主打日式創意西餐,餐點選擇很多,很適合家庭、朋友聚餐。 只是久違的室內用餐,點的焗烤通心麵竟只有外層的起司味,裡面完全沒味道…自行加了超多的鹽和胡椒才總算有點味道…僅山型麵包和焦糖布蕾有發揮正常水準。 #樂雅樂
    Thumbnail
    avatar
    偶希都理
    2022-07-20
    Helium Hotspot 作弊機/黑名單/檢舉這邊教你如何檢舉,讓官方幫你確定他是不是作弊 檢舉網址: Issues · helium/denylist (github.com)
    Thumbnail
    avatar
    Nocry
    2022-03-23
    Star Hostel 信星青年旅館|鄰近台北車站的質感青年旅宿台北的後火車站商圈具有一種舊時代凝結的獨特魅力,在這其中的Star Hostel信星旅館,位於華陰街的舊大樓內,卻是格局相當特別的青年旅宿。最受注目的就是屋中有屋,有個旅客專屬的挑高空間交誼廳。
    Thumbnail
    avatar
    Celine 寫在這裡
    2021-12-14
    Hostel Tomato 番茄旅店|宜蘭礁溪質感溫泉輕旅宿從宜蘭礁溪火車站一出來就能看到的Hostel Tomato 番茄旅店,地理位置交通便利同時也是一間重視生活美學的青年旅店。 前身本就是溫泉旅社,後由設計出身的二代接手營運,大改傳統的舊格局,規劃整體的新品牌形象,也就是可愛活潑的番茄Logo啦~
    Thumbnail
    avatar
    Celine 寫在這裡
    2021-12-10
    Dot NET Core Host - 運作概述圖解 Net Core 為一跨平台的應用開發,其此框架上可以加上許多自製服務,稱之為容器也不為過。 如果要細說明此框架,完整明瞭,可以寫出一整本厚厚的書。但如果要先瞭解框架主要的運作過程,尤其是搭配MVC控制器,是可以將此用圖解的方式將其軌跡整理出來,將其作出關係圖,當作踏入此框架的一個指引,近而未來可
    Thumbnail
    avatar
    Czxdas
    2021-12-01
    [關於] Twitch Host & 看法由於有人問我Host等之類的Q&A,這篇文想來說說關於我會Host的看法。 【Host】 Host 是轉播的意思,如果在自己的Twitch聊天室打上“/host ID”即可在自己的實況頻道轉播他人的實況內容,這時候在頻道的人可以自己選擇是否前往該頻道與之互動。
    avatar
    玩家哇頭沒頭
    2021-08-28
    HOTStuff 王心凌超愛的英國手提包女王 貝殼包超有女人味  有英國「手提包女王」美譽的LULU GUINNESS,一直以來用各種可愛活潑的風格吸粉,臺灣頭號粉絲就是女星王心凌,常常背上LULU GUINNESS的設計裝嫩,俏皮感十足。細數曾經推出的包款,包括可愛的娃娃臉孔、貓咪後背包、草編人頭、紅唇包等,都是近年經典。 其中,「紅唇」與「口紅」更是標志性
    avatar
    貝殼包穿搭
    2021-08-19
    [ 實戰 CI / CD Pipeline ] Jenkins + Ansible + Windows Host前言 隨著越來越多公司導入 DevOps 、Agile、Scrum 開發模式,作為基礎設施的 CI / CD Pipeline 也越來越被需要。但是導入的過程中, 總會遇到一些問題: CI / CD Pipeline 該怎麼建 !? Pipeline 工具該怎麼選擇 !? 老天 : 去看書 ! …
    Thumbnail
    avatar
    Wis Chang
    2019-11-27