服务器的路由器后面
我试图建立一个路由器后面的服务器,我已经能够将其降低到以下问题:服务器的路由器后面
我用:
- 西门子SL2 -141路由器。
- Windows 7 64位与Python 2.7。
我运行:
-
server.py:
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((IP, 8080)) sock.listen(1) sock.accept() print 'success' sock.close()
-
client.py:
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((IP, 8080)) sock.close()
- 当IP ='127.0.0.1'它的工作原理是。
-
我设置静态IP:
> Network And Sharing Center > Change Adaper Settings > Local Area Connection > Properties > Internet Protocol Version 4 (TCP/IPv4) > Properties > Use The Following IP Address: IP Address: 10.0.0.200 Subnet Mask: 255.0.0.0 Default Gateway: 10.0.0.138 > Use The Following DNS Server Addresses: Preferred DNS Server: 10.0.0.138 Alternate DNS Server: - - - -
当IP = '10 .0.0.200' 它的工作原理。
-
我设置端口转发在我的路由器:
> http://10.0.0.138/ > Username: Admin > Password: Admin > Advanced > Virtual Server > Port Forwarding > Add: User Defined: Test From Internal Host IP Address: ALL Forward to Internal Host IP Address: 10.0.0.200 Protocol: TCP External Packet Port Start: 8080 External Packet Port End: 8080 Forward To Internal Host Port Start: 8080 Forward To Internal Host Port End: 8080 > Apply (and reboot router, just in case).
据我了解,如果我离开服务器IP '10 .0.0.200' 和设置客户端IP到我的公网IP它应该工作,但它不起作用(“由于目标机器主动拒绝它而不能建立连接”)。
我试图与Apache服务器做同样的事情,结果是相似的:浏览本地主机的工作,浏览静态IP的工作,但在浏览公网IP没有工作(80端口给我的路由器设置页面,而端口8080只是无法连接)。
最后说明:
- 我关掉我的防火墙。
- 我检查了端口是打开的(http://www.canyouseeme.org/),它是。
- 我检查服务器正在监听(netstat -na | find/i“8080”),它确实如此。
任何想法是什么问题?
据我了解,如果我离开服务器IP '10.0.0.200'并将客户端IP设置为我的公有IP,它应该可以工作,但它不起作用。
这是正确的,如果客户端在外部网络上。在本地网络上,如果使用公共地址,它可能会或可能不会工作,具体取决于您的路由器是否实施NAT反射(如果不是,则会丢弃数据包)。您应该在本地网络上使用本地(专用)IP地址。许多路由器允许您为本地资源配置DNS记录(覆盖来自DNS服务器的记录,实现一种“分割DNS”)。这样您可以使用一个DNS名称来获取正确的地址。
如果你的问题是从客户端的外部网络的连接,听起来莫名其妙的NAT路由器不是端口转发。我没有你的路由器模式,但我看到这一行:
从内部主机IP地址:ALL
,不知道如果你要允许From External
。
您是否确定此规则已启用? (我只问,因为我最后一次有这样我就正确地创建了转发规则的问题,但它并没有启用。)
如果你仍然坚持,尝试删除该规则,并重新测试,如果港口看起来开放http://www.canyouseeme.org/。我还会在不运行服务器程序时重新测试(以测试外部端口扫描是否具有误导性,这可能会发生)。
最后,当你写:
我关掉我的防火墙。
是不是指Windows防火墙?您还需要仔细检查,因为Windows防火墙可以在阻止远程连接的同时允许本地连接。
原来的路由器通过互联网没有路线我,所以公网IP不是用我的机器识别。我尝试通过Tor运行客户端(并浏览Apache服务器),并且一切正常。 谢谢。 – 2013-02-16 18:59:25