ヤマハルーターでポート開放するには?自宅サーバー・ネットワークカメラを公開してみよう!

パソコン

自宅サーバーやネットワークカメラをインターネット上に公開したい場合など、ヤマハルーターでポート開放する手順を紹介します。

ちなみに自分もヤマハルーターを用いて、ラズパイのWebサーバーを公開しています!

なお、ヤマハルーターであれば、どのモデルでも当記事の方法でポート開放できます。

例として、以下のような環境を想定して、Webサーバーのポート(TCP80とTCP443)を解放する場合について、解説していきます。

ネットワーク構成図
  • ルーターのローカルIPアドレスは192.168.100.1
  • サーバーのローカルIPアドレスは192.168.100.2
  • サーバーのTCP80番と443番を公開する
管理者モードへログインしておく

ヤマハルーターの設定を行うには、TelnetやSSHで接続したうえで、管理者モードにログインしておく必要があります。設定の前にadministratorコマンドを実行し、管理者モードになっておきましょう。

$ administrator

ヤマハルーターには補完機能がついています。コマンドの一部だけでも、実行するコマンドが絞り込める場合は実行することができます。例えば、「ad」とだけ入力してEnterキーを押すだけで、administratorコマンドが実行されます。

管理者モードに入ると、プロンプトが$から#に変わります。

スポンサーリンク

【手順1】現在の設定を確認しよう

この記事では、手順を先に記しています。解説については、手順の後に書いてありますので、適宜参照してください。

ルーターは使用環境によって設定内容が異なります。したがって、最初にどのような設定がなされているか確認する必要があります。

まず、show configコマンドを実行して、設定内容をすべて表示させてください。show configコマンドを実行すると、ルーターの設定内容がすべて書き出されます。

ポート開放に必要な情報は、

  • インターネット接続に使用しているPPのID
  • それに対応するNATディスクリプタのID

の2つです。

はじめに、PPPoE接続に使用しているPP(Point-to-point接続)のIDを確認しましょう。

# show config
ip route default gateway pp 1

ip route default gateway pp 1となっているので、インターネット接続に使用しているPPのIDは1であることがわかります。

次に、pp1のコンフィグを確認し、使用しているNATディスクリプタのIDを確認してください。

pp select 1
 pppoe use lan2
 ip pp nat descriptor 1
(中略)
nat descriptor type 1 masquerade

ip pp nat descriptorにつづけて、NATディスクリプタの番号が表示されます。ここでは、IDが1のNATディスクリプタが適用されていることがわかりました。

以上をまとめると、

  • PP:1
  • NATディスクリプタ:1

となります。

スポンサーリンク

【手順2】静的IPマスカレードを設定する

手順1で求めた情報をもとに、サーバー(ここでは192.168.100.2)にポートTCP80とTCP443を転送するように設定していきます。

ポートの転送には、nat descriptor masquerade staticコマンドを使用します。このコマンドを使用することで、外部からのアクセスを特定のローカルサーバーに転送するようにすることができます。

次のコマンドを入力してください。

# nat descriptor masquerade static 1 1 192.168.100.2 tcp 80
# nat descriptor masquerade static 1 2 192.168.100.2 tcp 443

書式は次のとおりです。

nat descriptor masquerade static nat_descriptor id inner_ip protocol [outer_port=]inner_port

nat descriptor masquerade staticにつづけて、NATディスクリプタのIDを指定します。手順1でNATディスクリプタのIDは1であることがわかったため、ここでは1を指定します。

2番目には、NATディスクリプタごとのIDを指定します。通常は連番で指定しておけばOKです。

3番目の引数には、転送先のローカルIPアドレスを指定しておきます。ここでは公開したいサーバーが192.168.100.2であるため、それを指定しています。

4番目、5番目の引数には、プロトコルとポート番号を指定します。

ポート番号のかわりにニーモニックを指定することもできますので、次のようにコマンドしても構いません。

# nat descriptor masquerade static 1 1 192.168.100.2 tcp www
# nat descriptor masquerade static 1 2 192.168.100.2 tcp https

解説

このコマンドの意味をもう少し詳しく解説していきます。

まず、PPPoEによるインターネット接続をしている場合、ほとんどのケースでIPマスカレードを使用していることと思います。

IPマスカレードとは、内部にあるマシンのIPアドレスをルータのグローバルIPアドレスと相互変換する機能のことです。「NAPT」とも呼ばれているもので、ローカルのマシンからインターネットにアクセスがあると、ローカルとグローバルのアドレス・ポート番号が自動的に結び付けられます。

ヤマハルーターのコマンド画面スクリーンショット
show nat descriptor addressコマンドを実行すると、どのマシンにどのポートが結び付けられているか確認できます。

