OpenWrtでゲスト用Wi-Fiを構築する、帯域制御(QoS)やCaptive Portalで店舗利用もできる!?

スポンサーリンク
OpenWRTルーター OpenWrtルーター
本記事はPRによる消費税込みの価格表示です
本記事はOpenWrt(21.02.3/23.05.0)で検証しています。

一般的な市販Wi-Fiルーターには多くの製品で「ゲスト用Wi-Fi」の機能があります。

自宅に遊びに来た友人・知人に気軽にインターネット接続を提供しながらも、自宅ネットワークの安全性を確保したWi-Fi接続の仕組みです。

OpenWrtルーターを自宅ルーターとして利用している場合、標準ではゲストWi-Fiの機能はありません。

この記事ではOpenWrtルーターをご利用の場合に、「友人・知人に気軽にインターネット接続を提供」できるゲストWi-Fiの仕組みを構築していきます。

ゲストWi-Fiの要件定義と基本設計

「ゲストWi-Fi」は一般的な市販ルーターで提供されている機能であり、「気軽に友人・知人にインターネット接続を提供する仕組み」ということになります。

「気軽に」とは自宅ネットワーク内の機器が安全である、ということであり、つまり以下の要件を満たすネットワークといえます。

これだけやりたい!

  • ローカルネットワーク(自宅ネットワーク)との分離
  • ゲストWi-FiのSSID隔離
  • 上位ネットワークへのアクセス禁止
  • IPv4のみ(面倒なので)

上記を「ゲストWi-Fiの要件」として、今回はOpenWrtルーターをベースにゲスト用Wi-Fiの仕組みを構築していきます。

現在の自宅ネットワーク構成

現在、我が家のOpenWrtルーターを中心としたネットワーク構成は以下の図のようになっています。

OpenWrtルーターは上位のルーター「NTTドコモhome5G専用ルーター」である「HR01」に接続しており、home5G回線を通じてインターネットへ接続しています。

また、OpenWrtルーター配下のネットワーク構成は「192.168.1.0/24」のネットワークで構築しています。

ゲストWi-Fi導入時のネットワーク構成

今回はゲスト用ネットワークとしてOpenWrtルーターに以下のネットワークを追加します。

ゲスト用ネットワークに接続したデバイスはインターネット利用のみが可能とします。

また、今回ゲスト用ネットワークへの接続はWi-Fiアクセスポイントによるもののみとし、有線LANによるゲストネットワーク接続は行いません。

要件定義

では、ゲスト用ネットワークの要件を整理します。

これだけやりたい!

  • ローカルネットワーク(自宅ネットワーク)との分離
  • ゲストWi-FiのSSID隔離
  • 上位ネットワークへのアクセス禁止
  • IPv4のみ(面倒なので)

ローカルネットワークとの分離

ローカルネットワーク(自宅ネットワーク)とは完全に分離します。

ゲストネットワークからローカルネットワークの機器へアクセスすることはできません。

ゲストWi-FiのSSID隔離

ゲストネットワーク内においても機器の相互通信をできないようにします。

上位ネットワークへのアクセス禁止

「ローカルネットワークとの分離」と同じ意味ですが、OpenWrtルーター配下のローカルネットワーク以外に自宅ネットワークセグメントが存在する場合には、このネットワークへのアクセスも禁止します。

我が家ではOpenWrtルーターの上位ルーターとしてNTTドコモのhome5G回線を使っているでの、home5G専用ルーター「HR01」によるネットワーク配下にOpenWrtルーターを接続しています。

この場合、OpenWrtルーター配下のローカルネットワークに加えて上位ルーター(HR01のネットワーク)へのアクセスも禁止します。

IPv4のみ(IPv6は使用しない)

ローカルネットワーク(自宅ネットワーク)ではIPv4/IPv6併用環境ですが、ゲストネットワークはIPv4のみとします。

IPv6があるとファイアウォール定義などが面倒で通信の漏れがあるとまずいので本記事ではIPv4のみとします。

なお、ローカルネットワークは「192.168.1.0/24」ネットワークなので、ゲストネットワークは「192.168.2.0/24」ネットワークとして定義します。

基本設計

OpenWrtでは標準ではローカルネットワーク(自宅ネットワーク)のみに対応しており、以下のような構成となっています。

OpenWrtでゲスト用Wi-Fi

つまり、ローカルネットワーク向けに「デバイス」「ブリッジ」「インターフェース」「ファイアウォール」が構築されているということです。

ゲスト用ネットワークの基本設計

今回は、ゲストネットワークはローカルネットワークから完全に分離する、という要件を満たします。

このため、「デバイス」「ブリッジ」「インターフェース」「ファイアウォール」をゲスト用に追加作成することで、既存のローカルネットワーク(自宅ネットワーク)とは完全分離する仕組みにします。

OpenWrtでゲスト用Wi-Fi

