創建從一個本地埠到另一個埠的隧道的簡單方法?
我有一個開發伺服器,只能從 127.0.0.1:8000 訪問,而不是 192.168.1.x:8000。作為一個快速破解,有沒有辦法設置一些東西來監聽另一個埠(比如 8001),這樣我就可以從本地網路連接 192.168.1.x:8001,它會在客戶端和 127.0 之間建立流量隧道.0.1:8000?
使用 ssh 是最簡單的解決方案。
ssh -g -L 8001:localhost:8000 -f -N user@remote-server.com
這會將您工作站上的本地埠 8001 轉發到 remote-server.com 埠 8000 上的本地主機地址。
-g
意味著允許我網路上的其他客戶端連接到我工作站上的埠 8001。否則,只有工作站上的本地客戶端才能連接到轉發埠。
-N
意味著我所做的只是轉發埠,不要啟動外殼。
-f
表示在成功的 SSH 連接和登錄後分叉到後台。埠 8001 將對許多連接保持打開狀態,直到 ssh 死亡或被殺死。如果你碰巧在 Windows 上,優秀的 SSH 客戶端 PuTTY 也可以做到這一點。使用 8001 作為本地埠和 localhost:8000 和目標,並在設置中添加本地埠轉發。您可以在與 PuTTY 成功連接後添加它。
在
socat
伺服器上:socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000
預設情況下,
socat
將在機器上的任何 IPv4 或 IPv6 地址(如果支持)上偵聽 TCP 埠 8001。您可以通過替換tcp-listen
為tcp4-listen
或將其限制為 IPv4/6tcp6-listen
,或通過添加,bind=that-address
.對於您要代理到的連接套接字,您可以使用任何地址代替
localhost
,並替換tcp
為tcp4
ortcp6
如果您想將地址解析限制為 IPv4 或 IPv6 地址。請注意,對於偵聽埠 8000 的伺服器,連接將顯示為來自代理(在 的情況下
localhost
,將是localhost
),而不是原始客戶端。您需要使用DNAT 方法(但需要超級使用者權限),以便伺服器能夠分辨出誰是客戶端。