hans

hans

Tailscaleは、ドメイン名やSSL証明書が必要ありません。DERPリレーサービスを自己構築できます。

以下は、Ubuntu でカスタム DERP サーバーを構築する方法です。ドメイン名や SSL 証明書は必要ありませんが、パブリック IP が必要です(ネットワークサーバーは AWS、Alibaba Cloud などのパブリック IP を提供します):

  1. apt update && apt install -y wget git openssl curl sudo vim systemctl cron
  2. 最新バージョンの go を確認する こちら
  3. wget https://golang.google.cn/dl/go1.21.3.linux-amd64.tar.gz を最新のバージョンに置き換える
  4. rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz システムのデフォルトの go を置き換える
  5. システム変数を変更する export PATH=$PATH:/usr/local/go/bin
  6. 中国にいる場合は、go のソースを追加する必要があります:
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    
  7. DERPER をインストールする go install tailscale.com/cmd/derper@main
  8. フォルダに移動する ~/go/pkg/mod/[tailscale]/cmd/derper、そしてファイルを編集する vim cert.go 関連する検証内容を削除する:
    if hi.ServerName != m.hostname {
       return nil, fmt.Errorf("cert mismatch with hostname: %q", hi.ServerName)
    }
    
  9. DERPER をコンパイルする: go build -o /etc/derp/derper
  10. 自己署名 SSL 証明書を生成する openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.test.com.key -out /etc/derp/derp.test.com.crt -subj "/CN=derp.test.com" -addext "subjectAltName=DNS:derp.test.com"
  11. システムサービスを作成する vim /etc/systemd/system/derp.service
    [Unit]
    
    Description=TS Derper
          
    After=network.target
          
    Wants=network.target
          
    [Service]
          
    User=root
          
    Restart=always
          
    ExecStart=/etc/derp/derper -hostname derp.test.com -a :12345 -http-port 33446 -certmode manual -certdir /etc/derp --verify-clients
          
    RestartSec=5
    
    StartLimitInterval=0
          
    [Install]
          
    WantedBy=multi-user.target
    
    12345 は DERP ノードのポート番号で、TCP プロトコルで公開する必要があります。お好みのポート番号を設定することもできます。ポート 3478 は UDP プロトコルで公開する必要があり、このポート番号は変更できません。stun サービスに必要です。
  12. systemctl enable derp
    systemctl start derp
    systemctl status derp
    
    上記のコマンドを実行すると、DERPER がアクティブな状態で表示されるはずです。その後、ブラウザで https://IP:PORT を開くと、次のように表示されます:
    DERP
    This is a Tailscale DERP server
    
  13. Tailscale Admin Console を開き、 Access Controls をクリックし、以下の内容をsshにコピーします:
    "derpMap": {
      "OmitDefaultRegions": true, // trueの場合、TailscaleのデフォルトDERPノードを使用しない
      "Regions": {
       "900": {  // 900以上の任意の数字
     		 "RegionID":   900, // 同上
      		 "RegionCode": "myDerp",
     		 "Nodes": [
     			 {
     				 "Name":             "1", 
     				 "RegionID":         900, // 同上
     				 "HostName":         "xxx.xxx.xxx.xxx", // あなたのIP
     				 "DERPPort":         12345, // あなたのポート番号
     				 "InsecureForTests": true, // 証明書の検証をスキップするためにtrueにする必要があります
     			 },
     		 ],
     	 },
      },
     },
    
  14. DERP ノードが動作しているかどうかを確認するために、他のデバイスで tailscale netcheck を実行します。
    Report:
     * UDP: false
     * IPv4: (no addr found)
     * IPv6: no, but OS has support
     * MappingVariesByDestIP: 
     * HairPinning: 
     * PortMapping: 
     * CaptivePortal: false
     * Nearest DERP: Amsterdam
     * DERP latency:
             - ams: 12ms    (Amsterdam)
             - lhr: 13ms    (London)
             - hans: 13.1ms  ()
    
    家のノードの速度はデフォルトよりも遅いです。
  15. DERPER サービスは常に停止する可能性があるため、定期的に再起動する必要があります。 crontabが最適な選択肢です。
  16. systemctl start cron
    systemctl enable cron
    systemctl status cron
    
  17. crontab -e を実行し、 0 */12 * * * systemctl start derp を貼り付けます。DERPER サービスは 12 時間ごとに再起動されます。その後、 ESC を押し、 :wq を入力して終了します。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。