WANIPConnection
参考:http://upnp.org/specs/gw/UPnP-gw-WANIPConnection-v2-Service.pdf
AddPortMapping()
NAT
upnp流程
最多进行4层映射,第一层路由通过/proc/net/route获取本地网关,也就是route -n的功能,第一层映射成功后,可以根据GetExternalIPAddress获得该层路由出口ip,如果出口ip为内网ip,说明还有多层路由,traceroute可以跟踪路由信息,如traceroute -m 4 -w 1 -q 2 www.baidu.com,设置为各层路由的网关,使用出口ip作为NewInternalClient,发送upnp映射请求给各层路由的网关,尝试多层映射。
1 | 1. 设备 A 向多播地址发送信息(例如,发送到组播地址 X.X.X.X)。 |
1 |
|
解析流程如下:
- GetExternalIPAddress,获取externalIp,作为下次映射的localIp
- CheckPortMapping
- DelPortMapping
- AddPortMapping
- CheckPortMapping
WANIPv6FirewallControl
参考:http://upnp.org/specs/gw/UPnP-gw-WANIPv6FirewallControl-v1-Service.pdf
- AddPinhole()
- UpdatePinhole()
- DeletePinhole()
- GetOutboundPinholeTimeout()
- GetFirewallStatus()
- GetPinholePackets()
- CheckPinholeWorking()
在 IPv4 中,NAT(网络地址转换)是缓解 IPv4 地址短缺的流行服务。例如,NAT 允许私有网络上的多台主机使用单个公共 IP 地址访问 Internet。 IPv6 的设计部分是为了纠正 IPv4 中的某些缺陷。特别是,IPv6 地址空间比 IPv4 地址空间大得多,因此希望不存在 IPv6 地址短缺的风险。
因此,IPv6 不再需要 NAT,恢复了端到端的通信范式。然而,使用 IPv4 NAT 的副作用之一是许多供应商和用户认为 NAT 通过隐藏设备的 IP 地址来为设备提供一些基本的安全性,从而保护设备免受外部攻击。
许多专家对 NAT 的假定安全声明提出异议。然而,许多供应商和用户可能希望防火墙服务保护内部主机免受外部访问,以便内部设备继续具有抵御外部攻击的基本安全性。
在 IPv6 防火墙很常见的可能场景中,如果有一种类似于 NAT 穿越的方式来动态控制防火墙,那么对某些应用程序将是有益的。在这种情况下,IPv6 IGD 供应商可以实施 WANIPv6FirewallControl 服务(而不是 WANIPConnection 服务)以允许 UPnP 控制点控制 IGD 的防火墙。
对于使用以前的 WANIPConnection 服务的 UPnP CP,使用 WANIPv6FirewallControl 服务所需的返工量有望减少,因为这两种服务非常相似。