wai*_*ain 110 networking tcp port-forwarding tunneling
我有一个开发服务器,只能从 127.0.0.1:8000 访问,不能从 192.168.1.x:8000 访问。作为一个快速的黑客,有没有办法设置一些东西来监听另一个端口(比如 8001),这样我就可以从本地网络连接 192.168.1.x:8001 并且它会在客户端和 127.0 之间建立流量隧道.0.1:8000?
Sté*_*las 138
随着socat在服务器上:
socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000
Run Code Online (Sandbox Code Playgroud)
默认情况下,socat将侦听计算机上任何 IPv4 或 IPv6 地址(如果支持)上的 TCP 端口 8001。您可以通过替换tcp-listen为tcp4-listen或将其限制为 IPv4/6 tcp6-listen,或者通过添加,bind=that-address.
与您要代理的连接套接字相同,您可以使用任何地址代替localhost,并替换tcp为tcp4或者tcp6如果您想将地址解析限制为 IPv4 或 IPv6 地址。
请注意,对于侦听端口 8000 的服务器,连接将显示为来自代理(在 的情况下localhost,将是localhost),而不是原始客户端。您需要使用DNAT 方法(但需要超级用户权限)才能让服务器知道谁是客户端。
pen*_*359 67
使用 ssh 是最简单的解决方案。
ssh -g -L 8001:localhost:8000 -f -N user@remote-server.com
这会将您工作站上的本地端口 8001 转发到 remote-server.com 端口 8000 上的本地主机地址。这
-g意味着允许我网络上的其他客户端连接到我工作站上的端口 8001。否则,只有工作站上的本地客户端才能连接到转发端口。
-N意味着我所做的只是转发端口,不要启动 shell。
-f意味着在成功的 SSH 连接和登录后分叉到后台。
端口 8001 将为许多连接保持打开状态,直到 ssh 终止或被终止。如果您碰巧在 Windows 上,优秀的 SSH 客户端 PuTTY 也可以做到这一点。使用 8001 作为本地端口和 localhost:8000 和目的地,并在设置中添加本地端口转发。成功连接 PuTTY 后即可添加。
not*_*ser 61
使用传统nc是最简单的解决方案:
nc -l -p 8001 -c "nc 127.0.0.1 8000"
Run Code Online (Sandbox Code Playgroud)
此版本在 Ubuntu 上nc的netcat-traditional软件包中。(你必须update-alternatives或调用它nc.traditional。)
请注意,与 ssh 相比,这不是加密的。如果您在一台主机之外使用它,请记住这一点。
小智 34
OpenBSD netcat 默认在 Linux 和 OS X 上可用。
操作系统:
mkfifo a
mkfifo b
nc 127.0.0.1 8000 < b > a &
nc -l 8001 < a > b &
Run Code Online (Sandbox Code Playgroud)
Linux:
mkfifo backpipe
nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe
Run Code Online (Sandbox Code Playgroud)
在 OS X bash 上工作的另一种方法是使用双向管道。它可能适用于其他 Unix:
nc 127.0.0.1 8000 <&1 | nc -l 8001 >&0
Run Code Online (Sandbox Code Playgroud)
小智 5
在 ServerFault 上引用David Spillett的回答
rinetd 应该可以完成这项工作,并且可以从http://www.boutell.com/rinetd/获得它的 Windows 二进制文件(对于在 Linux 下寻找相同内容的任何人,rinetd 位于几乎每个发行版的标准存储库中因此可以使用“apt-get install rinetd”或“yum install rinetd”或类似工具进行安装)
它是一个简单的二进制文件,采用以下格式的配置文件
bindaddress bindport connectaddress connectport
例如:
192.168.1.1 8001 127.0.0.1 8000
或者
0.0.0.0 8001 127.0.0.1 8000
如果要将传入端口绑定到所有接口。