エントリー

2018年10月の記事は以下のとおりです。

Raspberry Piでサーバーをたてる

 OSを最新にしてから,ローカル内DNSとして使っていたdnsmasqが動かなくなってしまった,私のTS-231Pは,それ以降なにかと調子が悪く,知らぬ間にCPU負荷が100%になっていたり,スワップが大きくなりすぎて警告が出たり,ウイルススキャンの定義ファイルを更新できなかったりと,どうもすっきりしません。

 思えば,dnsmasqもopkgから入れて見たり,たはまたQPKGを見つけて入れて見たりと,よく分かってもいないのにいろいろ試してみては失敗するものだから,気が付いたら調子が悪くなっていて,すでになにがきっかけだったかわからないということが起こっています。

 見た目に問題なく動いているNASも,よく見てみると問題が出ていたりするので,なにかをきっかけにして初期化をしないといけないかも知れません。

 とにかく,このままdnsmasqをNASに任せてようと頑張ることは傷口を広げてしまう恐れが大きいので,もうこの作戦はやめにして,別の方法を考える事にします。

 そして私は閃きました。

 そうだ,ラズパイだ!

 電子工作のひとも,makerな人も,Linuxが大好きな人も,35ドルで買えるフルスペックのLinuxが走る,この名刺サイズのシングルボードコンピュータ「Raspberry Pi」に夢中です。

 2012年に登場した初代からすでに6年が経過し,イギリス生まれのこのシステムもすっかり定着した感があります。Arduinoのようなアングラ感もなく,大手メーカーも巻き込んで,知ってる人は知ってるというレベルから,技術者なら普通に知っているべきものへ変わって来たなあと感じます。

 とはいえ,レジスタを叩いてLEDをチカチカさせるのが好きなハード屋さんにとって,linuxというOSの壁は厚く,いくらGPIOがヘッダピンで出ていても,直接触っている感覚が薄くなってしまうんじゃないかと思います。

 そんなわけで,電子工作やIoTという側面から,私はRaspberry Piを触ることはないだろうなと思い続けていたのですが,家庭内のサーバーとして利用するという切り口に気付くと,猛烈に身近な存在になってくるから不思議なものです。

 で,Raspberry Piを同じような用途で使っている人を調べてみると,どうもたくさんいらっしゃるようです。そりゃまあ,1GHzを越えるマルチコアCPUにLANと16GBのストレージを内蔵したコンピュータがちゃんとしたLinuxを走らせているんですから,大抵のことは出来てしまうでしょう。

 しかも安い。しかも低消費電力。しかも小さい。

 これこそ,最良の解決策です。

 こういうきっかけを待っていた感もあるのですが,購入を前提に早速調べてみると,どうも最新のRaspberry Pi 3+はまだちょっと高く,こなれているのはRaspberry Pi 3です。これなら4000円ほどで買えます。

 初代や2はもっと安いかと思ったのですがむしろ高いくらいで,そういうことならRaspberry Pi 3 Model Bをとりあえず買っておきましょう。

 届くまでの間にセットアップの方針と作業の準備を行っておきます。

 まず,本体にディスプレイやキーボードを直接繋ぐことはせず,リモートで運用します。いわゆるPCとして使うわけではないので,GUIもいりませんし,オフィススイートもいりません。

 ネットワークは有線のLANを基本とし,WiFiもBluetoothも使いません。

 動かすサービスはDNSサーバーであるUnboundとNTPくらいのもので,後は必要に応じて考える事にします。

 ということで,OSはRaspbianで,Stretchという最新版のLiteを選びます。これならストレージのmicroSDは8GBでも十分過ぎるくらいで,手持ちの余剰品を有効活用出来ます。早速ダウンロードしておきます。

 そんなこんなので,Raspberry Pi 3 model Bも手元に届き,作業スタートです。


