Ubuntu 服务器内部和外部 IP

Ubuntu 服务器内部和外部 IP

好吧,这可能是一个简单的网络问题,但却让我感到困惑。我希望有人能帮我解释一下。我有两台物理计算机、一台 Linux 笔记本电脑和一台游戏计算机(真的是最新的),我双启动 win7 和 ubuntu 服务器。然后我在服务器上设置了 apache、ssl、php、mysql。然后我将 /etc/hosts/ 更改为我的服务器的内部 IP,例如:myserver.com

现在..我想在 /etc/hosts 中获取我的外部 IP,以便我可以使用我的笔记本电脑连接到我的服务器(将开启)

但是我不知道这是否正常,但我运行了以下命令:

curl ifconfig.me 

并且我获得了服务器上的外部 IP,即 xx.xxx.xxx.21,我很高兴,我使用它来连接我的浏览器,并且一切正常(这让我很高兴)现在我在我的笔记本电脑上尝试了相同的命令,并获得了相同的 IP:

21

两台不同的计算机(我已经测试过网络连接)怎么会具有相同的 IP?

然后我的第二个问题是:为什么当我在浏览器上输入 xx.xxx.xxx.21 时,它会带我到我的服务器 apache,而不是我的笔记本电脑 apache?

在我的路由器端口转发上,我已为我的服务器内部 IP 启用了 HTTPS,并且已在我的笔记本电脑内部 IP 上启用了 80。

如果有人可以为我澄清这一点我将非常高兴。

答案1

你所看到的是很正常的,归根结底是一种叫做网络地址解读或 NAT。基本上,路由器会重写传出的数据包,以将 ISP 分配的公共 IP 地址作为发送方,并且路由器会保留一个状态表,列出它所做的重写,以便每个响应数据包都可以正确重写,然后路由回正确的计算机。

如果您使用命令等检查每台计算机网络接口上的 IP 地址ifconfig,您将看到它们在“内部”确实有不同的 IP 地址。

以上内容概括了 NAT 的基本元素;如果你想了解更多详细信息,可以前往维基百科:网络地址转换

通常,您会在“内部”(本地)网络的主机上使用 /etc/hosts 中的内部 IP 地址,而不是外部 IP 地址。这样,您就不必担心 ISP 会为您分配新地址。

相关内容