1. はじめに
ローカルネットワークでの小規模サーバ運用で冗長化を考えた際、mDNSでの名前解決を利用するとバックアップへの切り替えがスムーズにできるようになります。以前の記事に盛り込んだ内容ですが、単独の記事として切り出すことにします。
本記事では以下のOSで動作確認を行っています。
以前の記事はこちらです。
2. 運用のイメージ
今回はサーバに以下の名前を付けて運用する手順を説明します。.local 以外の部分は環境に合わせて自由に改変してください。
| 項目 | 設定値 |
|---|---|
| ホスト名 | untied-srv.local |
| サービス名 | Untied Server |
Gitサーバの場合は以下のようなURLで接続するイメージです。
http://untied-srv.local/git/my-first-git
ssh://user@untied-srv.local/srv/git/my-first-git
user@untied-srv.local:/srv/git/my-first-git
3. mDNSの利用方法
3.1 Linux環境での利用方法
一般的なLinux環境はこちらです。avahi-publish が使用できるので、迷わずこちらを選択しましょう。以下の一連のコマンドでサービスを開始できます。
MDNS_HOST=untied-srv.local
MDNS_SRV="Untied Server"
MDNS_IP="$(ifconfig | grep -o '192\.168\.[0-9.]*' | head -n 1)"
nohup avahi-publish \
-aR "$MDNS_HOST" "$MDNS_IP" > /dev/null 2>&1 &
nohup avahi-publish \
-s "$MDNS_SRV" _http._tcp 80 --host="$MDNS_HOST" > /dev/null 2>&1 &
サービスの稼働状況は以下のコマンドで確認できます。
avahi-browse _http._tcp
以下のコマンドを実行するとサービスを終了します。
pkill -f "$MDNS_HOST"
3.2 Termux環境での利用方法
Termux環境では avahi-daemon が動いていないためAvahi系のツールが使用できません。Pythonの zeroconf やGoの mdns ライブラリも試しましたが進展なし。Androidはアプリからのマルチキャスト通信を制限している模様。
そこで、手近なLinux機に代理で avahi-publish してもらうことにします。SSH接続のセットアップは別途実施してください。
MDNS_HOST=untied-srv.local
MDNS_SRV="Untied Server"
MDNS_IP="$(ifconfig | grep -o '192\.168\.[0-9.]*' | head -n 1)"
ssh agency-ssh "
nohup avahi-publish \\
-aR '$MDNS_HOST' '$MDNS_IP' > /dev/null 2>&1 &
nohup avahi-publish \\
-s '$MDNS_SRV' _http._tcp 80 --host='$MDNS_HOST' > /dev/null 2>&1 &"
サービスの稼働状況は以下のコマンドで確認できます。
pkg install mdns-scan
mdns-scan
以下のコマンドを実行するとサービスを終了します。
ssh agency-ssh "pkill -f '$MDNS_HOST'"
3.3 Windows環境での利用方法
Windows環境では dns-sd コマンドを使用します。Bonjourが必要となりますので、以下からダウンロードしてインストールしてください。
Bonjour Print Services for Windows - https://support.apple.com/ja-jp/106380
以下の一連のコマンドでサービスを開始します。
$mdnsHost = "untied-srv.local"
$mdnsSrv = "Untied Server"
$mdnsIP = (Get-NetIPAddress -IPAddress "192.168.*")[0].IPAddress
$mdnsArgs = @("-P", "`"$mdnsSrv`"", "_http._tcp", ".", "80", $mdnsHost, $mdnsIP)
$mdnsProc = Start-Process dns-sd -ArgumentList $mdnsArgs -PassThru
サービスの稼働状況は以下のコマンドで確認できます。
dns-sd -B "_http._tcp" "."
以下のコマンドを実行するとサービスを終了します。
Stop-Process -Id $mdnsProc.Id
4. おわりに
以前の記事でのマウントもそうでしたが、非rootのAndroidスマホは制約がいくつもあって単体でのサーバ完結は現実的に難しいところ。限定された用途と運用なら使えないこともないのですが。次回は、力業でのmDNSの名前解決を予定しています。
| ◀️ 前の記事 | 次の記事 ▶️ |
|---|---|
| 【開発環境構築メモ】SQLもはじめました | 【サーバ構築メモ】mDNSの名前解決を手動で行う方法 |