安裝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過程

  1. 安裝go 1.20以上
  2. 安裝derper程式
  3. 執行指令
  4. 讓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除非有資安考量, 否則不見得需要.

發表迴響