
我正在嘗試在 Ubuntu 18.04 中安裝 Apache 伺服器,並透過不同的方式取得公用 IP 位址(curl、http://www.see-my-ip.com/,...)。
然而,當我嘗試使用此 IP 存取 Apache 設定頁面時,系統會詢問使用者和密碼,我想是路由器的使用者和密碼。https://i.stack.imgur.com/JZkeN.gif)。
我連接到公共網路或 Android 手機的數據網絡,兩者都遇到相同的問題。
有什麼線索可以幫助我解決這個問題嗎?
答案1
是的,在 DSL 路由器上設定連接埠轉送。
但首先:除非您有非常特殊的原因需要從 Internet 管理 DSL 路由器:把它關掉。這是在大喊大叫的首都,因為這是一個嚴重的安全問題。只允許從內部網路管理 DSL 路由器。
此外,如果您的路由器偵聽該端口,您將無法將該連接埠轉送到您的伺服器。
如何設定連接埠轉送取決於路由器。對於某些 DSL 路由器,它位於選單中作為轉發,對於其他路由器,您必須在進階選單中進行挖掘。您需要查閱 DSL 路由器的手冊。
連接埠轉送的作用是將收到的封包傳送到本機伺服器,並將公用 IP 轉換為本機 IP,然後再轉換回來。
或例如以下網路:
+------+ a.b.c.d (-----) e.f.g.h+------+10.1.1.1 10.1.1.2+------+
|client|----------(Internet)--------|router|----------------------|apache|
+------+ (-----) +------+ +------+
您的連接埠轉送規則將是
- 外部 IP 位址 efgh
- 外部連接埠:80
到
- 內部IP 10.1.1.2
- 內部連接埠 80
當客戶端發送資料包(從 abcd:high_port 到 efgh:80)時,路由器會將資料包轉換為規則定義的資料包(從 abcd:high_port 到 10.1.1.2:80),並將其傳送到 Apache。當 Apache 給予回應時(從 10.1.1.2:80 到 abcd:high_port),路由器將轉換回(從 efgh:80 到 abcd:high_port)並將其發送到客戶端。簡而言之,這就是連接埠轉送的工作原理。