umikaki diary

ガジェットから日常まで

KVMでDNSサーバ・DHCPサーバ・音楽サーバを構築した

前回、VPNサーバを構築した記事を書きました。

 VPNが使えるようになったことで、外出先から自宅のPCにリモートアクセスできたり、ビルドサーバでAndroidのビルドを行うことが可能になりました。

せっかくVPNが使えるようになったので色々サーバを建ててみたいよねということで、bindを使用した内部DNSサーバ、Jellyfinを使用した音楽サーバ、そしてDHCPサーバをKVMのゲストサーバとして構築しました。

内部DNSサーバの構築

家庭内LANでもホスト名+ドメイン名でアクセスしたいよねとのことで、内部DNSサーバを構築しました。

基本は以下のサイトの内容で構築できます。

ここで1点注意しなければならないのは、「dnssec-enable no;」「dnssec-validation no;」の部分です。これをしないとインターネットのホスト名(google.co.jp など)が解決できなくなります。

今回はすべて手動でDNSを定義していますが、サーバのホスト名を自動的にDNSに登録できたら便利だなぁと思ってしまう次第です…。

DHCPサーバの構築

DNSサーバが構築できたので、各サーバ、PCのDNSサーバ設定を構築したDNSサーバに指定してあげれば、LAN内(外部公開していない)にあるサーバへのアクセスが、ホスト名+ドメイン名でアクセスできるようになります。

しかし、DHCPサーバがHGWになっているため、DHCPで自動で設定される端末はHGWのDNSを見てしまいます。HGWでDNSの向き先を変えられれば問題はなさそうですが、auひかりのHGWは、DNSサーバが全て固定されて勝手に変更できないようになっています。

そこで、DHCPサーバも自前で構築し、DHCPで自動取得した端末に対しても内部DNSサーバを参照するようにしました。構築は下記サイトが参考になるかと思います。

なお、DHCPサーバ構築後は、HGWのDHCPサーバ機能は必ずOFFにします。

Jellyfinでの音楽サーバの構築

最後に、音楽サーバの構築です。これを構築すれば、家庭内LANにいる間はどの端末からでもブラウザから音楽を聴くことが可能になります。

今回はUbuntu 18.04 LTSにJellyfinを構築しました。構築手順は英語ですが下記サイトに記載されています。

構築後、ブラウザより「http://《構築したサーバのアドレス》:8096/」でアクセスが可能になります。私の場合は8096番ポートでアクセスするのが嫌だったので、Nginxを同時にインストールし、リバースプロキシを使って通常の80番ポートでアクセスできるようにしました。

ちなみに、音楽サーバを外部公開すれば外部からでもアクセスできるようになりますが、自分のミュージックライブラリを勝手に聞かれたりいじられたりするのが嫌、そしてセキュリティ的にも好ましくないため、外出しせず、外出先から聞く場合は必ず自宅へVPN接続をしてからアクセスするようにしています。

Jellyfinをインストールし、適当なフォルダーに音楽ファイルを入れ、ライブラリを作ってあげると、下記画像のようにライブラリが表示されます。

f:id:umikaki:20190403213749p:plain

Jellyfinのライブラリ画面

ただ、この場合のファイル転送はsftpで行ってあげる必要があるため、sambaを構築し、ライブラリのフォルダを共有するようにしてあげれば、直接コピーできるようになり便利になります。私の場合は、Jellyfinと同時にsambaも構築しました。

VPNの恩恵

VPNがあるおかげで、外出先でも家のサーバにアクセスできるのは大きなメリットです。自宅サーバについてはデメリットも大きいですが、VPSを借りるよりも手軽に内部ネットワークを構築できる点が最大のメリットだと私は感じています。