PC設定覚書と雑記
自宅エリアではスマホは Wifi 接続にしないと、モバイル通信量がどんどん増えていきますよね?
このWifi接続にした時、LAN内の外部公開用Webサーバー、外部公開用Cloudサーバーに接続が出来なくなります。
その理由は、指定したURLをIPアドレスに変換する外部DNSサーバーは、WANでのグローバルIPアドレスを通知してくるのですが、
LAN内でのアクセスに必要なのは、プライベートIPアドレスなんです。
分かりやすく例えるなら、外から居場所を調べるには、東京千代田区永田町1-7-1といった住所が必要ですが、
その建物の中からは、2階の東から3番目の部屋といった情報が必要になるという感じですね。
ところが、特に iPhone 等のスマホを使わないのであれば、PC内のhostsファイルをちょこちょこっと書き換えてやれば、この件はすんなり解決してしまうんです!
実は、iPhone だって内部のhostsファイルを書き換えれば済んでしまうんですが、この行為は「脱獄」! なんて呼ばれている禁じ手なんです・・・
これをやってしまうと、サポートが受けられなくなったり不都合がかなり出てくるらしいんです。
そこで、LAN内専用のDNSサーバーを立てよう!ということになる訳です。
我が家のLAN内には、Webサーバー以外に、Windowsで動いているラジオ録音用サーバーが常時動いています。
まずこのラジオサーバーにDNSサーバー「Bind」をインストールし、設定を試行錯誤で続けていました・・・
もう、自分には泥沼ですね・・・
設定ファイルを書く時のルールが細かくあって、半角スペースが全角スペースになっただけでもう動かないんです!
夕方の柴犬コータの散歩中に、そうだ! と気付いたことがありました。
稼働中のWebサーバーにDNSサーバーを共存させても大丈夫だろうということです。
IPアドレスは当然同じになるんですが、ポートが違うので、別々にアクセスが可能だろうと。
散歩から帰宅してすぐにWebサーバーマシンにBindをインストールしました。
あれから延々6時間は経ちましたが、まだ終わりが見えません・・・
せめて、原因とか見通しとかわずかでも掴みたい・・・
昨夜遅く、突然外部からこのサイトへのアクセスが出来なくなりました!
LAN内クライアントからサイトへのアクセスは可能で、クライアントからWAN外部サイトへのアクセスもいつも通り出来ていました。
DDNSサービスの提供元Mydnsの障害状況、Mydnsからの障害報告メールもチェックしましたが、異常はなさそうでした。
そこでまず、ルーターの設定を再確認し、ルーターの再起動を行いました。
そしてクライアントからnslookupコマンドでサーバー機のグローバルip情報確認したら、ie-serverのDNS情報は更新されているのに、Mydnsでは更新されていない。
ルーターの再起動などでWAN側のipアドレスが変わると、DNS情報も変更される訳ですが、
この反映には時間がかかるんだろう(今までは直ぐに反映されていたようなんだけど・・・?)と、明け方3時ごろだったので、まずはとりあえず寝ちゃうことにしました。
ところが、朝7時ごろ起きて確認したら、MydnsのDNS情報は相変わらず更新されていない。
cronjobを実行させてログを見てみると、Mydnsサイトにアクセスは出来ているのにログインが出来ていない模様!
もう一方のDDNSサービスie-serverへのアクセスは今まで通りログインまで出来ているのに、どうしたんでしょう?
そうだ!
Mydns側でセキュリティを向上させる等の対策が新たにされて、ログイン出来なくなったことは充分考えられます。
そこで次の手ですが、「wget http:// ・・・」のアクセスログイン法から「curl https:// ・・・」の方法へ変更し、cronスクリプトファイルを書き換え、実行させてみました。
この方法で、ようやく3つのサイトをいつも通りWeb上に公開させることが出来ました!
と、ここまで書いてきた所で、突然このサイトが固まってしまい、apacheを再起動してもサイトが動かなくなってしまいました!
そこで、サーバーマシンを再起動しようとしたところ、全く予想外の事態が。
システムが、それにUEFIも立ち上がらない!
これには参りました・・・
しばらく考えたんですが、数年前電源ユニットが突然死したことを思い出しました。
業務用ノンストップタイプでもない電源を24時間動かしていたので、これが一番怪しいと思ったんです。
ところが、電源を取り換えてみたんですが、原因はこれではなかった!
その次は、マザーボードからデバイスを徐々に外して起動を試みていくテストを続けました。
もう、珍しいけどマザーボードの故障だろうと諦めかけていた時、メインメモリを1枚だけ差した状態で起動!
しかも、もう1枚のメモリだけだと起動しない!
これで、特定のメモリの不良が原因だと分かりました!!
それなら、以前に使っていた2枚のメモリをデュアルチャンネルで動かすことにしました。
そして、念のためにMemtestを4時間弱かけて実行させました。
メモリーエラーはありませんでした!
しかし、DDNS関連はともかく、ハードウェアがなぜこのような状況になってしまったのか?
単に、メモリに故障が発生しただけなら直っているんですが、他の要因ということもあり得ます。
機械が壊れかかったまま動いているという状況だと、あとあと非常にやっかいなことになるんです。
原因が分からないままだということと、他のハードウェアも巻き添えで故障する可能性もあるんですね。
また、サーバーに対して外部からの攻撃も、あり得ないことではなくなってきています。
最近はハードウェアの設定を変更するような極めて高度な攻撃もあるそうですから!
そこで、サーバーへの外部からのアクセスを制限するように、設定を数か所変更しておきました。
はあ・・・疲れましたね・・・
さあ、これでキチンと直ってくれたでしょうか・・・?
GoogleDrive、Dropbox、icloud、Onedrive等のオンラインストレージサービスを、容量制限なしにどこでも自由にしかも無料で使いたいと考えたことはありませんか?
今回、自分で試してみて、結構すんなりと構築できる方法を見つけたので、紹介したいと思います!
自分が今まで使っていた owncloud より多機能で、しかも構築が早く確実にセキュアに出来るんです!
使う手ですが、
①省電力自作PCを用意(省電力タイプならメーカー製パソコンでも可)
②OSはLinux(WindowsServerでも可だが、高性能かつ無料ならLinuxで)
③自宅用ネットワークプロバイダ契約(通常のインターネット契約で可)
④DDNSサービスの設定(固定IP契約しているのなら不要)
こんな感じです。
では、具体的に。
①ですが、まず省電力マザーボードを選びます。
自分は、Asrock社のCPUオンボードタイプを良く使います。
今話題になっているRaspberry Pi を使うのもアリだと思いますし、これは面白そうだしいずれやってみたい!!
でも、省電力だからとノートPCを使うのはやめましょう! 本体やアダプターの発熱で火事になった例を見かけましたから!
ストレージは、WD社のRedあたりがいいと思います。SoftwareRaid1で構築するとさらに良し。
②のOSです。Linuxは色々なディストリビューションがありますが、つまづいた時に症例や答えをWebで見つけやすいものにした方が絶対にいいです!
すると、Ubuntu、CentOSあたりでしょうか? 自分は専らUbuntuの原型Debianを使っています。
Desktop環境(GUI)は入れずに、コマンドを打ち込んでいくCUI環境で作るのですが、CUIは難しそうだと思ったら、GUIサーバーでもいいんです。
でもCUIでも、SSH端末をクライアントで操作する時はコピペでどんどん操作出来ますし、WebminというGUI風の操作が出来る強力な助っ人もあるので、ぜひCUIサーバーに慣れて下さい!
あ、自分はセキュリティ上、SSHとWebminはローカル(LAN)外からのアクセスは受け付けないように設定しています。
③は自宅でパソコンとインターネットを使っている環境ならそれでOKです。
SoftBank社のAC電源に差すだけでWifiなんていうルーターがありますが、これでもいけそうかな?
④は、MyDNSをおすすめしておきます。
最後に! これだけは覚えて欲しいのがテキストディタ vi の操作法です!
やや特殊ですが、使っているうちに慣れると思います。
コマンド文入力、コマンド文編集のために必須のツールです。ただし、vim、nanoといったツールでもOKです。
さて、準備が出来たら、OSをUSBメモリでインストールしましょう。
インストール終了したら、update、upgrade して最新の状態にします。
さて、それからは?
(1)SSHサーバーインストールして、ポート変更、rootログイン禁止設定
(2)ファイヤウォールUFWをインストール
(3)UFWのポートは443、123、SSH分、Webmin分だけ開けておきます。
(4)時刻合わせにntpサーバーインストールして設定変更
(5)snapdインストール
(6)snap install nextcloud
(7)source /etc/profile.d/apps-bin-path.sh
(8)nextcloud.manual-install
(9)nextcloud.enable-https self-signed
これで、Webサーバー、データベースサーバーを含めたnextcloud環境を一気に構築出来、https通信も可能になりました!!
Webサーバーの細かい設定、データベースの作成等も不要なんです!
あとは、DDNSサイトで取得したドメイン名〇〇〇で外部ブラウザからアクセスして下さい!
https://〇〇〇
これでインストール完了です!
ちょっと説明を簡略化していますが、もし興味があったら調べてみて下さい。もちろん、問い合わせ頂いてもOKです。
(補足1)
自分のサーバーマシンからDDNSサービスを提供しているサイトに定期的にアクセスをする必要があります。
その時のスクリプト(実行)ファイルは、例えばこんな感じです。
wget http://www.mydns.jp/login.html --http-user=mydns●●●●●● --http-password=パスワード -O /dev/null
(この方法ではip情報更新できなくなったようです。他にもやり方が色々あるようです)
自分は、このファイルを、/etc/cron.d/ディレクトリにおいて、webminで15分おきに実行させています。
注意点は、rootがこのファイルを実行する時、所有者はrootで、パーミッションは700でないといけない点です。
(補足2)
インターネット契約をした時に提供されたルーターに、ポートフォワーディング設定が必要です。
つまり、DDNS設定をしたあとは、登録したドメイン名に外部からアクセスがあると、自分の所に信号が来るようになります。
それが、https通信(ポート443)であれば、自作したサーバーマシンに信号を通すようにする作業です。
ルーターのマニュアルを見て下さい。ipマスカレード設定等とも書かれています。
補足ですが、この機能のおかげでhttps以外の信号はサーバーマシンに到達できなくなる訳ですね!
(補足3)
Linuxサーバーを構築する時に、またサーバーの初期設定をする時にすごく参考になるサイトです!
色々なOSについて、またそれらのOSの最新版について、分かりやすく書かれています!
Netcommons3.3.1サイトの引っ越し方法は、今までの方法では上手くいかなくなってしまいました。
今回のバージョンアップは、コアに関するDBテーブルが変更になったとありましたので、そのことが関係しているのかもしれません。
そこで、今回の引っ越し方法を新たに記録しておこうと思います。
今回は、新規ストレージにDebian10をインストールし、phpは7.4を使用することにします。
さらに、同一サーバー内にあったowncloudはインストールせず、その代わりに、新規に作った別のサーバーマシンにnextcloudをインストールすることにしました。
nextcloud環境の作成については、おすすめの方法が見つかりましたので、別の機会に書きたいと思います。
また、引っ越し前のwebサイトは、閲覧不可にしてからmysqldumpでデータベースのバックアップファイルを取っておくことを忘れないように。
<手順>
①サーバーマシン内の点検と清掃、メインメモリ抜き差ししてメモリ接点のセルフクリーニング
②マザーボードBIOS(UEFI)のアップデート
③ストレージ(SSD)の交換
④SSDにEFIパーテイション256MB作成(マザボがBIOSタイプなら不要)
⑤Debian10最小構成インストール
⑥ファイヤウォール設定
⑦SSHサーバーインストール、ポート変更、ローカル以外からのアクセス不可、rootログイン不可に
⑧php7.4リポジトリ追加して、php7.4、php追加モジュールインストール
⑨Apache、MariaDBインストール(mysql-secureインストレーションも忘れずやっておく)
⑩acpuインストール
⑪/etc/php/php7.4/apache/php.iniの編集(file upload関係、opcache、acpu設定等)
⑫webminリポジトリ追加して、webminインストール
⑬webminポート変更、ローカル以外からのアクセス不可、rootユーザー削除設定
⑭powerOFF後、旧SSDをSATA端子に接続してpowerON、新SSDから起動するよう注意(UEFIでは別画面で設定?)
⑮新SSDにマウント用ディレクトリ作成して旧SSDをマウント
⑯旧SSDのnetcommonsインストールディレクトリを、新SSDのドキュメントルートへ丸ごとコピー
⑰コピーしたnetcommonsディレクトリ以下の所有者をapacheにしておく(Debianならwww-data)
⑱mysqldumpファイル、ヴァーチャルホストディレクティブファイル、DDNS通知用スクリプトファイルを旧SSDから新SSDにコピー
⑲poweroffして、旧SSDを外す
⑳新規データベース作成(例 MariaDB [(none)]> create database nc3db default character set utf8;)
㉑旧サイトからのデータベースリストア(例 MariaDB [(none)]> source /home/hokan/20200419/nc3db.sql;)
㉒データベースuserを今までのuser名で作成(例 MariaDB [(none)]> GRANT ALL PRIVILEGES ON nc3db.* to ncuser@'localhost' IDENTIFIED BY 'password';)
㉓データベース設定反映(MariaDB [(none)]> flush privileges;)
㉔ルーターのポートフォワーディング設定
㉕外部からwebブラウザでアクセスして、正常にログイン出来ればOK!
㉖webサイト閲覧不可を解除
以上です!
これでも割と手はかかりますね!
予定より2時間半も余計に時間がかかってしまいました・・・
SSDにEFIパーテイションを作成する所からつまづきました。
ただ、旧システムが入ったSSDをそのままSATA接続して、新システムにマウント出来たのは助かりました。
この手が使えれば、Uploadディレクトリが肥大化しても短時間でコピーが出来ます。
しかし、今までのリストア方法が使えなかったので、今回はNetcommonsディレクトリを丸ごと持ってきたんですが、
今後もこれで上手くいくのかが分かりません・・・
新年度の準備のため、サーバーの OS と php のアップデートをやって、Netcommonsの引っ越しもやろうとしていました。
いきなりやるのは怖いので、Debian10のテストサーバーを作り、そこに php7.4をインストールして、テストをさんざんやりましたが・・・
エラーの連続で上手くいかない!
エラーも何種類か出てきて、apache、mysql、Netcommons、それぞれのエラーログを見て対処できたものもありました。
しかし、丸1日かかって色んな方法を試した結果、上手くいったのはディレクトリ丸ごとコピーの方法だけでした・・・
もちろん、データベースは元のバックアップをdumpファイルで作って、これを新規データベースにインポートするんです。
php7.2環境で出来たサイトを丸ごと持ってきてから、php7.4環境に出来たのは幸運だったんですが。
でも、この方法しか分からないということは、各サイトのNetcommonsディレクトリを定期的に丸ごとバックアップし、同時にデータベースのバックアップも取っておかなければなりません。
そして、作業中に気付いたんですが、Uploadディレクトリのサイズが異様に大きくなっていたんです!
自宅サーバーだからということで、写真等もサイズを圧縮せずに載せ続けていたのが原因でしょう。
この調子で運用を続けていけば、サイトの容量がどんどん大きくなり、外部サーバーへの引っ越しとかも出来なくなります。
うーん、どうしよう・・・
悩み中です。
またWebサーバーをダウンさせてしまい、申し訳ありませんでした。
NTTの終端装置にルーター機能が付いているのに、それを無効にしてBB光ルーターを追加するのが気に入りませんでした。
この2台の消費電力は60W近くにもなるんです。それを常時消費してる訳ですから納得できません!
しかし・・・
BB光ルーターを外した設定を一からやるのにここまで時間がかかってしまいました・・・!
これで何とかなってるんですが、速度アップとかの詳細設定は後日やることにします。
明日早いので、今日はここまでにします!
本日、プロバイダをNiftyからSoftbankに切り替えました。
本日も、Webサーバーが一時不通になったことをお詫びいたします。
一応、これで設定は完了したので、以降、Webサーバーにも安定してアクセスが可能と思います。
さて、今までのプロバイダNiftyの環境では、NTT回線の光終端装置にルーター機能がセットになっているPR-400NEが提供されていました。
この装置にUser設定を加えていたので、変更はスムーズには行かないかもしれないと思っていました。
そこで、行き帰りの通勤で歩きながらあれこれと考えてはいたんです。
さて、本日プロバイダの切り替えの日だったんですが、手順書通りにやっても案の定うまく行きません!
まずは、以前のNiftyのアカウントでNET接続しているので、これを消さないといけないんですが、PR-400NEの初期化にちょっとコツが必要でした。
初期化スイッチをかなり長い間押したままにしておかないとダメなんです。
さて、次の盲点だった所です。
SoftbankのBBルーターが切り替えに先立って届いていたので、すぐに接続してWifi機能だけ使っていました。
そして、当初PR-400NEにはルーター機能もあったので、IPアドレスは「192.168.〇.1」を割り振ってありました。
そこで、BBルーターには「192.168.〇.2」を割り振ったんです。
切り替えの前日までは、これでNiftyの接続は問題なく利用できていました。
そして今日、PR-400NEを初期化してこれは終端装置だけになったので、これでインターネットに繋がるはずでした。
ところが、有線LAN内のPC、そしてwebサーバー、全部インターネットに繋がりません!
でも、この時点で、Wifi接続のスマホはインターネットに繋がっているのを発見できたのは幸いでした。
すると原因は、有線LAN内の設定も含めた不具合だけに特定できます。
しばらく考えて、そうだ! と気付きました。
有線LAN内のPCはすべて固定IPを振ってあって、ゲートウェイを以前のルーターの「192.168.〇.1」に設定してあったんです。
新ルーターのIPは「192.168.〇.2」に設定したのでした。
ですから、LANから外のWANに出ていくゲートウェイが無い状態だった訳です。これではインターネット接続は出来ませんよね。
そしてもう「192.168.〇.1」は使われていないので、再度、新softbankルーターのIPを「192.168.〇.1」に設定し直しました。
さあ、新ルーターを再起動して・・・
やっと、有線LAN内のPCもすべてインターネット接続出来ました!
最後は肝心のWebサーバーです。
新ルーターにポートフォワーディングの設定をし、サーバー内の自動実行スクリプトを手動で走らせて、DDNSサービスの提供先に現在のIPアドレスを知らせておきます。
これをやらないと、サーバーがキチンと外部アクセスを受け付けているか、すぐには調べることが出来ないんです。
さて、結果はどうでしょうか?・・・
ここまでの作業で、ようやく我が家のインターネット環境がすべて正常になりました!
やれやれ! これで一安心と思ってコータの散歩に出かけたんですが、ふと心配になって我が家の固定電話に電話をかけてみました。
呼び出しはしてるのに、家の電話機は呼び出し音鳴ってない様子!
散歩から戻って、再度設定を調べてみました。
その結果、新ルーターだけでも電話機能は使えるんですが、NTT割り当ての電話番号はPR-400NEで処理をしているので、今までの電話番号を使うのなら(使いますよね!?)、PR-400NEの電話信号を新ルーターに追加して送ってやらなければならないということが、やっと分かりました!
これで、今度こそ設定完了です!!
まあ、最初の設定って、ものすごく手間と時間がかかるってことですね!
光BBユニットの接続設定のため、Webサイトがお昼を前後して一時不通になりました。
申し訳ありません!
NTTの光回線はそのままで、明日2/4にプロバイダをニフティからソフトバンクに切り替えます。
スマホ等のモバイル通信と自宅での固定光回線を同一業者のサービスにした方が、毎月の費用が抑えられるからです。
明日以降は、ソフトバンクのBBユニットで、有線ルーター機能、Wifiルーター機能、そしてWebサイト公開のためのポートフォワーディングの機能と、3つの機能を働かせるんですが、やってみないとどうなるか不明なところがあります。
また明日ハマってしまって、長時間費やすかも・・・
特にWebサイト関係で、出来るだけ迷惑をかけないようにしたいと思っています。
現在、このサイトに限らず、Netcommos3で作られたサイトの検索ボックスの挙動がおかしいようです。
iPhone からのタイピングでは、例えば通常のローマ字入力モードで「ネット」と入力するために「netto」とタイピングすると、以下のようになってしまいます。
この症状をNetcommons3公式サイトのヘルプデスクに報告してあります。
以前、Youtube の検索ボックスでも同様の症状が発生したらしいです。
ただ、Netcommons3のエンジニアの方々はかなり忙しいようで、改善されるのはまだ先になるかもしれません。
もう一つ別件ですが、埼玉県立の各高校の Web サイトもNetcommos3にバージョンアップされたようですが、動きが非常に悪い状態のようです。
これは、埼玉県の Web サーバー側で対応しないといけない問題だと思います。
1校あたりの Web サイトへのリソースの割り当てをもっと増やすべきなのでは?
具体的には、リソース中のメモリ量を増やし、webサーバー、データベースがもっと多くのメモリを使えるようにするといったことではないかと感じています。