Mac-Osx

macOS:如何將 localhost 埠暴露給同一台電腦上的 LAN IP?

  • November 12, 2022

在我擁有的 Raspberry PI 上,無論我在其上執行什麼,例如 ,http://localhost:8080我的本地網路上的其他電腦都可以自動看到http://192.168.0.xxx:8080http://pi.local:8080

我的 Mac 不會發生這種情況。如果我正在測試在 上執行的 Angular 應用程序,我的本地網路上的其他電腦將看不到http://localhost:4200應用程序。http://mymac.local:4200

我要做的就是將 localhost 埠暴露給我的 LAN,而不是暴露給世界其他地方。然而,當我尋找解決這個問題的方法時,我發現的只是像 之類的工具ngrok,這不是我想要的。我不是想讓我的應用程序對全世界可見,只是我的區域網路。

我的 macOS 防火牆沒有打開,所以據我所知,特定埠被主動阻止沒有問題。

更新:

我發現的一個臨時解決方案是這樣的:

browser-sync start --proxy "localhost:4200" --no-open --no-ghost-mode --no-notify --no-snippet --no-ui --port 4200

browser-sync但是,它是專門面向 HTTP 的,並試圖弄亂以多種方式提供的內容,因此--no-xxx我使用了所有標誌。我想找到一個類似的、更簡單的解決方案,以純粹中立的方式轉發 TCP 流量。

如果執行的服務特意綁定了loopback作為監聽介面,比如硬編碼而你不控制源。例如,動態直接的 ssh 隧道。

使用 socat https://stackoverflow.com/questions/16808543/install-socat-on-mac

查看幫助文件,您可以選擇協議、要綁定的介面等,以及許多其他內容。

SOCAT 搖滾….

socat TCP-LISTEN:8080,fork TCP:127.0.1:8888

在我擁有的 Raspberry PI 上,無論我在其上執行什麼,例如 http://localhost:8080,我的本地網路上的其他電腦都會自動看到http://192.168.0.xxx:8080http://pi .local:8080

不,你沒有。與所有其他現代作業系統一樣,Linux 具有聆聽位置的概念。這稱為介面綁定。Windows、Darwin、Linux 和所有其他現代作業系統都支持這一點,它本質上讓您指定要收聽的介面。也許您希望 Apache 監聽 203.0.113.1,而 nginx 在 203.0.113.2 上監聽?如果是這樣,您可以在配置文件中指定它。

這通常在您希望某些內容在本地可用時使用:您告訴它綁定到 127.0.0.1 或 ::1,這是環回地址。這將無法從任何其他主機訪問,因為它僅綁定到環回介面。

還有一個包羅萬象:0.0.0.0,或 IPv6 用語中的 :::綁定任何可用的介面。這將偵聽所有啟用的介面,包括環回和其他介面。

簡而言之:弄清楚您正在使用的服務如何定義網路介面綁定,並對其進行修改以適應。

引用自:https://serverfault.com/questions/1115519