ネットワークを勉強するなら マスタリングTCP/IP がおすすめです
#show run
HeadscaleをAzureで動かして見た
TailscaleのOSSであるHeadscaleをAzureで動かして見ました.
少し構築してから時間が経っており,漏れあるかも…
https://github.com/juanfont/headscale
Azure側の準備
こんな感じの最小限のサーバを準備.
あとは,パブリックIPの準備とセキュリティグループではポート制限(TCP80/443)をしっかりと.
Headscaleのインストール
パッケージの取得 https://github.com/juanfont/headscale
バージョンなどは適時変更してください.
wget --output-document=/usr/local/bin/headscale \
https://github.com/juanfont/headscale/releases/download/v0.22.3/headscale_0.22.3_linux_amd64
実行権限の付与
chmod +x /usr/local/bin/headscale
構成ディレクトリ作成
mkdir -p /etc/headscale
データと証明書を保存するディレクトリの作成
mkdir -p /var/lib/headscale
空のSQLiteデータベース ファイルを作成
touch /var/lib/headscale/db.sqlite
構成ファイルのテンプレート取得
wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /etc/headscale/config.yaml
SystemDサービス構成ファイルを作成
/etc/systemd/system/headscale.service
[Unit]
Description=headscale controller
After=syslog.target
After=network.target
[Service]
Type=simple
User=headscale
Group=headscale
ExecStart=/usr/local/bin/headscale serve
Restart=always
RestartSec=5
# Optional security enhancements
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/headscale /var/run/headscale
AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=headscale
[Install]
WantedBy=multi-user.target
headscale起動ユーザの作成
useradd headscale -d /home/headscale -m
所有者変更
chown -R headscale:headscale /var/lib/headscale
構成ファイル変更
unix_socket: /var/run/headscale/headscale.sock
SystemD をリロードして、新しい構成ファイルをロード
systemctl daemon-reload
自動起動
systemctl enable --now headscale
構成ファイル
/etc/headscale/config.yaml
以下を修正
server_url: https://利用するドメイン名
private_key_path: ./private.key
#- fd7a:115c:a1e0::/48
acme_email: "メールアドレス"
tls_letsencrypt_hostname: "利用するドメイン名"
acl_policy_path: "acl.yaml" # aclを記載したファイル
Microsoft365連携は以下で動いています.
oidc:
only_start_if_oidc_is_available: true
issuer: "https://login.microsoftonline.com/*******************e/v2.0"
client_id: "*******************"
client_secret: "*******************"
scope: ["openid"]
allowed_domains:
- 利用するドメイン名
strip_email_domain: true
ACL
ACLは以下を参考に
https://github.com/juanfont/headscale/blob/main/docs/acls.md
端末の登録
以下を表示して,記載内容で登録.クライアントアプリは本家Tailscaleのものをインストールしてください.
- https://ドメイン名/windows
- https://ドメイン名/apple
macやiphoneは構成プロファイルのインストールが必要です. 接続先を独自のものに変更する形ですね.
仕組み的に,クライアント側で登録用コマンドを発行したものをサーバコンソールでコマンドを実行することで登録が完了になるため,ページの手順が公開されていても勝手に登録されることはありません.
OIDCを登録すると,ログインだけで自動登録されてました.便利.
とはいえ,私はどうしてもパブリックへ公開しているのでいろいろなサイトを参考に日本国内のIPからのみ利用可能なように制限をかけています.
この制限をかけるとLet's Encryptの証明書更新が失敗します.その時点でメールが来るので,一時的にファイアウォールを停止して再起動で更新しています.
使い方など以下に詳細が記載されています.
show tech#
ネットワークをAIさんと解説する