PC設定覚書と雑記

サーバー運用とPC日記

LAN内名前解決について(今度こそ最後!・・・?)

また新しいことが分かりました!

でも、今度こそこれで終わりにしたいと思います!

 

LAN内専用のDNSサーバーって本当にないのかな?

いつも Bindのような設定の大変なソフトを使ってるんだろうか?

どうしてもこの疑問が頭を離れませんでした。(コータの散歩してる時も!)

そして、悪いクセでまた色々と調べ続けちゃったんです。

すると、YAMAHA社のルーターとかは、自身にDNS機能を持たせてあって、LAN内の名前解決に使えるとのこと。

でもこのルーターは高価で、それだけのためにこれを買うことは考えられません。

そう言えば、Windows機で自宅のネットワークを作った時、PCにつけた名前でアクセス出来た経験があるでしょう?

DNSサーバー設定していないのになぜ?

あれは、WindowsのNetbiosという機能で可能になっているらしいです。

そんなこんなでさらに検索していると、LAN内DNSサーバーDnsmasq という由緒あるらしいLinuxソフトを発見!!

もう、ホントにどうしてこれが昨日までの検索でひっかからなかったのか?!

検索の仕方がヘタクソだ! と言われればそれまでなんですが・・・

そしてこのDnsmasq、設定もシンプルで分かりやすい!

すごい大発見!!(大げさですみません)

さっそくインストール! そして設定も終わらせて起動させました・・・

何と、ついにLAN内DNSサーバーは完成に至ったんです!!(また大げさ・・・)

もちろん、WANにある外部サイトには、セカンダリDNSサーバーに問い合わせをしてアクセス出来るんです!

あ、昨日構築したプロキシサーバーは休止させました。(まだ残してはあります)

これで iPhone の写真や環境ファイルのバックアップ等も、自宅に居ても自分のオンラインストレージに保存できます!

iCloud の追加容量料金なんて払いたくないですからね。(笑)

 

さあ、今度こそ一件落着したんですが、またまたちょっと不思議なことを体験してしまいました・・・!

もしかすると気のせいかもしれないんですが、昨日のプロキシサーバー経由の方が、サイトからの反応が早い!?

えっ? そんなバカな!

だって、データの流れは、プロキシサーバーを使うと、

Webサイトサーバー → プロキシサーバー → クライアント(スマホ)なんです。

LAN内DNSサーバー使用の時のデータの流れは、

Webサイトサーバー → クライアント(スマホ)となり、経路が短いんです!

ああ、それはDNSサーバーからの応答が遅いせいじゃないか? と自分も最初は思いました。

でも、この軽量のDNSサーバーの応答が遅いんでしょうか?

Dnsmasqがサーバー機のhostsファイルを参照するだけだから、動作即完了ですよね?

プロキシ使用の方が速いとすれば、プロキシサーバーのキャッシュ機能とかが効いてるんじゃないでしょうか!?

リバースプロキシとかは、そのような効果も期待して構築するようですから!

 

あ、でも、今はもう手を出しません!

こんなことばかりやってると、他のことがお留守になってしまいますから!

もうすでに、時間を大量に費やしてしまっているんです・・・

LAN内名前解決について(現状での結論)

昨日の続きですが、一応これで今回は落ち着きました。

 

たとえ話ですが、LAN内というのはTさんの職場の中、WANは職場の外全ての場所だと思って下さい。

自分が外からTさんに会いに行く時、住所録で住所を調べてTさんの職場にたどり着けます。

 → ここでの住所録がWANにあるDNSサーバーに相当します。

そして、職場の受付の方にTさんの居場所を聞いて、Tさんの所にたどり着ける訳です。

 → ここでの職場の受付の方がポートフォワーディングと同じ役目を果たしている訳です。

ところが、自分がすでにTさんの職場内にいる時は、もう住所録でTさんを探しても無意味な訳ですね。

LAN内からLAN内にあるサイトにアクセスを試みると、通常は外のWANにあるDNSサーバーに問い合わせに行く設定になっているので、上手くいかないという訳なんです。

 

さて、今回次に使った手は、LAN内に Proxy(代理)サーバーを立てる手でした。

この Proxyサーバーは、Proxyサーバーを稼働させているホストPCのhostsファイルをWANのDNSサーバーより先に参照するので、hostsファイルに記載されているLAN内の「居場所」をもとに目的のサイトにアクセスできる仕組みです。

実は、Proxyサーバーの積極的な使い方は、むしろ他にあるので、やはりLAN内専用のDNSサーバー構築が今後の課題です。

 

最後にもう一つ。

自宅のWindows機Radioサーバーは午前0時に自動シャットダウンして、午前5時に自動起動するように設定してあります。

昨日はこのWindows機に Proxyサーバー Apache を導入したんですが、

24時間稼働している LinuxWeb サーバー機へ導入できないか、一生懸命考えていました。

すでにWebサーバー Apache が稼働しているところに2つ目のWebサーバーをインストールできるのか?

色々と調べてみましたが、 何とか行けそうな感じです!

エイヤッと、apt install Nginx でインストール実行!

