ポート開放に UPnP を使用しないといけない状況になったので、OpenWrt のルーターに miniupnpd をインストールして、特定の IP にのみ UPnP の利用を許可するようにしました。
コンテンツ
実行環境
- ルーター
- Linksys WRT1900ACS
- ファームウェア
- OpenWrt 22.03.2
パッケージ | バージョン |
---|---|
miniupnpd-nftables | 2022-08-31-68c8ec50-1 |
必要なパッケージをインストール
- ルーターの Web コンソールへアクセス
- メニューの System -> Software をクリック
- “Update lists…” をクリック
- Filter に “miniupnpd” と入力
- リストから “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 を使用してポートを開放するツールのポート開放テスト機能を使用してテストします。