
我正在 Linux 中測試和校準 OpenVPN,最初使用免費 VPN。
根據我看到的所有消息來源,OpenVPN 代理程式應該在 localhost:1194 上監聽。事實上,它始終監聽 0.0.0.0(來源),瀏覽器只會連接到 OpenVPN,並將代理程式設定為在常用連接埠上的該位址。
man openvpn 中未提及 0.0.0.0。網路上提到在伺服器實作中顯示了這個位址,但我正在使用 client.ovpn 運行客戶端,沒有指示 0.0.0.0。線上建議通常會警告應用程式在來源上偵聽,但更重要的是,我看到的所有文件都假設 OpenVPN 在 localhost:1194 上偵聽,瀏覽器應設定為該代理程式。
為什麼 OpenVPN 偵聽錯誤的位址,如何修復?
編輯:
再次查看 man openvpn,我看到 0.0.0.0 被稱為“預設閘道”,而 localhost 被指定為管理 IP。
所有提到的我都記得看到過使用帶有 OpenVPN 的商業 VPN 以及使用建議或暗示使用 localhost:1194 的帶有 OpenVPN 的瀏覽器。這也暗示著大多數代理監聽本地主機(Tor、Privoxy 等)。儘管有下面的評論,OpenVPN 和 VPN 用戶端確實被廣泛討論,就好像它們是代理一樣 - 可用的偵聽服務,如襪子或 http 隧道,應用程式將網路活動連接埠到其中。
我沒有看到提到必須輸入 0.0.0.0:1194 作為工作代理,事實上,除非明確給出地址:端口,否則 Firefox 無法與 OpenVPN 一起使用。
我關於 OpenVPN 的 iptables 的唯一教學僅建議指定 dport,但從不指定位址,建議連接埠位於 localhost 上。
所有提到的內容都在網路上儲存的文檔中,我缺少 URL,而且現在沒有時間在線上搜尋。
對 0.0.0.0 IP 的討論表明,此處偵聽的服務正在所有介面上執行此操作,我立即認為這是有問題的。我寧願將偵聽器限制為特定接口,即。本地主機。例如,以下內容出現在超級使用者的其他位置:
當服務偵聽 0.0.0.0 時,這表示該服務正在偵聽所有配置的網路接口,當偵聽 127.0.0.1 時,該服務僅綁定到環回接口(僅在本地計算機上可用)
IP 位址 0.0.0.0 可能具有非常不同的意義,具體取決於使用的位置。
它與 0.0.0.0/8 子網路中的任何其他位址(即以 0 開頭的任何位址)一起,不是提供給實際網路介面的有效位址。它不能用作任何 IP 封包的來源位址,除非當電腦仍然不知道自己的 IP 位址並且嘗試取得 IP 位址時發生這種情況(典型範例:DHCP)。如果在路由表中使用,則它標識預設網關;到 0.0.0.0 的路由是預設路由,即當沒有任何更具體的路由可用於目標位址時所使用的路由。最後,當在 netstat 命令的輸出中看到(這就是您所要求的)時,這表示給定的套接字正在偵聽電腦擁有的所有可用 IP 位址;當一台電腦有多個IP位址時,套接字只能綁定到特定的位址和連接埠對,或綁定到一個連接埠和所有位址;如果您在那裡看到 IP 位址,則表示套接字僅偵聽該連接埠和該特定位址;如果您看到 0.0.0.0,則表示它正在機器的所有位址上偵聽該端口,包括環回位址 (127.0.0.1)。
Lifewire 上也有類似的建議,語氣不祥;更糟的是,OpenVPN 在初始化階段以 root 身份運行,然後又返回非特權用戶,而 Debian AFAIK 沒有緩解措施。
https://www.lifewire.com/four-zero-ip-address-818384
作為腳註,任何給定伺服器的 OpenVPN 是否可以設定為在本機上偵聽?
答案1
IP位址0.0.0.0
表示預設位址。
OpenVPN 顯然設定為透過 VPN 路由所有流量,因此它正在偵聽(並應答)用戶端上的所有請求,將它們路由到 VPN。
如果您將其設為不監聽0.0.0.0
,您將失去預設透過 VPN 路由所有內容的選項。
說明:OpenVPN 建立一個虛擬網路適配器,該適配器對於作業系統而言與實體網路適配器相同。當 OpenVPN 連接時,您的電腦有兩個這樣的適配器。
為了使所有互聯網請求都通過其適配器,OpenVPN 將其路由位址設定為0.0.0.0
。這是一個特殊的元地址,其含義是“我處理一切”。
在 OpenVPN 連接之前,實體適配器將自己通告為0.0.0.0
,因此它的驅動程式正在偵聽它。
OpenVPN 連線後,它0.0.0.0
從實體適配器中刪除了 並將其占為己有,因此現在 OpenVPN 驅動程式正在偵聽它。
讓 OpenVPN 停止監聽的唯一方法0.0.0.0
是中斷 VPN。它需要傾聽它才能發揮作用。