自定義自架 Tailscale DERP 的服務埠

前言

我們在之前的文章中,曾經介紹過 Tailscale 建立私有的中繼伺服器 – DERP,而後來也有介紹過 自定義自架 Tailscale Derp 伺服器的 SSL 憑證,而今天再補上一個自定義服務埠。

寫這篇文章的契機是:在我的有些機器上,某些相同的 Port 早就被占掉了,因此我需要將服務改到其他 Port,並且加註在 Tailscale 的 ACL 文件上。

DERP 服務配置

你可以透過以下參數來停用 HTTP、更改 HTTPS 及 STUN 的服務埠。

  • 使用 --http-port 設定為 -1 可以停用 HTTP。

  • 透過 -a 參數變更 HTTPS 監聽埠,如 -a 8080

  • 透過 -stun-port 變更 STUN 的服務埠,如 -stun-port 8443

[Unit]
Description=Tailscale DERP Server
After=multi-user.target

[Service]
User=root
Type=simple
ExecStart=/root/go/bin/derper --http-port -1 -a :8080 -stun-port 8443 --hostname derp.example.com
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

接著讓系統重新載入設定檔。

sudo systemctl daemon-reload

重啟 DERP 服務。

sudo systemctl restart derpsvc

ACL 文件配置

接著必須要前往 Tailscale 網站的 Access controls 頁更新你的配置。透過補上 "CanPort80": false 來禁用 HTTP,透過 DERPPortSTUNPort 來定義該機器 HTTPS 及 STUN 的服務埠。

{
    "derpMap": {
        "Regions": {
            "900": {
                "RegionID":   900,
                "RegionCode": "tpe",
                "RegionName": "Taipei",
                "Nodes": [
                    {
                        "Name":      "1",
                        "RegionID":  900,
                        "HostName":  "derp.example.com",
                        "IPv4":      "127.0.0.1",
                        "IPv6":      "::1",
                        "CanPort80": false,
                        "DERPPort":  8080,
                        "STUNPort":  8443,
                    }
                ]
            }
        }
    }
}

接著保存後就完成囉!