コンピューター好きのブログ

主にコンピューター・ラズパイと電子工作・オーディオ関連の記事を書いています。

LAN内のサーバーにドメイン名指定のURLでアクセスできないときの対処方法

我が家は家計簿を自宅サーバーのデータベースに格納し、WebサーバーとPHPのプログラムを使ってブラウザで閲覧できるようにしています。

各費目ごとに予算と実績が見れるだけのシンプルなページです。

 

この家計簿システムのサーバーが自宅LAN内にあり、自宅内でも自宅外でもドメイン名指定のURLでアクセスができるようになっています。ドメイン名はDDNS(動的DNS)による割り当てです。

 

しかし、最近ルーターをELECOM WRC-2533GSTに変えたら、自宅外はOKだけど自宅内はNGという現象が発生するようになりました。

 

少し調べたところ、どうやらルーターがヘアピンNATとかNATループバックと呼ばれる機能に対応していないといけないようで、以前使っていたルーター(ELECOM WRC-1167GHBK2とWRC-1750GHBK2-I)はたまたま対応していたようです。

ヘアピンNATについては下記のサイトで丁寧に解説していただいています。

https://greenworksjp.com/blog/hairpin-nat/

 

上記のサイトに記載がありますが、ヘアピンNATに対応していないルーターを使う場合、ドメイン名ではなくプライベートIPアドレスでURLを指定する必要があります。

 

我が家では色んなパターンでこの事象の対処を行いましたのでご紹介します。

デスクトップPCの場合

デスクトップPCの場合は自宅外に動かすことがまれだと思われますので、素直にプライベートIPアドレスでアクセスするようにします。

hostsファイルをいじるという手もありますが、すべてのデスクトップPCのhostsファイルを変更するのも面倒なので不採用としました。

ノートPCの場合

自宅ではプライベートIPアドレス、外出先ではドメイン名でアクセスする必要がありますので、自宅用(プライベートIPアドレス)、外出先用(ドメイン名)それぞれのブックマークを登録しておきます。

スマホ・タブレットのブラウザの場合

ノートPCと同じです。

スマホ・タブレットのアプリの場合

は?アプリ?と思われたかもしれませんが、実はカミさんがブラウザの使い方を知らないため、下記のような家計簿サイトを参照する専用のAndroidアプリを作っています。

家計簿アプリ

家計簿アプリ

Androidでは簡単にWeb参照アプリが作れるWebViewという便利な部品がありまして、それに渡しているURLがドメイン名指定になっているのです。

自宅ではWifiを使うので、このままだといちいちWifiを切らないと家計簿が見れません。

 

そこで、Wifi接続時のIPアドレスを取得し、 LAN内であればプライベートIPアドレスでURLを指定するように修正しました。これで自宅でも外出先でも家計簿が見れます!よかった~

Wifi接続時のIPアドレス取得方法は下記のサイトを参考にさせていただきました。

https://gist.github.com/myamamic/5046776

ただし、我が家と同じネットワークアドレス(192.168.0.n)を使うWifiに接続した場合は、プライベートIPアドレスで接続しにいってしまい、アクセスに失敗します。。が、自宅以外のWifiにつなぐことはそう無いの大丈夫でしょう!

 

以上、LAN内のサーバーにドメイン名指定のURLでアクセスできないときの対処方法でした(^▽^)/

おまけ(家計簿システムの実装)

ちなみに家計簿システムの実装は下記のようになっています。

1.データ入力

 LibreOfficeのCalcで作った家計簿をcsv形式で保存。

2.データ登録

 Pythonアプリでcsvファイルを読み込み、MySQLに登録。

3.Webサーバー側

 Docker上の Apache + MySQL + PHP で稼働。MySQLに入っている家計簿データをPHPで取得&計算してHTMLで出力。

 

本当はCalcでいちいちcsv形式で保存するのが面倒だったので、Calc標準のods形式で保存したファイルを自動でcsvに変換したかったのですが、やり方が分からず断念しました。

(2020/08/30追記)

最近PythonでExcelファイル(.xlsx)のデータを操作できることを知りました。

そこでCalc標準のods形式ではなくExcel互換形式(.xlsx)で家計簿を保存し、そこから自作のPythonアプリでcsvに変換するようにしました。

これでいちいちcsv形式にする手間が省けます。いやー、世の中には便利なものがありますね。ホントありがたいです。

下記のサイトを参考にさせていただきました。

tonari-it.com

 

また、データ入力をCalcにしたのは私が表計算ソフトに慣れていたからです。Webからの入力も考えましたが、使い勝手のよいインタフェースにする自信が無かったので。。

 

(c) 2018 toomath