(1)microSDの準備

 ストレージのmicroSDにOSを書き込み,起動できるようにするのがまず最初にやるべきことです。なにせ初めての事ですし,なにかと失敗しやすい作業でもありますので,ここは確実な専用ツールを使います。

 Etcherというのがそれで,Mac版をダウンロードして使いました。これはzipになっているOSのイメージを解凍せずにそのまま突っ込み,展開先のmicroSDを指定してやればあとは勝手に作業が進むという優れものです。

 使ったイメージは2018-06-27-raspbian-stretch-lite.zipです。

 正常に書き込んだら,デフォルトでは閉じているsshを有効にするため,ファイル名をsshとした0バイトのファイルを作成し,/bootに投げ込んでおきます。

 こうして出来たmicroSDを,LANですでに繋いであるRaspberry Piに突っ込み,2.4AのACアダプタに繋いで起動します。


(2)sshでログイン

 Raspberry Piは初期状態ではDHCPでIPアドレスを取得するので,sshでログインするにはどのIPアドレスが割り当てられたかを調べないといけません。

 Macだと「raspberrypi.local」でIPアドレスを自動的に見つけてくれるのですが,手動で調べるのも1つの方法です。

 私の場合,IPアドレスを調べてsshでログインを試みたのですが,connection resetと出てしまい拒否されてしまいます。

 googleで調べると。どうもopensshの問題らしく,Raspberry Piのsshのファイルを消してコンフィギュレーションをやれば解決するらしいのですが,そもそもLCDもキーボードも繋がっていない環境なのですから,sshで繋がるまでなにも出来ません。

 早くもここで白旗を揚げそうになったわけですが,よく考えるとLCDもキーボードも繋げてしまえばいいだけの話で,こうしてローカルでログインして作業をすればよいのです。

 長めのHDMIケーブルでLCDをつなぎ,余っていたUSBキーボードを差し込んで起動すると,ちゃんとLCDに起動画面が出てきます。当たり前ですがちょっと感激です。

 起動していることまではわかったので,piでログイン。そして

sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server

 と入力します。これでsshでリモートログイン出来るようになりました。


(2)初期設定

 なにはともあれ,パッケージの更新です。

sudo apt-get update
sudo apt-get upgrade -y

 小一時間ほどかかりました。待ってるだけの時間ですので,もったいないです。

 これも無事に終了し,再起動。

 続けて設定の変更です。タイムゾーン,ロケール,ホストネームを設定します。

sudo raspi-config nonint do_change_timezone Asia/Tokyo
sudo raspi-config nonint do_change_locale en_US.UTF-8
sudo raspi-config nonint do_hostname hogehoge

 ロケールは日本語を指定したのですが,全角文字がなんだか鬱陶しくなり,USにしました。ちなみにデフォルトはGBです。


(3)NTP

 サーバーですので,正確な時刻は必須。従ってNTPは入れないといけません。

sudo apt-get install ntp
sudo vi /etc/ntp.conf

 そして,NTPサーバーにおなじみのnictを設定します。

"server 0-3.debian.pool.ntp.org iburst"をコメントアウトし,"pool ntp.nict.jp iburst"を追記するだけです。

sudo service ntp restart

そして,

ntpq -p

 として,ここに*nictが出ていればOKです。


(4)固定IP

 DNSサーバーとして使うのですから,IPは固定でないと話になりません。

sudo vi /etc/dhcpcd.conf

 以下のように修正します。

interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.x
static domain_name_servers=8.8.8.8

sudo reboot

 固定IPで再ログインして,ifconfigで確認します。次。


(5)ユーザーの管理

 piというユーザー名を使い続けるのは嫌なので,このあたりを片付けます。

 方向はpiを別のユーザー名にすることです。そのためには,一度暫定ユーザーを作り,ここで作業をして最後に削除です。

(5-1)暫定ユーザーの作成
sudo useradd -m -G sudo -s /bin/bash tmpuser
sudo passwd tmpuser
sudo reboot

