安裝derp(笨蛋伺服器),讓 tailscale 網路更安全順暢
前一篇文章 Tailscale+Headscale 自架VPN全紀錄 讓 tailscale node 能夠透過 headscale 管控, 互相連線, 但是有些 tailscale node 隱藏在區域網路中, 無法互相p2p(peer to peer)直接連線, 這時候就需要 derp 伺服器提供轉接, derp 伺服器預設有很多, 若需要效率更好的,更無資安疑慮的, 可以自架.
我想也因為 derp 只做資料轉接, 不會偷看內容, 因此才會叫這個名字 DERP(笨蛋) XD.
derp 伺服器有很多, 可以參考tailscale官網 .
此外若derp轉接延遲時間太長, 就需要自架 , 可參考 https://tailscale.com/kb/1118/custom-derp-servers/
本文提供CentOS 7 安裝derp過程
- 安裝go 1.20以上
- 安裝derper程式
- 執行指令
- 讓headscale納入derper伺服器
- 安裝 go 1.20
wget https://golang.google.cn/dl/go1.20.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
source /etc/profile
#安裝完畢, 執行
/usr/local/go/bin/go version
- 安裝 derper
go install tailscale.com/cmd/derper@main
#安裝完畢, 應該會在
/usr/local/gopath/bin/derper
- 啟動derp
先搞定letscrypt證書, 因為我選擇derp手動設定, 所以文件要對應好.
ln -s /etc/letsencrypt/live/derp.test.com/cert.pem /etc/letsencrypt/live/derp.test.com/derp.test.com.crt
ln -s /etc/letsencrypt/live/derp.test.com/privkey.pem /etc/letsencrypt/live/derp.test.com/derp.test.com.key
執行指令
#若要防止別人使用, 需先把derp server主機也加入tailscale 端點, 才可使用 --verify-clients 這個參數
/usr/local/gopath/bin/derper --hostname=derp.test.com --verify-clients -a=:8445 -http-port=-1 -certdir=/etc/letsencrypt/live/derp.test.com -certmode=manual -stun
#這樣就可以輸入 https://derp.test.com:8445 測試是否正常
- 讓headscale納入derper伺服器
修改headscale設定, 打開headscale yaml 設定檔案, 找到 derp , 將https:/derp.test.com:8445 加上去, 並且新增derp.yaml檔案, 重開headscale就可以了
新增 derp.yaml
重開 headscale 就可以,進行測試了
# 隨便找一個tailscale端點
tailscale netcheck
# 然後 tailscale ping <另一個端點的ip (100.64....)>
tailscale ping 100.64.0.2
在台灣, 我自己覺得架設derp除非有資安考量, 否則不見得需要.