よって、ゲスト用ネットワーク構築のために本記事では以下の定義を行っていきます。

各種定義 ローカルネットワーク(既存) ゲストネットワーク(新規)
ファイアウォール lan guest
インターフェース LAN
※192.168.1.0/24
GUEST
※192.168.2.0/24
ブリッジデバイス br-lan br-guest
無線デバイス wlan0/1 wlan0-1/1-1

上記のように既存のローカルネットワーク(自宅ネットワーク)からは完全に分離したゲストネットワークを新規構築し、ゲストネットワークのファイアウォール「guest」を外部ネットワークのファイアウォール「wan」へ接続する、という構成です。

STEP① ゲストWi-Fi用デバイス登録

ゲスト用Wi-Fiをローカルネットワーク(自宅ネットワーク)と分離するために、ローカルネットワークが使っているブリッジデバイス(br-lan)とは別のゲスト用ブリッジデバイスを作成します。

ブリッジデバイスとは複数のデバイス(有線LANポート/Wi-Fiアクセスポイント)を束ねるための仕組みであり、ネットワーク機器で言うとスイッチングハブのような役割となります。

このゲスト用ブリッジデバイス配下にゲスト用ネットワーク(有線/Wi-Fi)を構築することで、完全にローカルネットワークとゲスト用ネットワークを分離することができます。

ゲスト用ブリッジデバイスの定義

ゲスト用のブリッジデバイスを作成します。

メニュー「ネットワーク > インターフェース」画面の「デバイス」タブ画面を開きます。

OpenWrtでゲスト用Wi-Fi

画面下の「デバイス設定を追加」ボタンを押下します。

OpenWrtでゲスト用Wi-Fi

デバイス設定画面で以下の情報を定義します。

デバイスタイプ “ブリッジデバイス”を一覧選択
デバイス名 ご自由に
※本記事では”br-guest”と設定
空のブリッジを起動 チェックする

上記情報を定義したら、「保存」ボタンを押下します。

以上でゲスト用ブリッジデバイスの作成は完了です。

ゲスト用ブリッジデバイスの効果

ブリッジデバイスとは「複数のインターネット接続口(有線LANポート/Wi-Fiアクセスポイント)を束ねる」デバイスです。

OpenWrtではインストール直後はローカルネットワーク(自宅ネットワーク)用のブリッジデバイス「br-lan」が定義されており、このブリッジデバイスにすべてのLANポートとWi-Fiスポット(SSID)が束ねられています。

今回、ゲスト用のブリッジデバイスをローカルネットワーク用とは別に定義し、ゲスト用の通信デバイス(今回はWi-Fiアクセスポイントのみ)を束ねる役目をします。

これにより、仮想ハードウェア的にゲスト用ネットワークをローカルネットワーク(自宅ネットワーク)とは分離する仕組みとしています。

STEP② ゲストWi-Fi用インターフェース定義

ゲスト用のブリッジデバイスを作成したので、次はゲスト用インターフェースを定義します。

インターフェースは「線を束ねるブリッジデバイス」に対して通信プロトコルを定義(プロトコルやIPアドレスなど)するものです。

ゲスト用Wi-Fiを定義するインターフェースも、ローカルネットワーク(自宅ネットワーク)から完全に分離します。

このため、ゲスト用のインターフェースを追加作成します。

ゲスト用インターフェースの作成

メニュー「ネットワーク > インターフェース」画面の「インターフェース」タブ画面を開きます。

OpenWrtでゲスト用Wi-Fi

画面下の「インターフェースを新規作成」ボタン押下します。

OpenWrtでゲスト用Wi-Fi

新規インターフェース定義画面で以下の情報を定義します。

名前 ご自由に
※本記事では”guest”
プロトコル 静的アドレス
デバイス 作成したゲスト用デイバス(本記事では”br-guest”)を一覧選択

上記の定義を行ったら画面下の「インターフェースを作成」ボタン押下します。

画面が詳細定義画面へ遷移します。

OpenWrtでゲスト用Wi-Fi

詳細定義画面で以下の情報を定義します。

ブート時に起動 チェックする
IPv4アドレス ゲストネットワークにおけるルーター本体IPv4アドレス
※本記事では”192.168.2.1″
IPv4ネットマスク “255.255.255.0”を一覧選択

IPv4アドレスはローカルネットワーク(自宅ネットワーク)で使っているIPv4アドレスとは違うネットワークアドレスを定義します。

次にゲストインターフェースに対するDHCP機能を有効にしておきます。

インターフェース定義画面の「DHCPサーバー」タブ画面へ移ります。

OpenWrtでゲスト用Wi-Fi

「DHCPサーバーをセットアップ」ボタンを押下します。

OpenWrtでゲスト用Wi-Fi

以上でゲストインターフェースにおけるDHCPの有効化が完了です。

上記情報を定義したら「保存」ボタン押下で終了します。

