banner
ZDawn

ZDawn

Do one thing at a time and do well.
tg_channel

自己で構築したtailscale derp中継サーバー

記事転載#

浅探 Tailscale DERP 中継サービス | Kiprey's Blog
この記事では、derp の設定手順を記録しています。基本的に、すべての内容は上記の記事からの引用です。必要な方は上記の記事を直接参照してください。非常に良く書かれており、手順の解説が非常に適切です。素晴らしいです!

設定要件#

  • グローバル IP アドレス
  • TCP/UDP のインバウンドを許可する

DERP サーバーの設定#

golang のインストール#

# 最新バージョンのgolangが必要です
$ wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz
$ sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin

# インストールバージョンの確認
$ go version
# 国内のVPSのダウンロードにプロキシを設定するための設定(国外のVPSの場合は不要)
$ go env -w GOPROXY=https://goproxy.cn,direct

# tailscale-dreperのインストール
$ go install tailscale.com/cmd/derper@latest

Derp サービスの設定と systemd での管理#

# 環境変数の設定
$ DERP_HOST="dawnz-derp" #この名前は任意ですが、後で自己署名証明書とderpMapで使用する必要があります
$ DERP_PORT=8888
$ STUN_PORT=8889

# 自己署名証明書の作成
$ mkdir ~/.certdir && cd ~/.certdir
$ openssl genpkey -algorithm RSA -out ${DERP_HOST}.key
$ openssl req -new -key ${DERP_HOST}.key -out ${DERP_HOST}.csr
$ openssl x509 -req \
		-days 36500 \
		-in ${DERP_HOST}.csr \
		-signkey ${DERP_HOST}.key \
		-out ${DERP_HOST}.crt \
		-extfile <(printf "subjectAltName=DNS:${DERP_HOST}")

# systemdサービスでdrepサービスを起動
## 1. drepが共有されている場合、drepサービスを直接起動するだけで構いませんが、他の人があなたのIPとポートを知っている場合、他の人もあなたの中継サーバーを使用してトラフィックを中継することができます。
## 2. drepをプライベートサーバーとして構成する場合、中継サーバーもノードとして機能する必要があり、tailscaledのインストールとログイン認証を行い、drepサービスを起動する際には --verify-clients を使用します。

# tailscaledのインストールとログイン認証
$ curl -fsSL https://tailscale.com/install.sh | sh
$ sudo tailscale up

# tailscale-derp.serviceの作成
$ sudo systemctl edit -f tailscale-derp.service
# 以下の内容を貼り付ける
-----------
[Unit]
Description=Tailscale derp service
After=network.target

[Service]
ExecStart=/home/${USER}/go/bin/derper \
    -c /home/${USER}/.derper.key \
    -a :${DERP_PORT} -http-port -1 \
    -stun-port ${STUN_PORT} \
    -hostname ${DERP_HOST} \
    --certmode manual \
    -certdir /home/${USER}/.certdir \
    --verify-clients
Restart=always
User=${USER}

[Install]
WantedBy=multi-user.target"
------------

# サービスの起動
$ sudo systemctl start tailscale-derp.service
# ステータスの確認
$ sudo systemctl status tailscale-derp.service
# 起動時に自動起動するように設定
$ sudo systemctl enable tailscale-derp.service

iptables の設定とセキュリティグループの設定#

# iptablesで8888/tcp、8889/udpのインバウンドを許可
$ sudo iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
$ sudo iptables -A INPUT -p udp --dport 8888 -j ACCEPT

# 一部のクラウドサービスプロバイダではセキュリティグループの設定が必要です。ウェブコンソールでセキュリティグループにも同じ設定を行ってください。

ACL の設定#

Tailscaleにログインし、Access Controlsを選択します。

  1. 個別の中継サーバーを追加する
    注意:HostName の設定は、上記の DERP_HOST の設定と同じである必要があります
...  
{  
	...  
	"acls": [...],  
	...  
	"ssh": [...],  
  ...  
	"derpMap": {  
		"Regions": {  
			"900": {  
				"RegionID":   900,  
				"RegionCode": "Dawnz1",  
				"Nodes": [  
					{  
						"Name":             "dawnz-derp1",  
						"RegionID":         900,  
						"HostName":         "dawnz-derp",  
						"IPv4":             "xx.xx.xx.xx",  
						"DERPPort":         8888,  
						"STUNPort":         8889,  
						"InsecureForTests": true,  
					},  
				],  
			},  
		},  
	},  
  ...  
}
  1. 複数の中継サーバーを追加する
...  
{  
	...  
	"acls": [...],  
	...  
	"ssh": [...],  
  ...  
	"derpMap": {  
		"OmitDefaultRegions": false,
		"Regions": {  
			"900": {  
				"RegionID":   900,  
				"RegionCode": "Dawnz1",  
				"Nodes": [  
					{  
						"Name":             "dawnz-derp1",  
						"RegionID":         900,  
						"HostName":         "dawnz-derp",  
						"IPv4":             "xx.xx.xx.xx",  
						"DERPPort":         8888,  
						"STUNPort":         8889,  
						"InsecureForTests": true,  
					},  
				],  
			},  
			"901": {
				"RegionID":   901,
				"RegionCode": "Dawnz2",
				"Nodes": [
					{
						"Name":             "Dawnz-derp2",
						"RegionID":         901,
						"HostName":         "danwz-derp2",
						"IPv4":             "xx.xx.xx.xx",
						"DERPPort":         8888,
						"STUNPort":         8889,
						"InsecureForTests": true,
					},
				],
			},
		},  
	},  
  ...  
}

中継サーバーの状態を確認する#

  1. 任意のノードで$ tailscale netcheckコマンドを使用して derp のオンライン状態を確認できます。遅延が表示されれば、設定が完了しています。
  2. 共有サーバーの遅延が非常に大きいため、共有サーバーを使用したくない場合は、"OmitDefaultRegions": true,を設定し、前述の複数の derp の設定を参照してください。

お楽しみください!#

tailscale のネットワーキング機能は本当に素晴らしいです。すべての面で非常に完全で堅牢です。無料プランでも個人使用に十分です。とても素晴らしいです!
唯一の問題は、私がテレコムの 5G の携帯電話を使用して自宅の 600Mbps のユニコムのブロードバンドに穴を開けると、速度制限が 50Mbps になることです。おそらく UDP が制限されているのかもしれませんが、それでも十分に使用できます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。