(5-2)暫定ユーザーでログインしpiユーザーを変更
ssh tmpuser@192.168.1.xxx

sudo rm /etc/sudoers.d/010_pi-nopasswd
sudo usermod -l hoge pi
sudo usermod -d /home/hoge -m hoge
sudo groupmod -n hoge pi
sudo passwd hoge
history -c
sudo reboot

(5-3)暫定ユーザーの削除
ssh hoge@192.168.1.xxx

sudo userdel -r tmpuser

 よし,ここまででようやく初期設定がおわった。


(6)Unboundのインストールと設定

 DNSサーバーには,これまで使っていたdnsmasqを使うつもりでいたのですが,軽く低機能なdnsmasqは今回の用途にぴったりとは思いつつも,最近例をよく見るようになったUnboundを使って見る事にしました。

sudo apt-get install unbound

 これでインストールまで完了です。簡単です。続けて設定です。

sudo vi /etc/unbound/unbound.conf.d/unbound.conf

 おそらくこんなファイルは存在しないと思うので,新規と出てくると思いますが,びびらずに続けます。

 Unboundは,/etc/unbound/unbound.conf.d/にある.confをすべて設定ファイルと見なすので,設定を複数に分けてもいいし,1つにまとめても構いません。

 私の場合,大した記述ではないので,1つにまとめました。

server:

use-syslog: no
log-queries: no

directory: "/etc/unbound"

interface: 0.0.0.0

access-control: 127.0.0.1/32 allow
access-control: 192.168.0.0/16 allow

hide-version: yes
hide-identity: yes

local-data: "gshoes.myqnapcloud.com. IN A 192.168.1.xxx"
local-data-ptr: "192.168.1.xxx gshoes.myqnapcloud.com."

 たったこれだけです。

 本当はもっといろいろ設定しないとまずいのですが,面倒なのでログさえもとりません。

 しかもデフォルトでは,ここで解決しなかった場合,上位のDNSサーバーに合わせることになっているので,わざわざ設定ファイルに記述しないという手抜きっぷりです。

sudo /etc/init.d/unbound restart

 これでUnbopundを再起動します。

 他のマシンのDNSをRaspberry PiのIPアドレスにしてから,nslookupで期待したIPアドレスがかえってくるか,試してみましょう。

----

 とまあ,やったことはこれだけです。

 とても簡単ですし,待ち時間を除けば30分もあれば終わってしまうでしょう。わずか4000円の費用と,これだけの設定で,ローカル内DNSが立ち上がってしまうんですから,すごいものです。

 とはいえ,書けば簡単に見えますが,実は結構苦しんでいました。

失敗1:ファームウェアのアップデート

 初期設定の途中で,ファームウェアのアップエーとを試みました。

sudo rpi-update

 しかし,tarがread onlyだとかなんだとか言い出して,正常に終了しませんでした。

 その後起動もしなくなり,これまでの設定作業をすべて捨てて,最初からやり直す羽目になりました。ううう。

 1回目のやり直しでは起動メッセージにfailと出るようになってしまい,気持ち悪いのでもう一度最初からやり直します。

 今度はすべて問題なく,ようやく設定作業に進むことができました。

 後で調べてみると,公式にはファームウェアの更新はお奨めしないと書かれているらしく,実際トラブル出した人の苦しみの声がネットに上がっています。


