其实这事要从沾染了BT下载说起。
有公网V4和V6的IP,部署好docker版本aria2c后发现。无论如何openwrt主路由里面的miniupnpd这个服务一直不会出现upnp的映射端口。然后详细查了一下,其实我现在路由器这个版本是支持miniupnpd的自动端口映射的。并且正常运行,只不过luci的版本不能把映射数据展示出来。运行命令如果有这个iptables表,并且有数据就没问题。
iptables -L MINIUPNPD -nv
# cat upnpd
config upnpd 'config'
option enabled '1'
option enable_natpmp '1'
option enable_upnp '1'
option secure_mode '1'
option log_output '0'
option download '1024'
option upload '512'
option internal_iface 'lan'
option port '5000'
option upnp_lease_file '/var/upnp.leases'
配置正常,并且查看/var/upnp.leases也都正常建立的映射。
但是另一个宽带的UPnP服务就完全运行失败了,某些服务一直报告NAT是端口限制型,Upnp不可用。排查了半天其实是可以看到miniupnpd服务在运行的,但是看iptables表是空的。并且/var/upnp.leases也是空的。
查询了一下/etc/init.d/miniupnpd的启动过程。
echo "ext_ifname=$ifname"
echo "ext_ifname6=$ifname6"
[ -n "$external_ip" ] && echo "ext_ip=$external_ip"
//...
if [ -n "$external_iface" ] ; then
network_get_device ifname "$external_iface"
else
if [ -n "$external_zone" ] ; then
ifname=$(fw3 -q zone "$external_zone" 2>/dev/null | head -1)
else
network_find_wan external_iface && \
network_get_device ifname "$external_iface"
fi
并且看了一下miniupnpd的临时启动配置
cat /var/etc/miniupnpd.conf
ext_ifname=eth1
listening_ip=br-lan
port=5000
enable_natpmp=yes
enable_upnp=yes
secure_mode=yes
pcp_allow_thirdparty=no
system_uptime=yes
lease_file=/var/upnp.leases
bitrate_down=8388608
bitrate_up=4194304
uuid=376cce89-a035-4225-9727-b38a22bf7795
allow 1024-65535 0.0.0.0/0 1024-65535
deny 0-65535 0.0.0.0/0 0-65535
感觉不太对劲。ext_ifname是eth1。不应该是wan-pppoe么?
luci界面上没有设定ext接口的地方。
手工写入/etc/config/upnpd上。
config upnpd 'config'
option download '1024'
option upload '512'
option internal_iface 'lan'
option port '5000'
option upnp_lease_file '/var/run/miniupnpd.leases'
option enabled '1'
option secure_mode '0'
option external_iface 'wan'
option external_iface6 'wan'
重启miniupnpd服务。发现iptables还是没建立miniupnpd的链。
不管了干脆写死公网IP试试。
option external_ip ‘117.XXX.XXX.XXX’
重启服务,马上upnpd就有设备注册了。luci界面也展示这些设备了。
至于为什么无法启动命令无法获取到ext_ifname 正确的公网IP尚不得而知。反正目前是没啥问题了,解决办法是写了一个脚本,监控wan口ip变动。如果变动就写入/etc/config/upnpd上,然后重启服务。
做好UPNP,能看到Stream也建立了映射。可见玩游戏的也要开启这个哦,如果你自己用运营商的光猫,找到upnpd的选项开启试试看吧。
UDP192.168.50.211
0:GameStream -
UDP192.168.50.211
0:GameStream -
UDP192.168.50.211
0:GameStream -
UDP192.168.50.211
0:GameStream -
UDP192.168.50.211
0:GameStream -