我只是在阅读端口转发,这是在考虑使用RaspberryPi托管Web服务器。
我发生的一件事就是这样。某个端口上的所有请求都将转发到特定的内部IP地址。回复是否以相同的方式转发?可以肯定的是,这将阻止网络上的其他计算机访问Internet,因为来自已访问网站的所有响应都将到达服务器。
为了回答这个问题,您需要了解客户端和服务器之间的网络流量是如何工作的。
当您具有客户端服务器程序时,服务器将设置一个侦听端口。
然后,任何客户端都可以连接到该侦听端口并要求连接。因为您只能与一个端口建立一个连接,所以一旦服务器接受连接(在一秒钟内),服务器便会开始重新建立与客户端的新连接(通常是通过uPNP,可以选择指定它将使用哪个端口) )进行实际的数据传输。从客户端到服务器的初始端口被删除以释放侦听端口。
由于服务器位于NAT(路由器)的后面,因此当客户端使用端口号连接到公用ip时,路由器将应答,而不是位于其后的服务器。由于路由器没有服务器软件(在您的情况下为Web服务器),因此它不知道如何应答,并且连接失败,因为路由器只是忽略了请求。
通过添加端口转发,您可以告诉路由器当有人尝试使用该指定端口连接到公共ip时该怎么做。对于您的情况,规则说:将流量中继到树莓派。
现在,正如您所看到的,发生的唯一一件事情是,路由器在向公共ip和端口发出请求时了解了该做什么。网络内部的PC并不请求通过公共ip进行访问,而是通过私有ip进行访问。另外,路由器允许设置它侦听的公共端口。因此,如果您有3个树莓派,每个树莓派都有自己的IP地址,则可以设置3条规则:
- port 8081 to pi1, port 80
- port 8082 to pi2, port 80
- port 8083 to pi3, port 80
然后,客户端将连接到您的附加:8081的公共ip来打开该端口,并且所有端口仍然有效。
没有铺设物理链路,因此所有端口均保持原样。只是路由器现在知道如何处理端口以及流量应该流向何方。
请注意,并非所有路由器都具有环回流量的能力,这意味着它们希望具有公共ip地址的NAT上的连接来自WAN端口而不是来自任何LAN端口,因此可能无法测试转发规则从网络内部在您的路由器上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句