如何透過IP將機器暴露給外部網路以供伺服器存取?

如何透過IP將機器暴露給外部網路以供伺服器存取?

我有一台舊電腦,我把它拆下來並安裝了 Ubuntu,因為我希望它能夠作為測試服務,讓我在一些個人專案上運行概念。當啟動並運行時,我可以執行 ahostname -I並返回192.168.1.1,但我相信這是一個私人 IP 位址,引用路由器級別以下 LAN 上的電腦。造訪網站,例如https://whatismyipaddress.com/將產生70.108.1.98,我希望能夠打開瀏覽器並能夠導航到https://70.108.1.98:4321該端口上正在運行的應用程序,預計會有流量。

目前,如果我想連接到另一台裝置上執行的伺服器,我可以在一台電腦上開啟瀏覽器並存取該電腦的私人 IP,然後4321連線就不會出現問題。這是有道理的,因為它是一個 LAN,並且子網路遮罩允許這些 IP 在路由器下找到彼此。

我的初步估計是我需要執行以下一些操作:

  1. 設定路由器以允許防火牆上的流量4321
  2. 將所有流量轉送至指示網路上特定電腦的特定4321IP192.168.xxx.xxx
  3. 設定電腦上執行的 Web 伺服器以接受以下位置的流量:4321

我想我唯一的其他問題是給定連結提供的 IP(代表我的公共 IP)是否代表路由器本身或我訪問該網站的電腦? In other words, if I went to that site on my phone connected to my WiFi, would the IP be the same, thus indicating all devices on my router have that public IP and the router, well routes, traffic to the private IP of the裝置?

任何指示將不勝感激!

答案1

聽起來您正在尋找兩個場景/問題的答案(如果我錯了,請糾正我)。

  1. 您希望在連接埠 4321 上託管一個服務,並可以從公共 Internet(使用您的公用 IP)和您的專用網路(使用您的公用 IP 或您的專用 IP)存取本服務。為此,您需要對路由器進行連接埠轉發,將路由器上的連接埠 4321 重定向到 Ubuntu 電腦上的連接埠 4321。第一步是確定您的 Ubuntu 伺服器的私人 IP 位址(可以使用命令找到ip a)。第二步是依照相關步驟對您的路由器進行連接埠轉送(本站收集了大量路由器型號的連接埠轉送指南:https://portforward.com/router.htm)。完成這些步驟並且服務在 Ubuntu 伺服器連接埠 4321 上執行後,您將能夠使用公用 IP 存取它。

  2. 對於第二個問題,您似乎走在正確的軌道上。您的路由器將建立一個網路位址轉換 (NAT) 網路來處理公共網路和專用網路之間的路由。這是 Ubuntu 伺服器顯示的 IP 位址與外部網站顯示的 IP 位址之間的差異。透過路由器連接到互聯網的任何設備都將成為專用 NAT 網路的一部分,並且所有這些設備的公共 IP 位址都相同(因此 Wi-Fi 上的設備將具有與以下設備相同的公共 IP 位址)你的Ubuntu 伺服器)。

答案2

我想我唯一的其他問題是給定連結提供的 IP(代表我的公共 IP)是否代表路由器本身或我訪問該網站的電腦? In other words, if I went to that site on my phone connected to my WiFi, would the IP be the same, thus indicating all devices on my router have that public IP and the router, well routes, traffic to the private IP of the裝置?

在這種情況下,IP 位址通常屬於路由器本身。實際上從來都不是共享具有私有位址的機器之間;他們大多不知道這一點。

  • 您的裝置從其私人 IP 位址作為來源發起連接,路由器透過 SNAT 將其透明地轉換為其自己的公共位址。

    當接收到從互聯網返回的資料包時,路由器首先檢查它們是否與已知的轉換相符;如果它們這樣做,它們的目的地將被轉換回主機的私人 IP 位址;如果沒有,則路由器本身接受封包作為目標主機。

    確切地說,這不僅僅是「路由」——轉換 (NAT) 是一項附加功能在之上路由。沿著路徑進一步的所有 ISP 路由器僅轉送封包,而不執行任何額外的轉換。 (如果您的網路具有所有主機的公共 IP 位址,那麼您的路由器也可以,就像大多數支援 IPv6 的網路中的情況一樣。)

  • 同樣,當您在路由器上設定「將所有流量轉送到 <IP>」規則時,您實際上是在設定 NAT(轉換)規則。機器永遠不知道它是使用公共IP位址存取的;它收到的所有資料包都只有私有位址。

相關內容