アクセスされたサーバーは、グローバルIPアドレスを有しているルーターにレスポンスを返し、レスポンスを受け取ったルーターは結び付けられているローカルマシンへそのレスポンスを転送するようになっています。これにより、1つのグローバルIPしかなくても、内部の複数のマシンからインターネットを使用することができるようになっているのです。

俗に言う「ポート開放」とは、IPマスカレードによる結びつけを固定することを意味しています。外部から特定のポートにアクセスがあった場合、必ず特定のローカルマシン(サーバー)に転送するようにしておくことで、インターネット側からローカルにあるサーバーを利用できるようにしています。これがポート開放のメカニズムです。

ヤマハルーターのコマンド画面スクリーンショット
このように固定のIPマスカレードが設定されます。

NATディスクリプタというのは、IPマスカレードを管理する単位のことです。ヤマハルーターでは、IPマスカレードの設定をNATディスクリプタという単位で管理します。

【手順3】フィルタを作成する

次にフィルタを作成します。

フィルタはip filterコマンドを使用して作成できます。

外部から来たパケットがローカルサーバー(192.168.100.2)に到達できるようにするため、次のコマンドを実行します。

ip filter 1200 pass * 192.168.100.2 * * 80,443

ip filterコマンドの書式は次のようになっています。

ip filter filter_num pass_reject src_addr[/mask] [dest_addr[/mask] [protocol [src_port_list [dest_port_list]]]]

書式を見るとややこしいのですが、まとめると次のような形となります。

ip filter <ID> <pass/reject> <送信元IPアドレス> <宛先IPアドレス> * * <ポート番号>

ここでは

  • インターネット上のマシン(すべてのグローバルIP)からなので
    →送信元IPアドレスには「*」
  • サーバーマシンのIPアドレスは192.168.100.2なので
    →宛先IPアドレスは「192.168.100.2」
  • ポートはTCP80と443なので
    →ポートは「80,443」もしくはニーモニックで「www,https」

とします。IDは任意です。(※ただし、ほかのフィルタと被っていると、上書きしてしまうので注意してください。)

ポイントは宛先のIPアドレスをサーバーのローカルIPに設定するところです。ヤマハルーターは、NATディスクリプタを通ったあとでフィルタリングします。よって、フィルタに至った時点では、すでに宛先はサーバーのローカルIPアドレスに変換されています。そのため、宛先のアドレスにはサーバーのローカルIPアドレスを指定する必要があるのです。

なぜフィルタの設定が必要なのか?

静的IPマスカレードを設定しただけでは、外部から内部にあるサーバーへアクセスすることはできません。アクセスを許可するフィルターの設定が必要となります。

ヤマハルーターでは、外部からのパケットは次のような流れで処理されています。

ヤマハルーターのパケットの処理順について 図

外部から送られたパケットは、はじめにIPマスカレードにより処理を受けます。手順2で静的IPマスカレードを設定していると、外部のパケットは設定されていたプライベートIPアドレスを持つマシンへ転送されます。

しかし、その後にフィルターによる処理を受けます。フィルターとは、いわゆるファイアウォールに該当するもので、外部からの意図しないアクセスを拒否する役目を果たします。基本的に明示されていない外部から(グローバルIPから)のアクセスはデフォルトで拒否される仕組みになっているため、サーバーを公開したい場合は、外部からサーバーへのパケットは通すように設定する必要があります。

【手順4】フィルタをPPPoEに適用する

手順3で作成したフィルタをpp1のin側に適用します。

ip pp secure filter in 1200 200000 200001 200002 ...(以下略)

作成したフィルタのID(ここでは1200にしました)をpp1ip pp secure filter inにつづけて指定します。

ポイントは最初に適用することです。

in側のフィルタは指定した順番で適用されます。通常、in側のフィルタの最後には、すべてをrejectするフィルタが設置されます。これより後に許可するフィルタを適用しても、まったく意味がありません。よって、先頭に適用しておくことをおすすめします。

これにより、外部からサーバーへアクセスできるようになりました。

まとめ

いかかでしたか?

設定が完了したら、試しにポート開放チェックツールでチェックしてみましょう。

ポートチェック【外部からポート開放確認】
サーバー管理者用の支援ページです。管理中のサーバーが外部からPortアクセス可能かをリアルタイムにチェック確認できます。

アクセスする際にはサーバーのローカルIPではなく、ルーターのグローバルIPを指定することに注意してください。

仕組みが理解できていないと、何が何だか分からない方も多いかもしれませんが、設定しているうちにわかるようになってきます。今回の方法はWebカメラや各種IoT機器のグローバル公開にも使用できます。これらの機器をお持ちの方は、ぜひチャレンジしてみてください。

もちろんサーバー側のセキュリティ対策も忘れずに!

コメント

  1. トマト より:

    とても参考になりました。ありがとうございます。

タイトルとURLをコピーしました