失敗2:Unboundの設定ミス

 すんなりインストールまでは出来たUnboundですが,設定を書き換えて再起動しても,IPアドレスを解決してくれません。問い合わせに対してタイムアウトさせているので,DNSサーバーとして動いていないようです。

 こういう場合はおおむね設定ファイルの書き間違いなのですが,案の定ローカルIPアドレスを書き間違えていたり,最後にピリオドを打ち忘れていたり,スペースが抜けていたりと散々でした。

 これらを修正してやると,ウソのように動き出しました。コンピュータというのは本当に正直です。


 こんな感じで,あれほど苦しんだNASでのローカル内DNSサーバーですが,NASを触ることなくさっさと解決することが出来ました。

 一応基幹系のハードウェアで24時間の運用ですから,ケースくらいは入れておかねばなりません。ヒートシンクはTO-220用の小さいものを専用の接着剤で貼り付けておきましたが,これを含めて後日届くケースに入れ込んで,明日には正常運用に入りたいところです。

 最近は,子供の科学にも「じぶんパソコン」としてRaspberry Piが取り上げられています。確かに,これだけ充実していれば,パソコンとしても十分使えると思います。子供にとっては,やっぱり自分のパソコンを持つことは,まだまだ憧れなんでしょうね。

 35ドルでこの機能と使い勝手ですから,安さの源泉は信頼性だと言えるかも知れません。事実24時間駆動の用途には苦しいという意見もありますし,面白そうだけど今ひとつ信用出来ないというのが,一般的な評価でしょう

 しかし,裸の基板に電源を入れるという儀式ですっかり心もハードウェアのエンジニアになっているのに,いざ触るとLinuxというこのギャップは面白く,サーバーではなく,PCとしてもう1つ買って遊んで見るのもいいかなあと思い始めています。

 

コンピュータのお世話に忙殺される週末

 9月最後の週末は台風やらなんやらで落ち着かないものになったのですが,私はMacBookAirのメンテをきっかけに,家中のコンピュータのメンテをすることにしたため,おかげで大変な目に遭いました。

(1)MacBookAirにMojaveを入れる

 私が使っているMacBOokAiはLate2010の11インチモデルで,今回のOSのバージョン(macOS10.14 Mojave)では,とうとう対象機種から外れてしまいました。

 別に意地悪でもなんでもなく,GPUがmetalに対応しなくなったから,ということなのですが,いつも生活マシンであるMacBookAirで新しいOSを使ってみて,落ち着いた頃にMacBookProをアップデートすることにしていた私は,サポート外になってしまったことが残念でした。

 まあ,以前のOSほど,新しいOSへの期待があったわけではなく,ダメならダメでいいかという感じだったのですが,Macのニュースサイトを巡っていると,非対応機種にMojaveをインストールするパッチがあるとご丁寧に書かれています。

 普通に動くという触れ込みですが,metal非対応というのはどうするんでしょうね・・・

 よく分かりませんが,最新のOSが入るというのですから,これは入れて見ようと思うのが人情というもの。

 そこでMojaveのインストーラとパッチをダウンロード,USBに16GBのメモリを取り付け,パッチを当てたMojaveのインストールディスクとして作成します。

 ここから起動し,あとは普通にインストールです。

 寝る前に仕掛けて目が覚めると,電源が落ちています。起動するとプーと音がして起動しません。ああ,死んだかも・・・

 バックアップを取るのが面倒でそのまま進めてしまったことを後悔しつつ,USBメモリからきちんと起動すると,無事に起動はします。SMCの問題ではなかったようです。

 ここからさらに機種を指定してパッチを当てる必要があり,終わったらさらに再起動します。

 お,なんなく起動しました。しめしめ。

 しかし,デスクトップが表示されると,問題が露呈しました。メニューバーの明度が低く,見えなくなりそうなくらい,暗いです。メニューバーだけなら許せますが,どうも透明度の問題のようで,同じように暗くなってしまう部分がチラホラとあります。文字などは全く見えないので,これは実使用で問題があります。

 Mojaveではダークモードが実装されましたが,どうもこいつとの関連があるんじゃないかと思います。ダークモードなら問題なく動くのですが,非対応のアプリと混在すると,画面が黒かったり白かったりとややこしく,Macを使っている気分にならないので,これはパス。

 いろいろ試行錯誤をしてみたのですが,メニューバーの明度を上げる方法もなく,透明度を調整する方法も見当たらないので,アクセシビリティから透明度を下げたところ,綺麗に表示されるようになりました。

 描画速度も上がって一石二鳥なわけですが,Dockの半透明もなくなってしまったので,ちょっと違和感があります。

 文句を言っていても仕方がないので,これはもう割り切ることにするのですが,実はMojave,以前よりもサクサク感が増しています。少しではありますが,体感できるくらい処理が軽くなっているのです。特にメールがいい感じです。

 フォントも変わり見やすくなったと思いますし,メール一覧からメールボックスへの移動がワンクリックで出来るような,賢い移動ボタンが付いてくるようになり,私はこれだけで以前のOSに戻る気が起きません。

 ということで,かなり軽快に動き,まだもう少し使えそうだという感触を得たところで,バッテリーが要修理と出ています。うーん・・・


