MikroTik hAP acのUPnP設定

MikroTik hAP acのUPnP設定をチェックしていきます

最初に

UPnPはSkypeやネットゲームなどで使用される機能で
簡単にいうとルータのNAT超え設定を手動で行う必要がなく
利用するアプリ側で自動設定できる機能です
最近ではPC以外でもNASやレコーダー・家庭用ゲーム機など様々な場面で利用されてます

今回扱っているMikroTik hAP acは
UPnPに対応してますので家庭用にも十分利用できます
ただデフォルトはオフになっているので利用するための手順を
Winboxを使って紹介していきます

UPnPの有効化

設定画面はIP→UPnPにあります
defconf状態ではEnabledにチェックされておらず無効なのがわかります

UPnPを有効化するためEnabledにチェックを入れて「Apply」を選択します

次はUPnPのインタフェースを設定する必要があるので
右下の「Interfaces」を選択しUPnP Interface Settings画面を表示します

UPnP Interface Settings画面の左上の「+」ボタンで
インタフェースを追加するためのNew UPnP画面を表示します

まず内側のインタフェースを追加していきます
今回のInterface指定はdefconf状態で作成されるbridgeを指定(要はLAN側全部)
ここはUPnPを利用する端末が接続されているインタフェースを環境に合わせて選択
Typeはinternalで「OK」を押す

無事にインタフェースが登録されると
UPnP Interface Settings画面に反映されていると思います

internalの同様に外側のインタフェースも登録します
今回のInterface指定はPPPoE設定で作成されたpppoe-out1を選択
Typeはexternalで「OK」を押す

このようにUPnP Interface Settings画面に
internalとexternalが登録されていればOKです
この段階でUPnPは利用可能になってます

UPnPの動作確認

先ほどの設定でUPnPが利用可能になっているはずなので
UPnP対応アプリ等を利用しての動作確認が早いと思います

今回はCentOS7機とMiniUPnPを使って動作確認しました
MiniUPnP clientであるMiniUPnPcだけ入っていればOKです
インストールはepelリポジトリを利用してyumを使えばOK

yum --enablerepo=epel install miniupnpc

最初に現在の状態を確認します
最後の方に0->0.0.0.0:0というダミールールが入っていればOK
ここでエラーが出る場合は設定見直しが必要です

[root@nettest01 ~]# upnpc -l
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/awbcsmmibn/wanipconn-10
Local LAN ip address : 192.168.88.199
Connection Type : IP_Routed
Status : Connected, uptime=11570s, LastConnectionError : ERROR_NONE
  Time started : Fri May 18 16:11:34 2018
MaxBitRateDown : 10000000 bps (10.0 Mbps)   MaxBitRateUp 10000000 bps (10.0 Mbps)
ExternalIPAddress = ***.***.***.***
 i protocol exPort->inAddr:inPort description remoteHost leaseTime
 0 TCP     0->0.0.0.0:0     'Dummy inactive rule for windows to work' '' 0
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)

hAP acの方ではIP→FirewallのNATタブで確認できます
まだ登録されていないのでdefconf状態のまま

実際にUPnPへポート開放の指示を送信してみます
今回は192.168.88.199に向けてTCP/8080ポートを解放させました
最初の8080が内向き、次の8080が外向きのポート番号

[root@nettest01 ~]# upnpc -a 192.168.88.199 8080 8080 tcp
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/awbcsmmibn/wanipconn-10
Local LAN ip address : 192.168.88.199
ExternalIPAddress = ***.***.***.***
InternalIP:Port = 192.168.88.199:8080
external ***.***.***.***:8080 TCP is redirected to internal 192.168.88.199:8080 (duration=0)

この状態で既にポート開放されているのでアクセス可能になっています
再度、現在の状態を確認すると下の部分で
ルールが追加されているのがわかります

[root@nettest01 ~]# upnpc -l
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/awbcsmmibn/wanipconn-10
Local LAN ip address : 192.168.88.199
Connection Type : IP_Routed
Status : Connected, uptime=11969s, LastConnectionError : ERROR_NONE
  Time started : Fri May 18 16:11:34 2018
