MiniUPnP项目部署与使用完全指南

项目概述

【免费下载链接】miniupnp UPnP IGD implementation 【免费下载链接】miniupnp 项目地址: https://gitcode.com/gh_mirrors/mi/miniupnp

MiniUPnP是一个轻量级的UPnP(通用即插即用)协议实现,主要用于网络地址转换(NAT)设备的端口映射功能。该项目由Thomas Bernard开发维护,包含多个组件,满足不同的UPnP应用场景需求。

项目组件详解

miniupnpc - UPnP客户端库

MiniUPnP客户端是一个UPnP IGD控制点,为应用程序提供UPnP功能支持。该组件包含以下主要功能:

  • upnpDiscover() - 发现网络中的UPnP设备
  • UPNP_GetValidIGD() - 获取有效的IGD设备
  • GetUPNPUrls() - 获取UPnP设备的URL信息
  • 各种UPNP_*方法调用

miniupnpd - UPnP守护进程

MiniUPnP守护进程是一个UPnP IGD实现,同时支持NAT-PMP和端口控制协议。它作为网关设备为网络中的UPnP客户端提供NAT穿越服务。

minissdpd - SSDP管理守护进程

SSDP管理守护进程用于管理SSDP协议,可与miniupnpc、miniupnpd、ReadyMedia等软件协同工作。

异步版本组件

项目还提供了异步版本的UPnP客户端:

  • miniupnpc-async/ - 使用异步(非阻塞)套接字的UPnP IGD控制点概念验证
  • miniupnpc-libevent/ - 使用libevent2的UPnP IGD控制点

编译与安装

基本编译

在项目根目录下执行:

gmake

或者在某些系统上使用:

make

Windows平台编译

对于MinGW环境:

mingw32make.bat

对于MS Visual C++环境,使用msvc/子目录中提供的解决方案和项目文件。

系统安装

要将库和头文件安装到系统中:

su
make install
exit

或者安装到指定位置:

INSTALLPREFIX=/usr/local make install

核心功能使用

端口映射操作

通过upnpc.c示例程序可以执行以下操作:

  • 添加端口映射
  • 删除端口映射
  • 查询端口映射状态
  • 获取外部IP地址

Python模块支持

项目支持构建Python模块:

make pythonmodule
make installpythonmodule

平台支持

MiniUPnP在以下平台编译通过:

  • Linux
  • FreeBSD
  • OpenBSD
  • MacOS X
  • AmigaOS
  • Cygwin

配置与部署

Linux防火墙配置

由于UPnP协议的设计特点,Linux netfilter不会跟踪UPnP多播客户端请求的单播响应。为解决此限制,可以使用自定义ipset哈希表。

IPv4配置规则:

ipset create upnp hash:ip,port timeout 3
iptables -A OUTPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j SET --add-set upnp src,src --exist
iptables -A INPUT -p udp -m set --match-set upnp dst,dst -j ACCEPT
iptables -A INPUT -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT

IPv6配置规则:

ipset create upnp6 hash:ip,port timeout 3 family inet6
ip6tables -A OUTPUT -d ff02::c/128 -p udp -m udp --dport 1900 -j SET --add-set upnp6 src,src --exist
ip6tables -A OUTPUT -d ff05::c/128 -p udp -m udp --dport 1900 -j SET --add-set upnp6 src,src --exist
ip6tables -A INPUT -p udp -m set --match-set upnp6 dst,dst -j ACCEPT
ip6tables -A INPUT -d ff02::c/128 -p udp -m udp --dport 1900 -j ACCEPT
ip6tables -A INPUT -d ff05::c/128 -p udp -m udp --dport 1900 -j ACCEPT

项目结构

MiniUPnP项目采用模块化设计,各组件相对独立:

  • 客户端库位于miniupnpc/目录
  • 守护进程位于miniupnpd/目录
  • SSDP管理守护进程位于minissdpd/目录

开发集成

要在应用程序中使用libminiupnpc,需要:

  • 链接libminiupnpc.a(或.so)
  • 包含相关头文件:miniupnpc.h、upnpcommands.h、miniwget.h等

编译时使用:

#include <miniupnpc/miniupnpc.h>

链接时使用:

-lminiupnpc

技术支持与社区

  • 官方邮箱:miniupnp@free.fr
  • 网络论坛:miniupnp.tuxfamily.org/forum/
  • Bug报告:GitHub Issues

通过MiniSSDPd运行可以加速发现过程,提升UPnP设备发现的效率。

【免费下载链接】miniupnp UPnP IGD implementation 【免费下载链接】miniupnp 项目地址: https://gitcode.com/gh_mirrors/mi/miniupnp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值