(2)MacBookAirの電池を交換

 せっかく動き出し,しかも以前よりも感触が良くなっているのに,要修理の電池を使い続けるというのも精神衛生上よくありません。実際,1時間くらいしか持たない電池になっているので,いずれ交換しないとなあとは思っていましたが,すぐに交換せよと出るのですから,余程のことでしょう。

 すでに600回を越える充電回数で,電圧も下がっているですから,確かに交換した方が良さそうです。

 古いマシンですし,ユーザーが自分で交換出来ない電池ですので,純正はないでしょう。amazonでサードパーティーの電池を探してみると,6200円ほどで買えるとあります。1万円を越えたらやめようと思っていましたので,手に入るうちに交換しましょう。

 翌日届いた電池を,ささっと交換します。裏蓋を外し,古い電池を取り外します。新しい電池は外形こそ同じですが,セルの数が6個から4個に減っています。

 長年使ったマシンですので,筐体が歪んでいます。できるだけ歪みをとり,電池を固定してコネクタをはめ込みます。裏蓋を閉じて完了。無事起動もして,バッテリーのステータスも正常に戻りました。

 が,トラックパッドの感触がおかしいです。クリックが出来なくなっています。

 あちゃー,きっとバッテリーの取付がうまくいっていないのと,裏蓋の歪みが残っていたのでしょう。

 もう一度分解し,今度は慎重に,どの段階でトラックパッドがおかしくなるかを確認しながら進めます。

 よし,今度はうまくいきました。トラックパッドも問題なしです。

 電池を充電して動かしてみますが,おそらく4時間以上は動く感じです。新品の頃はもっと長時間動いたように思うのですが,まあそれは仕方がないですかね。


(3)nanoSIMが届く

 BlackBerry KEYoneは私の手元で順調に動いていますが,不安なのはmicroSIMから手作業で削ったnanoSIMがいつダメになるかです。

 その時は動いていても,ある時急に動かなくなるものなので,SIMの交換費用が無料になるキャンペーンが始まったら,すぐにお願いしようと思っていました。

 ちょうど9月27日にキャンペーンが始まったので,その夜早速依頼をかけたところ,9月29日の朝からSIMが使えなくなりました。翌日の日曜日に届くとも思えませんし,届くという連絡ももらっていないので,月曜日までSIMが使えないかとがっかりしていたところ,ありがたいことに日曜日の朝に新しいSIMが届いたのです。

 いい仕事してるなあ,IIJ。

 今度のSIMは,ユーザーが自分の必要なサイズのSIMに切り出すもので,切り離した枠はSIMアダプタとしても使えそうです。

 早速nanoSIMに切り出して,KEYoneに取り付けます。当たり前ですが,問題な駆動しています。

 あまり気にしない人が多いように思うのですが,実はmicroSIMとnanoSIMは大きさが違うだけではなく,厚みも違います。nanoSIMの方が薄いので,microSIMを入れると,最悪の場合取り出せなくなったり,壊れてしまったりします。

 正規のnanoSIMを入れてちゃんと動くかどうか,実はちょっと心配でしたが,今のところは大丈夫です。

 ああ,これでBlackberry KEYoneへの移行は完了です。