OpenWrtでゲスト用Wi-Fi

インターフェース一覧画面へ戻るので、画面下の「保存&適用」ボタンを押下して設定内容をルーターへ反映させておきます。

以上でゲスト用インターフェースの定義は完了です。

ゲスト用インターフェースの効果

LANインターフェースは仮想デバイス(br-lan/br-guest)に対してIPアドレスやファイアウォールなどの通信の仕組みを定義する単位となります。

OpenWrtではインストール直後はローカルネットワーク(自宅ネットワーク)用のインターフェース「lan」が定義されており、このインターフェース「lan」によりブリッジデバイス「br-lan」のデータ通信を定義しています。

今回、ゲスト用のインターフェースをローカルネットワーク用とは別に定義し、ゲスト用のインターフェース(br-guest)に対してデータ通信定義を行う役目をします。

これにより、データ通信の仕組み的にゲスト用ネットワークをローカルネットワーク(自宅ネットワーク)とは分離する仕組みとしています。

STEP③ ゲストWi-Fi用ファイアウォール定義

ゲスト用のブリッジデバイスとインターフェースを定義したので、ゲスト専用ネットワークが出来上がりました。

次はこのゲスト専用ネットワークが他のネットワーク(lanやwan)との通信ルール(ファイアウォール)を定義していきます。

ファイアウォール・ゾーンの定義

まずゲスト用インターフェース(guest)専用のファイアウォール・ゾーンを定義します。

メニュー「ネットワーク > ファイアウォール」画面の「一般設定」タブ画面を開きます。

OpenWrtでゲスト用Wi-Fi

画面下の「追加」ボタンを押下してファイアウォール・ゾーン定義画面を開きます。

OpenWrtでゲスト用Wi-Fi

ファイアウォール・ゾーン定義画面より以下の情報を入力します。

名前 guest
受信 拒否
※lan/wan(自宅ネットワーク/外部)からのアクセスを拒否
送信 許可
※wan(外部ネットワーク)へのアクセスを許可
転送 拒否
※lan(自宅ネットワーク)へのアクセスを拒否
対象ネットワーク “guest”を一覧選択
宛先ゾーンへの転送を許可する “wan”を一覧選択

以上の定義により、ゲスト用ネットワークは「ゲスト用ネットワーク内部から外部ネットワークへ出る通信のみ許可」という設定となります。

以上でファイアウォール・ゾーンの定義は完了です。

ファイアウォール・トラフィックルールの定義

ファイアウォール・ゾーンの定義により「外部からゲスト用ネットワークへのアクセスを拒否」と定義しましたが、一部例外があります。

「DHCP」「DNS」についてはゲスト用ネットワークから外部のDHCP/DNSを参照できる必要があります。

このため、ファイアウォール・ゾーンで定義した「外部からのアクセス拒否」に対して「例外ルール」を定義します。

OpenWrtでゲスト用Wi-Fi

外部DHCP許可の設定

DHCP参照で使う「UDP:67/68ポート」については例外で「許可」と定義します。

OpenWrtでゲスト用Wi-Fi

名前 ルール名称
※本記事では”Allow_Guest_DHCP”
プロトコル UDP
※”TCP”のチェックを外す
送信元ゾーン “guest”を一覧選択
宛先ゾーン “デバイス(入力)”を一覧選択
宛先ポート “67-68″を定義

外部DNS許可の設定

DNC参照で使う「TCP/UDP:53ポート」については例外で「許可」と定義します。

OpenWrtでゲスト用Wi-Fi

名前 ルール名称
※本記事では”Allow_Guest_DNS”
プロトコル TCP/UDP
※初期値のまま
送信元ゾーン “guest”を一覧選択
宛先ゾーン “デバイス(入力)”を一覧選択
宛先ポート “53”を定義

外部ネットワーク(WAN)拒否の設定

本記事の前提としての回線環境で、我が家ではインターネット接続はNTTドコモhome5Gを使っているので、本記事の対象となるOpenWrtルーターの上位にはhome5G専用ルーター「HR01」によるネットワークが存在します。

つまり、本記事対象のOpenWrtルーターのWAN側にはHR01ネットワーク(初期値:192.168.128.0/24)が存在する、ということです。

そして、ゲスト用ネットワークからこの上位ネットワーク(192.168.128.0/24)へアクセスは拒否する必要があります。

この定義も「ファイアウォール・ルール」として定義していきます。

OpenWrtでゲスト用Wi-Fi

ファイアウォール・ルール定義画面から以下の定義を行います。

名前 ルール名称
※本記事では”Disallow_Guest_WAN”
送信元ゾーン “guest”を一覧選択
宛先ゾーン “wan”を一覧選択
宛先アドレス “192.168.128.0/24″をカスタムルールより定義
アクション “拒否”を選択

