自建derper指南

1 天前
1

自建derper指南

之前自建的derper服務器快要過期了,而自建的derper服務器又在我的整個網絡中扮演一個至關重要的角色。爲了防止下次自建derper又要像今天一樣四處找資料,於是寫下這一篇。

以下内容基於當時的官方教程,本人的標準不高,能跑起來就行。

開放服務器端口

derper服務器需要開放如下端口

服務器端口
HTTP80
HTTPS443
STUN3478

同時需要開放ICMP協議。

安裝Golang

由於使用apt包管理器安裝的golang版本有可能不夠新,所以需要通過二進制文件安裝,可以根據當時最新的版本選擇。

wget https://go.dev/dl/go1.25.1.linux-amd64.tar.gz 

sudo tar -C /usr/local -xzf go1.25.1.linux-amd64.tar.gz

rm go1.25.1.linux-amd64.tar.gz

安裝后需要把go的bin 目錄加入path。

如果使用的是Bash shell,編輯 ~/.bashrc~/.profile。如果使用的是 Zsh,就編輯 ~/.zshrc

接下來以bash爲例

nano ~/.bashrc

在文件最後加入

export PATH=$PATH:/usr/local/go/bin

最後儲存檔案 (在 nano 中是 Ctrl+X,然後按 Y,再按 Enter)。

最後刷新一下shell,

source ~/.bashrc

就可以查看Go的版本。

go version

設置Go的Proxy(大陸外的服務器可跳過)

go env -w GO111MODULE=on

go env -w GOPROXY=https://goproxy.cn,direct

安裝並運行derper服務器

首先為服務器設置一個域名,然後安裝derper。

go install tailscale.com/cmd/derper@latest

然後嘗試一下能不能運行

sudo /root/go/bin/derper --hostname=your.domain.com

訪問對應的域名,看到這個頁面就證明成功了。

增加對用戶的識別

在服務器上安裝tailscale,運行tailscaled服務。

然後運行這個命令

sudo /root/go/bin/derper --hostname=your.domain.com --verify-clients

再編輯一下ACLs,具體可以看tailscale官網

{
  // ... other parts of tailnet policy file
  "derpMap": {
    "OmitDefaultRegions": true,
    "Regions": {
      "900": {
        "RegionID": 900,
        "RegionCode": "myderp",
        "Nodes": [
          {
            "Name": "1",
            "RegionID": 900,
            "HostName": "example.com",
            // IPv4 and IPv6 are optional, but recommended, to reduce
            // potential DERP connectivity issues if DNS is unavailable
            // or having issues. Addresses must be publicly routable
            // and not in private IP ranges.
            "IPv4": "203.0.113.15",
            "IPv6": "2001:db8::1"
          }
        ]
      }
    }
  }
}

測試是否可用

在開啓tailscale的計算機上使用tailscale netcheck,如果獲得以下的結果,看到自己的derper服務器名稱,就大功告成了。

Report:
        * Time:
        * UDP: true
        * IPv4: yes, 
        * IPv6: yes, []:
        * MappingVariesByDestIP: false
        * PortMapping:
        * CaptivePortal: false
        * Nearest DERP: Hong Kong
        * DERP latency:
                - hkg: 58.2ms  (Hong Kong)
                - derper: 68.1ms  ()
                - iad: 199.8ms (Ashburn)
                - nue: 278ms   (Nuremberg)
                - hel: 283.2ms (Helsinki)

不知道能不能通過這幾個服務器的延遲判斷出我在那裏,應該是可以的。

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...