(4)Windows update

 昔使っていたMacBookProが退役してから,WIndows8.1マシンとして第二の人生を送っているのですが,使うのは月に一度くらいですから,その度にWindows updateが必要になります。

 今回もそれで1時間ほどかかって,最新のアップデートをかけました。


(5)TS-231Pのアップデート

 最後の仕上げは,我が家のNAS,TS-231Pのファームウェアをアップデートです。久々のメジャーアップデートで,4.3.5が正式リリースされたのが9月28日です。

 実は,ずっと怖くて,1つの前の4.3.4にアップデートしたのも随分後になってからでした。内向きのDNSをdnsmasqで上げていたり,あこれこれと場当たり的な設定を繰り返しているので,アップデートでコケることが多くあるのです。

 とはいうものの,セキュリティの問題もあるのでいつまでも放置摺るわけにも行かず,意を決して4.3.4にした時には,幸いにも問題を起こさずすんなり動いてくれたのでした。

 今回の4.3.5も似たようなもんだろうと,一連のコンピュータのメンテが一段落したところで,勢いでアップデートを行ってしまったのです。

 やった結果は最悪で,まずネットワークが動きません。pingさえもろくに通らないという恐ろしい状態です。dnsmasqも動かず,ローカルネットワーク内でNASへのアクセスはIPアドレス直うちです。

 ネットワークの問題は,なんとポートトランキングにありました。どうも4.3.5ではネットワーク周りの実装が変わったようで,物理的にケーブルを1本抜くと,ウソのようにpingが通るようになります。

 そこで,ポートラインキングの設定を一度削除,もう一度構成し直すことで復旧を試みましたが,ポートトランキング前にIPアドレスを固定で割り振ると,ポートトランキングで1つにまとめたときにそのIPアドレスは使用出来なくなるという仕様変更があり,困ってしまいました。以前はそんなことなかったんですけどね。

 こういう仕様変更があり,どうも従来ではポートトランキングの前後で同じ固定IPが設定された状態でアップデートをかけると,ありえない設定が有効になってしまい,動かなくなってしまうのだと思います。

 ということで,最終的に設定したいIPアドレスを避けて2つのポートを設定し,ポートトランキングで最終的なアドレスを設定することで,この問題は解決しました。

 次はdnsmasqなのですが,これは未だに良くわかりません。opkgでアップデートをかけて最新のdnsmasqを入れてdnsmasq.confも書き直してみたりと,いろいろ試してみたのですが,dnsmasqが動かないだけではなく,NASそのものの動作もおかしくなってしまい,外にDNSを見に行かないとか,CPU負荷が下がらないとか,もう様々な問題が出ています。

 結局dnsmasqをアンインストールし再起動すると安定して動くようになったのですが,これだとローカルネットワーク内でIPアドレス直うちですし,そんなことよりローカルにあるWEBを参照するのにスクリプトが正しく動いてくれません。

 ということで,もうしばらく悩む必要があるのですが,一番いいのは4.3.4に戻すことだったりします。一度戻そうと思ったのですが,4.3.5を一度入れて設定の多くが書き換わっているなかで,4.3.4に戻すのはやっぱり恐ろしく,最後の最後に思いとどまりました。

 もうちょっと検討を続けて,落としどころを探ることが必要です。

 それにしても,QNAPもころころと仕様の変更をするので,しんどいです。新しい機能が実装されても,それを使うにはファイルシステムの再構築が必要で,結局今のまま使うしかないとか,新しい機能のせいで重くなったりするので,あまり古い機種をサポートし続けるのも,考え物だなあと思います。

 

ページ移動

  • ページ
  • 1
  • 2

ユーティリティ

2018年10月

- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

新着エントリー

過去ログ

Feed