wsl docker 安裝frp內網穿透出現error: dial tcp 127.0.0.1:xxxx: connect: connection refused解決方法

白白白芷發表於2024-07-25


環境為win11+wsl2+docker desktop+frp映象

發生背景:wsl配置檔案中我設定了

networkingMode=mirrored

所以一般情況下wsl2和主機ip一致,可互通

原始配置檔案為

#frpc.toml配置檔案埠對映部分
[text]
type = tcp#模式
local_ip =127.0.0.1#本機ip
local_port =1234#本機埠
remote_port =12345#遠端埠

按照設想,本機ip與wsl一致,不會出錯,可是出現錯誤如下:
​​​​
​​​​

由於遠端伺服器設定無誤,防火牆也放開了埠所以主要研究本機,更改為0.0.0.0或192.168.x.x後都無效,可在我使用windows版本的frp中,可以正常轉發,所以基本可以確定不是防火牆的問題,在主要確定可以是ip地址問題後,我在一篇文章https://blog.csdn.net/gaohongfeng1/article/details/138509578

中發現

把地址改為這個以後可以正常使用,透過詢問copilot後,得出瞭如下解釋:

127.0.0.1
定義:127.0.0.1 是一個環回地址(loopback address),用於指向本地計算機。
用途:在本地計算機上執行的程式可以透過 127.0.0.1 訪問同一臺計算機上的服務。
限制:只能在本地計算機上使用,不能用於訪問 Docker 容器中的服務。
host.docker.internal
定義:host.docker.internal 是 Docker 提供的一個特殊 DNS 名稱,用於在 Docker 容器中訪問宿主機。
用途:在 Docker 容器中執行的程式可以透過 host.docker.internal 訪問宿主機上的服務。
限制:只能在 Docker 容器中使用,不能在宿主機或其他環境中使用。
在修改埠配置為

#frpc.toml配置檔案埠對映部分
[text]
type = tcp   #模式
local_ip =host.docker.internal  #DockerDNS
local_port =1234  #本機埠
remote_port =12345  #遠端埠
後,可以正常使用frp 

​``

相關文章