Networking 端口转发和Python套接字

Networking 端口转发和Python套接字,networking,router,portforwarding,Networking,Router,Portforwarding,好的,我有几个问题,我家里有一个D-link 2650u路由器,让我们从这个开始 现在我用Python编写了一个TCP服务器,它将自己绑定到我的私有IP地址和端口5000(我的私有IP地址是10.0.0.4),例如,我的公共IP地址是76.123.24.21。现在,我的TCP服务器在LAN和专用IP地址内运行良好,但是如果我希望其他人能够向我和我的服务器发送数据包,以便从LAN外部接收数据包,我需要打开端口5000并转发它,例如,进入我的路由器的NAT端口转发表,并定义在端口5000上接收的所有

好的,我有几个问题,我家里有一个D-link 2650u路由器,让我们从这个开始

现在我用Python编写了一个TCP服务器,它将自己绑定到我的私有IP地址和端口5000(我的私有IP地址是10.0.0.4),例如,我的公共IP地址是76.123.24.21。现在,我的TCP服务器在LAN和专用IP地址内运行良好,但是如果我希望其他人能够向我和我的服务器发送数据包,以便从LAN外部接收数据包,我需要打开端口5000并转发它,例如,进入我的路由器的NAT端口转发表,并定义在端口5000上接收的所有数据包将转发到我的专用ip地址,即10.0.0.4。 所以我的第一个问题是,如果我将端口5000转发到10.0.04,这意味着发送到76.123.24.21:5000的每个数据包都将在绑定到端口5000的TCP服务器中接收,对吗?(当然,如果数据包是从TCP套接字发送的)

现在我的第二个问题是,如何转发路由器上的端口。。。。。我有一个D-link DSL 2650u路由器,每当我登录到它的网页,并使用正确的用户名和密码连接时,它向我显示的所有选项都是:

设备信息
诊断
管理层

与高级设置或NAT转发端口无关


请帮我做这个

由于TCP服务器位于NAT设备后面,这意味着NAT设备外部的TCP客户端需要初始化套接字连接。我建议您在路由器中打开一个DMZ主机,但打开一个端口转发

它应该在管理层。查看DMZ设置

  • 嗯。你说得对。TCP目标端口等于5000的每个数据包都将转发到10.0.0.4。内部端口号和外部端口号可能相同或不同,路由器不关心

  • 端口转发在D-Link文献中称为“虚拟服务器”。您可以在“NAT-虚拟服务器”中的“高级设置”下配置端口转发


  • DMZ中的任何客户端PC都将面临各种类型的安全风险。因此,如果您的应用程序只使用一个端口,只使用端口转发。

    好吧,那么如果我想将发送到端口5000的所有数据包绑定到我的专用ip(10.0.0.4),我该怎么办?@user3687265如果您必须使用端口转发,那么您应该将TCP服务器与其他端口绑定,比如4000。然后添加一个转发规则,如“协议:TCP,服务端口:5000,内部端口:4000”。您必须触发此规则,以便TCP SYN数据包可以进入。您确定。。。。?是这样吗?假设我将端口80绑定到我的私有IP,然后在端口80上访问我的公共IP时,数据包被转发到我的私有IP…?@user3687265我的意思是,到您的私有IP(10.0.0.4)的端口(假设portA)必须不同于到您的公共IP(76.123.24.21)的端口(假设portB)。您可以将portA设置为80。然后,您需要在路由器的端口转发设置中将portB设置为5000。这样,到公共IP上的portB的流量将转发到私有IP上的portA。端口转发就是这样工作的。转发表中不匹配的所有数据包都将转发到DMZ主机。这意味着网络之外的攻击者可以访问主机的大部分打开端口。所以DMZ不是更好的解决方案。谢谢,伙计,我已经设法访问了港口开放部分,但它似乎不起作用。不知道为什么。。。我已经向我的路由器制造论坛寻求支持,如果它不起作用,我会把它贴在这里。我没有看到高级设置,因为我是以用户的身份查看它的。显然无论如何,非常感谢!嗯,很有趣。这是路由器的用户手册:。是的,似乎您没有访问路由器的特权。你测试过重置密码了吗?