ヘアピンNAT搭載YAMAHAルータが解決 宅内サーバー搭載としてのオートロックシステム

2023年11月17日エントランスシステム

以前の記事で、筆者テック大家さんが所有する物件に導入したオートロックシステムCometli製SENSEについて書きました。

この記事の中で、導入したシステムを動作させるためにヘアピンNATという機能を持ったルーターが必要、という内容を紹介をしています。

そこで本記事では、ヘアピンNAT(別名、NATループバック)の詳細、特に必要になるユースケースと、実際のルーターの設定についてまとめます。

建物内部のサーバーとオートロックシステム

筆者、テック大家さんは所有物件にオートロックシステムを導入しました。見た目も美しい、イタリアのComelit社のSENSEというモデルです。以前の記事でこのオートロックシステムがIP接続をしてインターネット経由で入居者の呼び出しに対応できる、という内容をお伝えしました。

このシステムについておさらいしますと、SENSEは建物内部に設置し、入居者が使うフリー・インターネットと同じLANにIP接続します。この機器自体がIPネットワーク上でサーバーとして振る舞うことになります。ただし、サーバーとして動作させるために、館内に設置しているルーターにちょっとした設定が必要になります。ここで、ネットワークの技術的な知識が必要になるわけです。

一般的に、家庭用にルーターを設置してインターネット回線を利用するとNAT(Network Address Translation)という機能が働きます。これは、家庭内のLANと外部のネットワークのアドレス体型を変換するものです。つまり、家庭内LANではローカルIPアドレスを使用し、外部のサーバーへアクセスする際はLANからルーター(NAT)を経由してアドレスを変換してもらうことで正しく通信できるようにしています。

しかし、NATのお陰で物事がややこしくなるケースがあります。それは、家庭内LANに宅外からインターネット経由で接続可能なサーバーを立てるような場合です。ルーターにポートフォワーディングの設定が必要になります。この辺の技術的な内容は以前書いたポートフォワーディングの詳細記事にゆずりましょう。

LAN外部からオートロックシステムに接続するシナリオ

オートロックシステムSENSEでは、建物のエントランスにある呼び出しボタンで、入居者のスマホにつながります。外出していても呼び出しを受けられるので、入居者から好評です。

このような仕組みのため、入居者のスマホが4G回線など公衆無線回線経由で、建物のネットワークLAN内のオートロックにつながる必要があります。上述のポートフォワーディングが必要になるのはそのためです。

このシナリオを概念図で示すと、以下のようになります。

図1: SENSEに外出先からアクセスするシナリオ

スマホから、館内のサーバー(オートロックシステムSENSE)直接ではなく、館内設置のルーター(NAT)のWAN側ポートアドレスを指定してアクセスします。

WAN側ポートアドレスは、グローバルなIPアドレスです。グローバルIPアドレスであれば、それが固定で割当られたのか、動的なものなのかは関係ありません。

このシナリオで、ポートフォワーディングの設定が必要になってきます。

内部(LAN)からオートロックシステムに接続するシナリオ

一方、入居者が帰宅して自分の部屋で館内のフリーWiFi(館内LAN)につなぐとどうでしょう。

入居者のスマホも、オートロックシステムも同じLANに接続されているためローカルのIPアドレスでアクセスできます。この時はポートフォワーディングの設定は不要です。単純なローカルネットワーク内部の通信になるからです。

図2: SENSEに館内のWiFiから、ローカルアドレスでアクセスするシナリオ

館内のスマホからはローカルIPアドレス(上図の場合は、192.168.0.2)を指定すれば直接サーバー(オートロックシステム)につながります。

ところが、ここに落とし穴があります。

ヘアピンNATで解決したい課題

上の図1、図2で示したシナリオには一つ課題があります。それは、入居者が接続するネットワークによってオートロックのIPアドレスを変えなければならないということです。

図3: ヘアピンNATで解決したい課題

言い換えると、外出したときと帰宅したときで設定を変更する必要があるのです。それはあまりにも不便ですよね。

そもそも、SENSEを使うためのCometli製のアプリで指定するサーバーアドレスは一つです。以下がその画面で、きわめてシンプルですね。

この設定の意味するのは、スマホが館内のWiFiのネットワークにいようと、外出先でドコモ回線につながっていようと、オートロックシステムには同じアドレスを指定すべし、ということ。

ならば、世界中で一意に決まるNATのWAN側アドレスでLAN内のオートロックシステムにつながるようにしたい、というわけです。図にすると、以下のようなイメージです。

図4: ヘアピンNATを使った呼び出し方法(LAN内部からWAN側アドレスを指定する)

ところが、通常のNATではこのような動作にはなりません。NATが意識してこの経路のデータ転送をしない限り。

この経路の通信こそ、ヘアピンNAT(NATループバック)と呼ばれる機能のなせるワザです。

ヘアピンNATが使えると、LAN内の機器からLAN内の別の機器へ、NATのWAN側アドレスとポート番号で通信でるようになります。これがやりたかったことです。もちろんポートフォワーディングとセットで使うことになりますが。

