OpenWrt で UPnP を使用する

ポート開放に UPnP を使用しないといけない状況になったので、OpenWrt のルーターに miniupnpd をインストールして、特定の IP にのみ UPnP の利用を許可するようにしました。

実行環境

ルーター
Linksys WRT1900ACS
ファームウェア
OpenWrt 22.03.2
パッケージ バージョン
miniupnpd-nftables 2022-08-31-68c8ec50-1

必要なパッケージをインストール

  1. ルーターの Web コンソールへアクセス
  2. メニューの System -> Software をクリック
  3. “Update lists…” をクリック
  4. Filter に “miniupnpd” と入力
  5. リストから “miniupnpd-nftables” をインストール

設定を編集

以下がインストール時に作成される設定ファイルです。/etc/config/upnpd

config upnpd config
        option enabled          0
        option enable_natpmp    1
        option enable_upnp      1
        option secure_mode      1
        option log_output       0
        option download         1024
        option upload           512
#by default, looked up dynamically from ubus
#       option external_iface   wan
        option internal_iface   lan
        option port             5000
        option upnp_lease_file  /var/run/miniupnpd.leases
        option igdv1            1

config perm_rule
        option action           allow
        option ext_ports        1024-65535
        option int_addr         0.0.0.0/0       # Does not override secure_mode
        option int_ports        1024-65535
        option comment          "Allow high ports"

config perm_rule
        option action           deny
        option ext_ports        0-65535
        option int_addr         0.0.0.0/0
        option int_ports        0-65535
        option comment          "Default deny"

option enabled を変更して UPnP を有効にします。

config upnpd config
        option enabled          1

このままではルーターに接続されたすべてのデバイスが UPnP を使用できてしまうので、最初の perm_rule セクションを以下の様に変更します。この場合 192.168.1.101 にのみ UPnP の使用を許可しています。

config perm_rule
        option action           allow
        option ext_ports        1024-65535
        option int_addr         192.168.1.101/32
        option int_ports        1024-65535
        option comment          "Allow high ports"

設定ファイルを変更後、以下のコマンドで miniupnpd を有効化します。

/etc/init.d/miniupnpd restart
/etc/init.d/miniupnpd enable

/etc/init.d/miniupnpd restart 実行時に以下のエラーがでましたが、その後の再起動では表示されなくなりました。

Automatically including '/usr/share/nftables.d/table-post/20-miniupnpd.nft'
Automatically including '/usr/share/nftables.d/chain-post/dstnat/20-miniupnpd.nft'
Automatically including '/usr/share/nftables.d/chain-post/forward/20-miniupnpd.nft'
Automatically including '/usr/share/nftables.d/chain-post/srcnat/20-miniupnpd.nft'

Include '/usr/share/miniupnpd/firewall.include' failed with exit code -9

動作しているか確認

ルーターのポート 5000 にアクセスして確認します。例: http://192.168.1.1:5000/rootDesc.xml

miniupnpd が動作していれば XML ファイルを閲覧できます。

UPnPCJ という UPnP を使用してポートを開放するツールのポート開放テスト機能を使用してテストします。

UPnPCJ を使用したテスト結果

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です