以上の定義により「geestネットワークからwan(外部通信)を経由した192.168.128.0/24ネットワーク(つまりhome5Gルータのネットワーク)へはアクセス拒否、というルールとなります。

この定義内容は自宅のネットワーク構成に合わせて定義してください。

上位ネットワークが複数存在する場合にはアクセス拒否するすべてのネットワークアドレスを定義します。

一方で、OpenWrtルーターが直接ONU(またはVDSLモデム)に接続されている状態であれば、本定義は不要です。

ファイアウォール・トラフィックルールの反映

以上でファイアウォール・トラフィックルールの定義が完了です。

OpenWrtでゲスト用Wi-Fi

画面下の「保存&反映」ボタンより定義内容をルーターに反映させておきます。

STEP④ ゲストWi-Fi用アクセスポイント登録

ここまでの手順でゲスト用ネットワークの通信定義が完了しました。

最後にこのゲスト用ネットワークへ実際の通信デバイスを定義し接続していきます。

ゲストWi-Fi用アクセスポイントの定義

OpenWrtインストール直後にはすでにローカルネットワーク用のアクセスポイントが定義されています(ただし、無効状態)。

このローカルネットワーク用のアクセスポイントとは別にゲスト用アクセスポイントを定義します。

ゲスト用Wi-Fiとして公開するWi-Fiアクセスポイント(SSID)を作成し、ゲスト用インターフェース(guest)へ接続します。

メニュー「ネットワーク > 無線」画面を開きます。

OpenWrtでゲスト用Wi-Fi

上記「radio0/radio1」はそれぞれ5GHz/2.4GHzの無線機能であり、その下に定義されているのがそれぞれの無線帯域のWi-Fiアクセスポイント(ローカルネットワーク用)となります。

「radio0/radio1」の右の「追加」ボタンにより、それぞれの帯域のアクセスポイント(ゲスト用アクセスポイント)を追加作成していきます。

5GHz帯のゲスト用Wi-Fiアクセスポイント定義

まずは「radio0(5GHz)」の「追加」ボタンを押下します。

OpenWrtでゲスト用Wi-Fi

まず「デバイス設定」の「一般設定」タブより以下の設定を行います。

最大送信出力 “10 dBm(10 mW)”を一覧選択

また、「インターフェース設定」画面の「一般設定」タブより以下の設定を行います。

モード “アクセスポイント(WDS)”を一覧選択
ESSID Wi-FiアクセスポイントのSSID
※本記事では”0000Guest-5G”
ネットワーク “guest”を一覧選択

この画面の「ネットワーク」で「guest」を選択設定することで、今定義しているWi-Fiアクセスポイントはゲスト用インターフェース(guest)に接続されることになります。

OpenWrtでゲスト用Wi-Fi

次に「無線セキュリティ」タブからセキュリティ設定を行います。

セキュリティ設定はご自由に設定してください。

本記事では以下の設定を行いました。

暗号化 “WPA2-PSK”を一覧選択
暗号 “自動”を一覧選択
キー SSIDパスワードを設定

OpenWrtでゲスト用Wi-Fi

次に「詳細設定」タブからSSID間の通信の隔離を行います。

クライアント間の分離 チェックする

「クライアント間の分離」をチェックすることで、ゲスト用Wi-Fiの同じSSIDに接続しているデバイス間を分離し、デバイス間通信ができないようにします。

ここまでの設定が完了すると5GHz帯でのゲスト用Wi-Fiアクセスポイントの定義は完了です。

画面右下の「保存」ボタンで終了してください。

2.4GHz帯のゲスト用Wi-Fiアクセスポイント定義

次に2.4GHz帯のゲスト用Wi-Fiアクセスポイントを作成します。

定義内容および手順は5GHz帯アクセスポイントと同様に2.4GHz帯のゲスト用Wi-Fiアクセスポイントを定義してください。

※手順は割愛します。

Wi-Fiアクセスポイントの定義反映

5GHz帯および2.4GHz帯のゲスト用Wi-Fiアクセスポイントの定義が完了したら、画面右下の「保存&反映」ボタンを押下して作成したWi-Fiアクセスポイント定義をルーターに反映してください。

定義したSSID名でWi-Fiの電波が飛んでいることを確認してください。

以上でゲスト用Wi-Fiアクセスポイントの定義が完了しました。

ゲスト用Wi-Fiアクセスポイントの使い方

以上でゲスト用Wi-Fiアクセスポイントが完成しました。

ゲスト用Wi-Fiアクセスポイントへ接続した通信では以下のことができる・できない、という仕様になります。

ゲスト用Wi-Fiアクセスポイントでできること・できないこと

  • インターネット利用のみができる
  • ローカルネットワーク(自宅ネットワーク)へはアクセスできない
  • 上位ルーターのネットワークへもアクセスできない
  • 同じゲスト用SSIDに接続しているデバイス間での通信もできない

