首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带STUN的Python烧瓶

带STUN的Python烧瓶
EN

Stack Overflow用户
提问于 2018-02-27 10:37:18
回答 1查看 559关注 0票数 0

我正在开发一个简单的基于Flask的服务器,可以与互联网上的对等应用程序(其他类似的服务器)进行通信。应用程序可以位于NAT之后。因此,我尝试使用pystun通过stun服务器解析外部IP和端口。

代码语言:javascript
复制
import stun
nat_type,external_ip,external_port=stun.get_ip_info()

返回的端口为54320。问题是,当我尝试http://external_ip:54320时,请求没有到达Flask应用程序。http://external_ip:5000也不能工作,5000是使用的内部端口(我知道这应该不能工作,但不管怎样还是试过了)。没有防火墙。我已经用host="0.0.0.0“运行了Flask。要添加..我不想在路由器中进行显式端口映射。是否有一种方法可以监听可从外部地址访问的端口,并通过stun找出外部端口?

EN

回答 1

Stack Overflow用户

发布于 2018-02-28 02:35:10

如果不进行显式端口映射,则很难在NAT之后托管服务器。NAT还充当防火墙。NAT后面的节点可以建立出站TCP连接,但NAT将阻止任何入站连接。

STUN在这里没有帮助,因为它只帮助NAT后面的节点发现自己的端口映射。要允许在STUN之后建立连接,通常必须执行打孔步骤,这涉及到两个端点同时尝试彼此连接。

您可以尝试使用UPNP,这是许多NAT支持的用于动态创建端口映射的协议。有一些开放源代码库可能会起作用。

但更简单的解决方案是将NAT配置为具有明确的端口映射。(例如,端口50000在特定端口映射到PC的内部IP地址)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49000249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档