インストールの最後にエラーが出るのは、ポート(80)がバッティングしてしまうからです。

しかし、インストールは最後まで進むので、設定ファイルを書き換えてポート番号を変更し、Nginxを再起動させます!

これで2つめのWebサーバーを共存して起動させることが出来ました!

と、もう一息だったんですが、Nginx は初めてだったので Proxy設定が出来ませんでした・・・

そこで、2つめの Apache をインストール!

最初にインストールした Apache は、snapシステムで導入していたので、apt install apache2 で2つめの Apache はすんなりとインストール出来たんですね!

あとは、ポート番号を変更してApacheを再起動させ、Proxy の設定を行いました。

現在、この Proxyサーバーはしっかりと稼働してくれています!!(外部からのアクセスには関係していませんが)

 

今後、もし時間が出来れば、LAN内の複数サーバーを、仮想サーバー内で稼働させ、複数のサーバーマシンを出来るだけ少なくまとめていけるといいかな、と考えています。

この手は非常に合理的でカッコ良く、ベストのようにも思えるんですが、メンテナンスや故障対応は相当に大変そうです!!

それならば!

集中したアクセスが少ないオンラインストレージサーバー、Proxyサーバーあたりを Raspberry Pi で構築し、メインサーバーマシン内に設置してしまうのはどうでしょうか?

あ、出来ることなら、ProxyサーバーではなくDNSサーバーを構築したいですね。

電源もメインサーバーマシン内でもらうんです!

どうでしょうか?

LAN内DNSサーバーの構築(続き)

今朝早朝3時半まで頑張ったんですが、DNSサーバーBindはどうしても上手く動かせませんでした。

checkconf、checkzoneコマンドも使って、構文エラーはずい分と解消されたんですが、定義文がどうしてもエラーになるんです。

自分は、DDNSサービスを2つのサイトから受けていて、Webでアクセスする全く異なるフルドメイン名が計4つもあるんです。

これをDNSの定義文に書いて実行しても受け付けてくれないんです。(複数ドメイン名は受け付けない?)

もう、クタクタです・・・

しかし、いまだにiPhoneのhostsファイルを書き換えること(脱獄)はやる気になれません!

そこで、最後の手を使うことにしました。

LAN内にプロキシサーバーを立てる手です。

RADIOサーバーはWindows機で動かしていて、このWindows機のhostsファイルはすでに書き換えてあります。

このWindows機にプロキシアプリをインストールしてみることにします。

プロキシアプリは、CCproxyを使ってみました。

動かしてみると、今までの苦労がウソのように解決!!

昼過ぎにやっと食べ物も口にして、カミさんのAndroidスマホの設定もやって、少しのんびりしていました。

 

が・・・

そう上手くは済まないものですよね!

CCproxyサイトから「ライセンス認証をしなさい」と通知が来ました!

フリーソフトと思っていましたが、違ってたんですね。

で、これはアンインストール・・・

では、ApacheをWindows機にインストールして、ApacheをProxyサーバーとして稼働させればいいんじゃないか?

ちょっと大変そうだけど、ApacheはLinuxでちょっとは馴染んでるし・・・

 

やはり時間はかなりかかりましたが、Windowsのコンパネの「サービス」、「イベントビューア」も上手く使わせてもらって、なんとかApacheの最新版をインストールできました!

そして、恐る恐る最後の設定をしてから、アクセス!

あれー?

Apacheの初期画面が出るだけ!

またまたググって、Apacheでプロキシサーバーを構築しているサイトを見つけました。

Proxyサーバーは代理サーバーであって、ここを経由させるだけなんですね。

環境定義文(http.conf)に「via proxy」の記載が必要でした。

これで、Apacheをもう一度再起動して、WifiLAN内のスマホから祈るような気持ちでアクセス・・・

成功です! ついに完成しました!!

 

もちろん、出来たことは嬉しいんですが、

外で体を動かして汗ビショになってる方が気持ちいいですよね! ?

LAN内DNSサーバーの構築・・・

自宅エリアではスマホは 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時間は経ちましたが、まだ終わりが見えません・・・

せめて、原因とか見通しとかわずかでも掴みたい・・・ 

昨夜、DDNS関係、そしてハードウェアのトラブル!

昨夜遅く、突然外部からこのサイトへのアクセスが出来なくなりました!

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関連はともかく、ハードウェアがなぜこのような状況になってしまったのか?

単に、メモリに故障が発生しただけなら直っているんですが、他の要因ということもあり得ます。

機械が壊れかかったまま動いているという状況だと、あとあと非常にやっかいなことになるんです。

原因が分からないままだということと、他のハードウェアも巻き添えで故障する可能性もあるんですね。

また、サーバーに対して外部からの攻撃も、あり得ないことではなくなってきています。

最近はハードウェアの設定を変更するような極めて高度な攻撃もあるそうですから!

そこで、サーバーへの外部からのアクセスを制限するように、設定を数か所変更しておきました。

はあ・・・疲れましたね・・・

さあ、これでキチンと直ってくれたでしょうか・・・?