ゲスト用Wi-Fiの個人利用

自宅へ来た友人・知人にインターネット利用してもらうような個人利用においてはこの仕組みで十分でしょう。

SSIDとパスワードをわかりやすく(自分らしく?)しておくことで、友人・知人にも気軽に自宅のネットワークを提供することができます。

ゲスト用ネットワークの起動と停止

「友人・知人が来た時だけゲストネットワークを解放したい」という使い方もできます。

この場合は「ゲスト用インターフェースを停止する」という方法と「ゲスト用Wi-Fiアクセスポイントを無効化する」という2つの方法があります。

ゲスト用インターフェースの起動と停止

今回作成したゲスト用ネットワークは「guest」インターフェースに集約されています。

つまり「guest」インターフェースを停止することでゲスト用ネットワークは利用できないようになります。

ただし、インターフェースを停止してもゲスト用Wi-Fiアクセスポイントの電波は飛んでいるので、「ゲスト用Wi-Fiへの接続はできる」「でもインターネット利用はできない(ネットワークが停止されているから)」という状態です。

ゲスト用Wi-Fiアクセスポイントの起動と停止

ゲスト用Wi-Fiアクセスポイントも停止(電波を止める)場合はメニュー「ネットワーク > 無線」からゲスト用Wi-Fiアクセスポイントを「無効」にします。

また、「有効化」することで再度ゲスト用Wi-Fiアクセスポイントを利用可能(電波を出す)とすることができます。

OpenNDSによる接続制御とCaptive Portal

本記事ではここまでOpenWrt標準のネットワークであるローカルネットワーク(自宅ネットワーク)とは完全に分離したゲストネットワークを構築してきました。

通常、個人利用で「友人・知人が訪ねてきた時のためのゲストネットワーク」としては十分だと思います。

加えて、この仕組みを「飲食店などの店舗でのフリースポットサービス」として利用する場合には、さまざまな接続制御機能が必要となるでしょう。

たとえば「接続時の規約同意」「接続時間の制限」「通信速度の制限(QoS)」「営業時間(サービス提供時間)の設定」などです。

これらの通信制御を行ってくれるパッケージが「OpenNDS」であり、ここからはOpenNDSを使ってゲストネットワークに機能を追加していきます。

OpenNDSとは?

OpenNDSはゲストネットワークの外部通信(インターネット接続)を制御してくれるパッケージです。

今回、OpenWrt標準のローカルネットワークから完全に分離したゲストネットワークを構築しましたが、これにOpenNDSを導入することで下図のようにゲストネットワークのファイアウォール「guest」と外部ネットワークのファイアウォール「wan」の間を制御してくれます。

OpenWrtでゲスト用Wi-Fi

OpenNDSが制御してくれること

  • Captive Portal(接続認証の管理)
  • 帯域制限(QoS)
  • 接続時間の管理

OpenNDSのインストール

では、今回構築したゲストネットワーク環境を前提に、OpenNDSを導入して使ってみます。

まずはOpenNDSをインストールします。

メニュー「システム > ソフトウェア」からOpenNDSモジュールをインストールします。
OpenWrtでゲスト用Wi-Fi

インストールモジュール opennds

OpenNDSモジュールにはウェブインターフェース(LuCI)の機能はないので、インストール後の導入設定はSSHクライアントから直接OpenNDS定義ファイルを編集して行う必要があります。

OpenNDSをゲストネットワークへ接続する

OpenNDSはインストール時点ではOpenWrtの標準ネットワークである「LAN」インターフェースに接続される定義となっています。

今回、OpenNDSにより接続制御したいのはゲストネットワークのインターフェース「GUEST」なので、OpenNDSの定義を変更します。

OpenNDSは多くのOpenWrtモジュールのようにウェブインターフェース(LuCI)が用意されていないのでSSHクライアントから直接OpenNDS定義ファイルを編集していきます。


root@OpenWrt: cd /etc/config
root@OpenWrt:etc/config# vi ./opennds

↓"br-lan"部分を検索し"br-guest"へ変更する

        # GateWayInterface
        # Default br-lan
        # Use this option to set the device opennds will bind to.
        # The value may be an interface section in /etc/config/network or a devi
        # The selected interface must be allocated an IPv4 address.
        # In OpenWrt this is normally br-lan, in generic Linux it might be somet
        #
        #option gatewayinterface 'br-lan'
        option gatewayinterface 'br-guest'
        ########################################################################

※保存・終了し、openndsを再起動します。

root@OpenWrt:etc/config# /etc/init.d/opennds restart
root@OpenWrt:etc/config# 


OpenNDSの接続初期値は「br-lan」と定義されており、これはOpenWrt標準のローカルネットワークのブリッジデバイスです。

今回はOpenNDSをゲストネットワークへ接続したいので、本記事でゲストネットワーク用に作成したブリッジデバイス「br-guest」へ接続します。

