跳转到主要内容

用于与NAT-PMP v0交互的Python类

项目描述

https://img.shields.io/pypi/v/NAT-PMP.svg https://img.shields.io/pypi/pyversions/NAT-PMP.svg tests Code style: Black

提供与实现NAT-PMP草案规范第0版的NAT-PMP网关交互的函数。

由Yiming Liu从py-natpmp分支而来。有关更多背景信息,请参阅这篇博客

简介

py-natpmp是一个Python的NAT-PMP(网络地址转换端口映射协议)库和测试客户端。客户端允许您在NAT-PMP兼容的路由器上设置动态端口映射。因此,这是与支持NAT-PMP的路由器进行动态NAT穿越的一种方式。在实际情况中,这基本上仅限于支持此协议的新款Apple AirPort基站和AirPort Express。

无论如何,此库在NAT-PMP协议第0版本上添加了一层Python抽象,该版本由NAT-PMP草案标准指定。

库提供了一套高级和低级函数,通过NAT-PMP协议进行交互。函数map_port和get_public_address提供了NAT-PMP提供的两个高级函数。响应存储为Python对象。

客户端

要使用客户端,获取它和上面的库。确保库与客户端脚本在同一个目录下,或者在Python实例的sys.path上。在命令行(Terminal.app)上调用客户端,命令为 python -m natpmp [-u] [-l lifetime] [-g gateway_addr] public_port private_port

例如

python -m natpmp -u -l 1800 60009 60009 为公网UDP端口60009创建映射到私有UDP端口60009,有效期为1,800秒(30分钟)

python -m natpmp 60010 60010 为公网TCP端口60010创建映射到私有TCP端口60010

python -m natpmp -g 10.0.1.1 60011 60022 明确指令网关路由器10.0.1.1创建从60010到60022的TCP映射

请记得关闭您映射的端口的防火墙。

注意事项

这是规范的不完整实现。当路由器重新启动时,所有动态映射都将丢失。规范规定路由器在此情况下向每个客户端发送通知数据包。该库和客户端不支持监控此类通知,也没有实现用于此目的的守护进程。规范建议排队请求,即所有NAT-PMP交互应串行进行。此简单库不会排队请求——如果您使用多线程滥用它,它将并行发送这些请求,并可能压倒路由器。

库将尝试自动检测您的NAT网关。这通过在BSD/Darwin上对netstat进行popen和在Linux上对ip进行操作来完成。这可能会失败,具体取决于输出是否标准。在库中,提供了一个关键字参数来覆盖默认设置并指定您自己的网关地址。在客户端中,使用-g开关手动指定网关。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

NAT-PMP-1.3.2.tar.gz (15.7 kB 查看哈希值)

上传时间 源代码

构建分发

NAT_PMP-1.3.2-py3-none-any.whl (8.4 kB 查看哈希值)

上传时间 Python 3

支持者: