さくらのアドベントカレンダー2022 2日目の記事です。
どうも、さくらインターネット やまけんです。
今回は、さくらのクラウドにUbiqitiが販売しているUniFiと呼ばれるネットワーク製品群のコントローラソフトである UniFi Network Applicationを構築し、スイッチや無線APを管理するという方法になります。
そもそも UniFiとは
2003年にアメリカ カルフォルニアのサンロゼで起業したUbiquitiが提供しているネットワーク機器のブランドです。
日本では一時期お安い高機能ルータとして、EdgeRouter Xが6-7年くらい前に流行りましたが、それを作っていたのもUbiquitiです。
インテリジェンスなスイッチや高機能な無線APなどを安く販売しており、いわゆる逸般の誤家庭向け機器としてもおなじみです。
数年前から日本公式ショップも展開しており、ちょっと前までのebayやEuroDKで買うなどをしなくても手軽に買えるようになりました。
このUniFI機器の良いところは、コントローラのライセンスが無償であるところです。
ネットワークアプライアンスであるあるなのが、ライセンスが年間いくらでみたいなサブスクになっていたりなのですが、UniFi製品はそこがかかりません。
そのため、2019年ぐらいに自宅の無線APをリプレイスする際、さくらの専用サーバチームの人にアライドテレシスかUniFiはどーよとおすすめされて、それ以来どハマりしました。
おかげさまで今は、グループ会社のビットスターメンバーにもおすすめしまくって布教しています。
ちなみに、コントローラについては、今だとUniFi OS Consolesといって、ルータやコントローラを購入し、 unifi.ui.com 経由でクラウド管理するというのが推奨されている方法ではありますが、自前ホスティングでのコントローラ利用も可能であり、きちんとナレッジも公開されています。
要件としては
Linux: Ubuntu Desktop / Server 22.04; Debian 11 "Bullseye"
CPU: x86-64 Processor (Intel / AMD x64 Processors)
RAM: 2GB
Network: 100Mbps Wired Ethernet
HDD: Minimum 10GB free (20GB or more preferred)
Java: Java Runtime Environment (JRE) 8
Web Browser: Google Chrome
MongoDB: version 3.2 or later.
とのことで、クラウドで2GB 2CPUあたりのSSD20GBインスタンスを立てればいけそうな感じです。
今回は、勉強会やイベントなどで既にインターネットは来てるけど、WiFiの提供をしなきゃいけないというような状況で、クラウド上のコントローラとその配下にPoEスイッチ、WiFiAP数台のような環境を想定したコントローラを作成します。
コントローラも普段はシャットダウンされていて、イベント時にVMが立ち上がっているようにしていれば、出費も抑えれて良い感じです。
なので、さくらのクラウドであえて構築しています。
イベント現場向けWiFi提供セット(モジュラーシンセ用可搬2UラックにPoEスイッチを設置し運用)
クラウドホストの作成
先ほどの要件をもとにクラウドVMを作成します。
さくらのクラウドでホストを作成します、特にどのリージョンがというのはないですが、一番新しい東京第2リージョンで作成します。
とりあえず2コア メモリ2GBを選択し
ディスクはSSD20GBを選び、アーカイブからUbuntu Server 22.04 LTS 64bitを選びます
ネットワークはインターネット接続のまま。特に変更はなく、
ディスクの修正はチェックを入れて、管理者ユーザーのパスワードやホスト名を入れます。
公開鍵認証でログインするように設定するため、github.comから鍵を取ってくるようにしました。
クラウドアカウント登録の鍵や、RSAの公開鍵をペーストして設定しても良いです。
パスワード/チャレンジレスポンスでのSSHログインを許可しないにしておいてパスワード認証でのSSHを排除します。
あとはVMを判別しやすいように名前をつけて右下の作成ボタンを押して作成します。
しばらくしたらVMが立ち上がりますので、SSHでログインします。
一応最新のパッケージに更新するよう
sudo apt-get -y update && sudo apt-get -y dist-upgrade
で更新しておきましょう。
UniFi Network Applicationのインストール
一応上記URLで公式のインストール方法が提示されているのですが、このドキュメントの中に
See an example of what scripts the Community is using to install the UniFi Network application on Ubuntu 16.04 and 18.04 in this Community post.
ということで、UniFiのユーザーコミュニティスペースに、有志が作成したシェルスクリプトでサクッと作成できますのでそっちでやっていきます。
ドキュメントを踏まえて、少しだけ叩くスクリプトを変えています。
#rootユーザで作業する
sudo -i
#aptで wgetとCA証明書をインストールする
apt-get -y update && apt-get -y install ca-certificates wget
#最新のスクリプトをダウンロードして実行する1ライナー
rm unifi-latest.sh &> /dev/null; wget https://get.glennr.nl/unifi/install/install_latest/unifi-latest.sh && bash unifi-latest.sh
そうすると自動でスクリプトが走ります。必要なものなどを入れていきます。
インストール後にスクリプトを残すかどうか。必要なければnで削除するようにしてもよいです。
こんな感じでアップデート求められたりするので、適宜選択して進めていくだけ
インストールが進む
aptリポジトリにUniFiのリポジトリを含めるかですね。apt でアップデートできるようになるので含めても良いかと。
UniFi Network Applicationのインストールは終わり、 https://[VMのIPアドレス]:8443 でコントローラを開くことができますが、別途Let's Encryptを使った証明書発行を行うかという設問です。
ホスト名設定して正引きできる状態だと引き続き設定した方が良いかと。
1を選ぶとcertbotをインストールして証明書の自動発行を進めてくれます。
タイムゾーンの設定です。 Asia/Tokyoなので yですすめます
ホスト名の設定です。正しいホスト名が出ていればそのまま進めて良いですが、間違っているようであればnを押し、正しいホスト名を入れます。
SSL設定が進みます。
設定完了すると https://[設定したドメイン]:8443 のアドレスが表示されますので、あとはブラウザ側で設定します。
UniFi Network Application の設定
https://[設定したドメイン]:8443 を開くとガイダンス形式で設定をしていきます。
設定完了後
スイッチやWIFI APをクラウドコントローラに収容します。
スイッチやAPはデフォルトユーザubnt パスワードubntでsshできます。
ログイン後 set-inform http://[コントローラのIP]:8080/inform
と打つとコントローラ側で追加できるようになります。
登録ができました。
公式ドキュメントの L3 Adoptの方法については下記リンクへ
おわりに
今回はクラウドで構築しましたが、シェルスクリプトをラズパイなどで実行するとローカルにコントローラを構築できます。
UniFiのスイッチやAPは結構かゆいところに手が届くので、是非とも使ってみてください。
Enjoy!