オプション値 初期値 設定値
gatewayinterface br-lan br-guest

以上でOpenNDSをゲストネットワークへ接続しました。

OpenNDSでCaptive Portal

では、ゲスト用Wi-FiからOpenWrtルーターに接続してみましょう。

OpenWrtでゲスト用Wi-Fi

ゲスト用SSIDに接続すると自動的にブラウザが起動し、上図のように規約確認画面が表示されます。

この時点ではまだファイアウォール「guest」と「wan」は未接続状態であり、インターネットへの接続はできません。

「Accept Term of Service」ボタンを押下(規約に同意)することで、下図のような「認証しました」画面へ切り替わります。

OpenWrtでゲスト用Wi-Fi

認証完了することでゲストWi-Fiからインターネットへの接続が完了します。

認証画面の設定

OpenNDSでは標準で上記画面のような認証画面を用意していますが、実際にフリースポットとして使う場合には独自の画面レイアウトカスタマイズが必要ですね。

また、この認証画面には3パターンがあり、オプション定義で変更することができます。

ログインオプション 機能
モード0 なにもしない(ログイン認証しない)
※外部(サードパーティー)の認証・通信制御サービス(FAS)利用時に設定
モード1 ログイン確認のみ
※上図の画面遷移
モード2 氏名・メールアドレスを入力してログイン
モード3 独自ログイン画面でのログイン
※画面の開発が必要
モード0:外部認証サービス(FAS)

「モード0」の「何もしない」というのは「接続認証を行わない」ということではありません。

OpenNDS側で認証しないという意味であり、「認証は外部サービスに任せる」という場合のモードになります。

たとえば以下のようなサービスを利用し、ゲストネットワークの認証・接続制御のサービスを利用する場合です。

HotSpotSystem

Iron Wi-Fi

この場合はOpenNDS側での認証は行わず外部サービスへ転送し、外部サービスにより「接続認証」を行います。

ただし、当然ながらこの場合は別途「外部認証サービスに関する設定」が必要であり、「外部認証サービスに関する設定」がない場合には「モード0=モード1」として動作します。

モード1:ログイン確認のみ

OpenNDSの初期値として動作するモードであり、規約同意のみでログインするモードです。

OpenWrtでゲスト用Wi-Fi

規約を確認し同意(標準画面だと”Accept Terms”)することでインターネット接続が利用できるモードです。

モード2:氏名・メールアドレスを入力してログイン

規約確認に加えて利用者の「氏名・メールアドレス」の入力を必須としたログインモードです。

OpenWrtでゲスト用Wi-Fi

入力された氏名・メールアドレスはログとして残るので後で確認することはできます。

ただし、「氏名・メールアドレスが正しいか?」などの機能は(標準では)ありません。

モード3:独自テーマでのログイン

モード3では独自(ユーザー開発)の認証画面を利用します。

このため、別途利用者側で認証画面の開発が必要となります。

たとえば「フリースポット利用規約への同意⇒自社ホームページや自社Facebookページへの転送」などの流れになるかな?という感じです。

ログインモードの設定

ログインモードはOpenNDS定義ファイルにて選択定義します。


root@OpenWrt: cd /etc/config
root@OpenWrt:etc/config# vi ./opennds

↓"Login Option"を検索し帯域制御を設定する


       # Login Option
        # Default: 0
        # Integer value sent to PreAuth script as login mode
        #
        # opennds comes preconfigured for three basic modes of operation
        #
        # 0. If FAS is not enabled, then this functions as mode 1
        #
        # 1.Default Dynamic Click to Continue
        # The pre-installed dynamic login page is enabled by setting option logi
        # It generates a Click to Continue page followed by a info/advertising p
        # User clicks on ...Continue... are recorded in the log file /[tmpfs_dir
        #
        # 2. Username/Emailaddress Dynamic Login
        # The pre-installed dynamic login page is enabled by setting option logi
        # It generates a login page asking for username and email address follow
        # User logins are recorded in the log file /[tmpfs_dir]/ndslog/ndslog.lo
        #
        # 3. Use Theme defined in ThemeSpec path (option themespec_path)
        #
        option login_option_enabled '3'
        ########################################################################
※保存・終了し、openndsを再起動します。

root@OpenWrt:etc/config# /etc/init.d/opennds restart
root@OpenWrt:etc/config# 


OpenNDSで帯域制御(QoS)

ゲストネットワークを解放することで不特定多数の利用者が一斉に大容量ファイルのダウンロードを行うと、ローカルネットワークの通信に支障をきたすかもしれません。

この対処として、ゲストネットワークを利用するデバイスに対して帯域制御(QoS)を設定してみます。


root@OpenWrt: cd /etc/config
root@OpenWrt:etc/config# vi ./opennds