ちなみに、ヘアピンNATの名前の由来は、図4内の赤い矢印のようカーブしてしいる形が、髪を留めるヘアピンの形に似ているかららしいです。ほんとうなんでしょうか…

ヘアピンNATが不要なケース

以前の記事でも示したのですが、実はこのヘアピンNAT。オートロックシステムSENSEの導入で、必ずしも必要ではありません。

例えば、以下のようなネットワーク構成であれば、ヘアピンNATがなくても問題ありません。

図5:SENSE導入のネットワーク構成の理想形(?)

この構成ではインターネット回線を2本用意しています。一本はオートロックシステムに使い、もう一本を入居者向けのネットワーク回線としています。

これなら入居者のLANからサーバーへのアクセスは一旦インターネットを経由することになります。LANからの通信経路は、公衆回線(4Gなど)経由のシナリオと同様になるわけです。この場合、SENSEネットワークの方のNATのWAN側アドレスを使ってサーバーに接続可能できるわけです。

ところが、感のいい方はお気づきでしょう。この構成ではランニングコストが上がるというデメリットがあります

それほど多くのお客さんが来るわけでもない賃貸物件で、入居者呼び出しの待ち受けのためだけにもう1回線のインターネットの契約をして月々の支払いをしなければなりません。固定費削減が好きなテック大家さんとしては取れない選択肢です。そりゃあ、ルーターを買い換えてでもヘアピンNATを導入するでしょう。

対応ルーターの情報は少ない?

当初筆者テック大家さんは、NECの家庭向けのハイエンドモデルを自物件のメインルーターにしようと考えていました。ところがこのルーターを設置したところヘアピンNATには対応していませんでした。LAN内の機器からルーターのWAN側アドレスにアクセスしても、LAN内のサーバーに接続させてくれないのです。設定を調べてみてもヘアピンNATらしき設定はありませんでした。ポートフォワーディングは設定可能でした。

ネットで調べると、以下のような対応ルーター一覧をネットで公開されている方もいらっしゃいます。これを観る限り、メーカーによっても機器によっても対応状況はさまざま。しかも、対応状況がわかりにくいときています。

筆者の場合は、結局ルーターを買い直しました。Comelitの代理店のナカヨさんに教えていただき、YAMAHAの業務用ルーターRTX830を購入するに至ったのです。

created by Rinker
ヤマハ(YAMAHA)
¥49,800(2024/04/20 15:19:02時点 Amazon調べ-詳細)

YAMAHAルーターRTX830の設定

YAMAHA RTX830では、ヘアピンNATの設定ができます。このモデルはWebベースの設定画面もあるのですが、TELNETコマンド(Linux/Mac等でターミナルで使うコマンド)で設定するのが便利です。

LAN内部からルーターのIPアドレスを指定して、telnet 10.0.0.1などのようにアクセスするとコマンドラインプロンプトが出てきて、adminコマンドで管理者になります。そこで、show configコマンドで設定内容を確認できます。

ヘアピンNATの設定は、YAMAHAが公開しているサイトで複数のユースケースでの設定例がみられます。とても便利ですね。以下の内容をご覧ください。

筆者の場合は、上記ページにある、PPP接続+動的IPアドレスを使ったユースケースで対応できます。「6-2. NAT の内側にある PC から同じ NAT の内側にあるサーバーに、NAT の外側アドレスで接続する (PPPoE(動的グローバル IP アドレス)+ ネットボランチ DNS)」という事例がほぼそのまま当てはまります。

この中で以下のコマンドのhairpin=onがミソです。これがヘアピンNATを有効にするという設定です。単純明快、名前の通り!

nat descriptor type 1 masquerade hairpin=on

ちなみに、ルーターのWAN側アドレスが動的IPアドレスの場合はもうひと工夫必要です。YAMAHAルーターだと「ネットボランチDNS」という表現で説明していますが、要は動的なIPアドレスに固定的な名前を付ける機能を使う必要があります。ダイナミックDNSと言ったりもします。ダイナミックDNSに関しては以下の記事で詳しく解説しておりますので、合わせてご覧いただけると嬉しいです。

では本日はこの辺で。

賃貸物件のネットワーク構築で、なにか困ったことがあったらお気軽にお問い合わせください。

プロフィール

テック大家さん
ソフトエンジニア兼不動産オーナー。
某超有名日本メーカーにおいてソフトウエア開発畑を30年近く勤務。
かつてはWindowsのアプリ開発や、組み込み機器のソフト開発を行う。プロジェクトマネジメント・オフショア開発・要件管理などの経験あり。現在は、個人開発で、JavaScript/TypeScript/React/Express、PHP/Laravel、Firebase、Google cloud、Arduino(C++)などでプログラミングを楽しむ。
サラリーマンの傍ら不動産経営を始め、現在、1棟モノの賃貸4物件を東京・神奈川に所有。夫婦でおよそ20年の賃貸経営の実績。
最近の物件では、入居者向けフリーWiFiなど、テック系の設備はDIYで自ら構築。
海外MBA取得。