今天跟DK開會時,他利用些片段時間分享了他的工作環境設定,主要是關於他怎麼透過設定他的環境來同時可以連接dev, stage, production的環境。
會有這個分享主要也是因為我們在切換環境時,相對較笨拙點,都是透過連接不同的vpn server來切換到不同的環境下,但同時也只能在同時間點,只能連接到某個環境。
那就來進入主題了,他分享的方式,主要是透過在本機端建立socks5 proxy server, 將對於特定目標位址的流量,proxy到遠端預先設定好的jump server,再到對應的最終目標位址。
Step 1. 建立遠端的jump server
只要遠端的server有開啟ssh server的,就已經可以當成jump server了,而我們的stag jump server 就是這樣設定的。
Step 2. 設定 ~/.ssh/config (optional)
為了更容易的連接jump server,而不用每次都打一大串的ssh 指令,我們可以把連接jump server的相關設定寫到 ~/.ssh/config
下,範例如下:
Host staging_jumper
HostName our-jump-server.com
IdentityFile ~/.ssh/jump-server.key
User my-username
Step 3. 在本機端啟動socks5 server
由於剛剛在上一步有設定好連接jump server時,需要的ssh user 與 key,所以這邊可以很簡單的用下面的ssh指令啟動socks5 server
ssh -D 1081 -C -N -f staging_jumper
-D 1080
代表要將連往本機端 port 1081
的流量轉送到staging_jumper
上。-f
代表要在背景執行-C
代表要壓縮資料-N
代表不執行任何遠端指令,通常做port forwarding 都會代入這flag
如果要關閉在背景的socks5 server,則可以用ps -aux
找出剛啟用的socks5 server pid,接著再使用kill
指令去停掉正在運行的sock5 server process。
Step 4. 檢查是否有socks5 server是否有運作正常
curl --socks5 localhost:1081 http://your-staging-service.com
可以簡單透過curl
指令,來發起一個http的request到我們剛啟用的socks5 server port上。 如果成功的話,理論上會看到我們預期的html 網頁了。
Step 5. 設定SwitchyOmega
這是一個browser extension,主要是可以讓我們連接不同的網頁時,可以使用預先設定好的條件或方式來連接。
舉例來說,我們可以設定當接http://192.168.10.2:8080
這個位址時,就自動透過我們預先設定好的socks5 server 與jump server 連接,此外,它還可以透過wildcard的方式來導流特定網段或特定domain 的網頁。
如以下範例
當我們啟用本機端的socks5 server以後,就可以到下面的SwitchyOmega頁面去設定代理伺服器。
之後,只需要再設定auto switch來決定哪些目標網頁要使用哪些代理伺服器就完成了