↓"Rate Quotas"を検索し帯域制御を設定する


        # Rate Quotas
        # Note: upload means to the Internet, download means from the Internet
        # Defaults 0
        # Integer values only
        #
        # If the client average data rate exceeds the value set here, the client
        # Values are in kb/s
        # If set to 0, there is no upper limit
        #
        # Quotas and rates can also be set by FAS via Authmon Daemon, ThemeSpec
        # Values set by these methods, will override values set in this config f
        #
        # Rates:
        #option uploadrate '0'
        #option downloadrate '0'
        option uploadrate '400'
        option downloadrate '400'
        #
        ########################################################################

※保存・終了し、openndsを再起動します。

root@OpenWrt:etc/config# /etc/init.d/opennds restart
root@OpenWrt:etc/config# 


OpenNDSの初期値ではゲストネットワークの利用者に対する速度制限は設けられていませんが、今回は「400KB/s(約3.125Mbps)」に制限してみます。

オプション値 初期値 設定値
uploadrate ‘0’
※制限なし
‘400’
※約3.125Mbps
downloadrate ‘0’
※制限なし
‘400’
※約3.125Mbps

初期値の状態(帯域制御なし)で以下の速度結果でした。

OpenWrtでゲスト用Wi-Fi

帯域制御(400KB/s=約3.125Mbps)後の通信速度は以下のようになりました。

OpenWrtでゲスト用Wi-Fi

ちょっと誤差があるようです・・・

定義ファイルの設定内容はゲストWi-Fiへのログイン時に適用されます。
すでにゲストWi-Fiにログインしている場合は再ログインしてください。

OpenNDSで接続時間制御

ゲストネットワークへの接続時間を制限してみます。


root@OpenWrt: cd /etc/config
root@OpenWrt:etc/config# vi ./opennds

↓"autyidletimeout"を検索し接続時間を設定する


       # authidletimeout is the time in minutes after which an idle client is d
        # ie the client has not used the network access for this period
        # Default 120 minutes
        #option authidletimeout '180'
        option authidletimeout '30'

        # Session Timeout is the interval after which clients are forced out (a
        # Clients will be deauthenticated at the end of this period
        # Default 1440 minutes (24 hours)
        # Example: Set to 20 hours (1200 minutes)
        #option sessiontimeout '1200'
        option sessiontimeout '180'
        ########################################################################

※保存・終了し、openndsを再起動します。

root@OpenWrt:etc/config# /etc/init.d/opennds restart
root@OpenWrt:etc/config# 


利用制限時間(sessiontimeout)を3時間、無通信時間(authidletimeout)を30分に設定してみました。

オプション値 初期値 設定値
authidletimeout ‘120’
※2時間
’30’
※30分
sessiontimeout ‘1440’
※24時間
‘180’
※3時間

ゲストネットワークへのログインから3時間後、または無通信が30分継続、で自動的にログアウト(インターネット接続を切断)します。

タイムアウトで自動切断されても、再度Wi-Fi接続からログインするとゲストネットワークの利用が可能です。

OpenNDSでゲストネットワークをカスタマイズ

このように本記事で構築したゲストネットワークに加えてOpenNDSを導入することでゲストネットワークからインターネットへの接続制御が自由自在になります。

OpenNDSには非常に多くの機能があり個々にパラメーターを設定することで、ゲストネットワークとインターネット接続の接続制御が動的に管理できるようになります。

OpenNDSは非常に多機能であり、ドキュメントを参考にしながら個別にカスタマイズしてみるとよいでしょう。

OpenNDS Documentation | OpenNDS

まとめ、OpenWrtルーターでゲストネットワーク

今回、簡単にOpenWrtルーターでのゲストネットワークを構築してみました。

通常のローカルネットワークから分離するだけのゲストネットワークは簡単に構築できるのですが、ゲスト用として不随する機能もたくさんあることに気づきました。

思えば、市販のWi-Fiルーターはよくできてるなぁ、と思う次第です・・・

ゲストネットワークの利用認証「Captive Portal」

個人利用でのゲストネットワークであれば、ローカルネットワークと完全分離できる環境が構築できればそれで充分でしょう。

しかし、店舗利用などでお客様にフリースポットとして提供する場合には必要と思われる機能がまだまだたくさんあります。

第一がインターネット接続利用のための承認(規約・規定への同意)です。

これは「Captive Portal」と呼ばれる機能で、Wi-Fiスポットに接続した直後にブラウザが自動起動して規約への同意を促す機能ですね。

この規約等に同意することではじめてインターネットへ接続できる、という仕組みが必要です。

ゲストネットワークの利用制限

ゲストネットワークを解放(提供)する場合、多くの場合で「利用制限時間」が設けられます。

たとえば「1度の利用で3時間まで」などの利用制限の仕組みです。

この仕組みも「iptables」や「nftables」の機能で実現することが可能です。

すべてが揃ったOpenWrtルーター

