我有一个相当标准的家庭网络,带有 ISP 提供的调制解调器,该调制解调器连接到路由器,然后路由器为大约 3 台 PC 和笔记本电脑提供 NAT。有可能从我的 ISP 获取一个公共 IP。
现在我想在这个设置中添加一个 Web 服务器。我关心的是 Web 服务器如何与网络的其余部分协同工作。
假设我的 ISP 为我提供了一个公共 IP 地址 1.2.3.4。在我的家庭路由器中,我思考我需要设置一条规则,规定对 1.2.3.4:80 的请求应路由到我的 Web 服务器的内部 IP,比如 192.168.1.1。
但是,如果我坐在家里的电脑前尝试加载 google.com,Google 可能会将我电脑的 IP(可能是 192.168.1.2)视为 1.2.3.4(我的公共 IP),并将响应发送到此 IP。当 IP 数据包到达我的路由器时,它会将其视为发往 1.2.3.4:80 的数据包,我担心它会被路由到我的家庭网络服务器,这显然会妨碍我的电脑正常工作。
我确信上述推理存在漏洞,普通桌面和 Web 服务器可能都位于一个公共 IP 后面。因此,如果有人能解释我的想法哪里错了以及它是如何工作的,我将不胜感激。
答案1
您几乎完全正确。但来自 Google 的回复不会将其视为发往 1.2.3.4:80 的数据包。它们会将其视为 1.2.3.4:XXXXX,其中 XXXXX 是非特权范围内的随机端口号。
此外,路由器将在其路由表中保留连接列表,并将返回数据包正确路由到您的台式计算机 192.168.1.2,而不是您的家庭服务器。
您想要做的是一个相当简单且正常的设置。
答案2
请记住,对于住宅 ISP,您的可接受使用政策或使用条款通常会禁止服务器。我的 ISP 实际上阻止了端口 25 和 80(以及其他一些端口),因此无法运行没有端口指定的服务器。
答案3
您没有问的问题是“我是否应该在家庭网络上托管 Web 服务器”,答案几乎总是“否”。存在实现此目的的技术,但除非这是一个非常小的、业余爱好性质的网站(或仅用于学习目的),否则您最好每月支付 5 到 10 美元,从专门为此设立的公司获得更多、更多数量的吞吐量和冗余。
所以可以,对吧?你应该吗?几乎从不。