MaxBitRateDown : 10000000 bps (10.0 Mbps)   MaxBitRateUp 10000000 bps (10.0 Mbps)
ExternalIPAddress = ***.***.***.***
 i protocol exPort->inAddr:inPort description remoteHost leaseTime
 0 TCP     0->0.0.0.0:0     'Dummy inactive rule for windows to work' '' 0
 1 TCP  8080->192.168.88.199:8080  'libminiupnpc' '' 0
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)

Winbox側のNATタブにもルールが追加されているのが確認できます
ルール名の頭にもupnpとあるので確認しやすいです

最後にUPnPから先ほどの8080を削除します

[root@nettest01 ~]# upnpc -d 8080 tcp
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/awbcsmmibn/wanipconn-10
Local LAN ip address : 192.168.88.199
UPNP_DeletePortMapping() returned : 0

ちゃんとルールが消えているか現在の状態を確認

[root@nettest01 ~]# upnpc -l
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/awbcsmmibn/wanipconn-10
Local LAN ip address : 192.168.88.199
Connection Type : IP_Routed
Status : Connected, uptime=11989s, LastConnectionError : ERROR_NONE
  Time started : Fri May 18 16:11:34 2018
MaxBitRateDown : 10000000 bps (10.0 Mbps)   MaxBitRateUp 10000000 bps (10.0 Mbps)
ExternalIPAddress = ***.***.***.***
 i protocol exPort->inAddr:inPort description remoteHost leaseTime
 0 TCP     0->0.0.0.0:0     'Dummy inactive rule for windows to work' '' 0
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)

Winbox側のNATタブからもルールが削除されているのを確認

ちなみにUPnPでルール追加した際に表示されている’libminiupnpc’は
MiniUPnPcが指定したコメントなので実際はアプリによって変わります

UPnPのオプション設定

UPnPのオプション設定項目について簡単に説明します

Allow To Disable External Interface

デフォルトでオフになっているオプションです
WAN側でグローバルIPを取得できる場合はオフで問題ないでしょう
使うケースとして身近なのは2重ルータ環境だと思います

2重ルータ状態でも子ルータ側でこのオプションを有効にすることで
外部インタフェースのチェックを無効となり
エラーを回避しUPnP処理が可能となります
(親ルータ側の設定は手動で対応)

この例だとWANポート(ether1)に192.168.0.5で親ルータへ接続し
子ルータがこのhAP acで端末が192.168.88.200です
Dstアドレスが192.168.0.5とローカルIPでも問題なくUPnPが動作しているのが確認出来ます

注意点としてはチェックしなくなるだけなので
UPnP Interface Settings画面でのexternalインタフェースの登録を忘れずに

Show Dummy Rule

デフォルトでオンになっているオプションです
先ほどのupnpc -lで確認した際に表示されていた
「 0 TCP 0->0.0.0.0:0 ‘Dummy inactive rule for windows to work’ ” 0」
このルールがこのオプションで追加されているルールです

どうやらルールが空の場合に不具合が出る環境があるようで
その不具合を回避するためにわざとルールを1つ足しているようです
これをオフにするとルールなしで返答されるだけですが
ダミールールを追加するデメリットもないのでとりあえずオンでいいと思います
以下がダミールールなしで設定した場合のupnpc -l結果

[root@nettest01 ~]# upnpc -l
upnpc : miniupnpc library test client, version 2.0.
 (c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.88.1:2828/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://192.168.88.1:2828/upnp/control/kyutfyxgwg/wanipconn-10
Local LAN ip address : 192.168.88.199
Connection Type : IP_Routed
Status : Connected, uptime=12358s, LastConnectionError : ERROR_NONE
  Time started : Fri May 18 16:11:34 2018
MaxBitRateDown : 10000000 bps (10.0 Mbps)   MaxBitRateUp 10000000 bps (10.0 Mbps)
ExternalIPAddress = ***.***.***.***
 i protocol exPort->inAddr:inPort description remoteHost leaseTime
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)

最後に

今回紹介しているMikroTik hAP acの基本情報や入手元については
こちらの記事をご覧ください

MikroTik hAP acを開封 | fefcc.net
https://fefcc.net/archives/552