今回は素の(バニラな)OpenWrtルーターに対してゲストネットワークを構築してきましたが、OpenWrtを採用したうえでゲストネットワークにも標準対応した市販ルーターがGL.iNetルーターです。

香港のネットワーク機器メーカーであるGL.iNetが製造・販売しているルーターですが、最初からゲストネットワーク機能に加えて「Captive Portal」機能や「利用時間制限」の機能などを含んでいます。

ただし「Captive Portal」機能については利用者の使い方次第であり、GL.iNetルーターで提供されているのはその基盤となる仕組みまでであり、認証機能などの作りこみは利用者側で必要となります。

おすすめのGL.iNetルーター

GL.iNetルーターは非常に多くの似たような外見の製品が販売されています。

そして、ファームウェアが「現時点で最新機能を盛り込んだバージョン4系列」と「安定板のバージョン3系列」の製品に分かれています。

このうち、「Captive Portal」や「利用時間制限」の機能を持っているのは「3系列ファームウェア」を搭載した製品になります。

※残念ながらファームウェアバージョン4系列では「Captive Portal」機能は廃止されました。

据え置き型でおすすめのGL-AX1800(Flint)

ファームウェアバージョン3系列搭載で据え置き型ルーターが「GL-AX1800(Flint)」です。

GL.iNet GL-AX1800(Flint) WiFi 6 ルーター デュアルバンド Gigabit 無線LAN 600Mbps(2.4GHz)+1200Mbps(5GHz) 802.11 ax フルギガポート OpenVPN&WireGuard セキュリティ WPA3対応 MU-MIMO IPv6 OpenWrt USB3.0
GL.iNet
【WiFi 6対応】1.8 Gbps Wi-Fi 6スピードで流暢な4Kストリームメディア、ゲーム、ビデオ通話などのサービスをお楽しもう。600Mbps (2.4GHz)+1200Mbps(5GHz)のWi-Fiスピード。使用の前に最新のファームウェアをダウンロードください:https://dl.gl-inet.com/?model=ax1800

安定した据え置き型のデザインでファームウェアバージョンは3系列に加えて最新機能の4系列も提供されています。

3系列/4系列どちらのファームウェアでも利用することができます。

そして、3系列のファームウェアをインストールすることで「Captive Portal」「利用時間制限」などのゲストネットワーク機能が利用できます。

Captive Portal機能が使える3系列ファームウェア搭載機

GL-AX1800(Flint)以外にファームウェア3系列を搭載したGL.iNetルーターをご紹介します。

3系列ファームウェアを搭載しながらもハードウェア性能が比較的高性能なのが「GL-MT1300(Beryl)」です。

GL.iNet GL-MT1300 (Beryl) VPN 無線LAN セキュリティ対策 トラベル ギガビット ワイヤレスルーター デュアルバンドAC1300 400Mbps (2.4GHz) + 867Mbps(5GHz) Wi-Fi ポケットサイズ ホットスポット IPv6対応 Tor MicroSD スロット USB3.0 Wi-Fi 中継 USBテザリング 日本語設定画面
GL.iNet
【デュアルバンド ワイヤレス ルーター】最大867 Mbps(5 GHz)+ 400 Mbps(2.4 GHz)優れたデュアルバンド無線LANスピード。同時に40台のワイヤレスデバイスを接続。デザリング対応。パブリックネットワーク(有線/無線)をプライベートWi-Fiに転換して、サーフィンの安全性を実現。

標準搭載のファームウェアは3系列ですが、現在ベータ版として4系列ファームウェアも提供されていることから、GL-AX1800(Flint)と同様にどちらのファームウェアも利用できます。

また、GL-AX1800(Flint)やGL-MT1800(Beryl)よりハードウェア性能は落ちますが、同様に3系列ファームウェアを搭載し、そして安く購入できるのが「GL-SFT1200(Opal)」です。

GL.iNet GL-SFT1200 (Opal)トラベルVPNルーター∣セキュリティ ギガビット 無線LAN∣AC1200 300Mbps (2.4GHz) + 867Mbps (5GHz) Wi-Fi∣ポケットサイズ ホットスポット Gigaポート IPv6 Wi-Fiリピーター USB2.0
GL.iNet
【AC1200デュアルバンド無線ルーター】300Mbps (2.4GHz) + 867Mbps (5GHz)の無線速度。2.4GHzバンドは電子メールやウェブブラウズなどの簡単なタスクを扱い、5GHzバンドはゲームや4Kビデオストリームなどの帯域幅密集型タスクを扱う。【安心サポート】何らかが起こった場合、サポーターと連絡ください!メールアドレス:support@gl-inet.com。より詳しい説明は【docs.gl-inet.com】をご参照ください。

GL-SFT1200(Opal)も標準搭載は3系列ファームウェアですがベータ版として4系列ファームウェアも提供されています。

価格が安いのでお試し利用としておすすめの機種です。

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