Tunnel #
gost #
GO Simple Tunnel - GO语言实现的安全隧道
本地端口转发(TCP) #
本地端口转发(TCP):
1gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。当代理链末端(最后一个-F参数)为SSH转发通道类型时,gost会直接使用SSH的本地端口转发功能:
1gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
例如,将本地的443
端口转发到192.168.101.11
的5001
端口:
1gost -L=tcp://:443/192.168.101.11:5001 > gost.log 2>&1 &
Windows Server PortProxy #
portproxy是Windows中的一项 端口代理(Port Proxy)技术,依赖于 netsh 工具的 portproxy 功能。它用于在本地机器上监听特定的端口,并将流量转发到目标地址和端口。
注意 此功能属于 Windows TCP/IP 堆栈的一部分,可以视为轻量级的代理实现或端口转发解决方案。
主要功能:
- 允许将本地的网络流量通过一个指定端口转发到另一台计算机上的端口。
- 可以在同一网络接口之间(例如 IPv4 到 IPv4 或 IPv6 到 IPv6)转发,也可以跨协议(例如 IPv4 到 IPv6)进行转发。
netsh interface portproxy
通过在Windows操作系统内核中设置一个代理规则,监听本地的指定端口。一旦有数据流入指定端口,系统会根据规则将数据包转发到目标地址和端口。
常见用途:
- 远程服务访问:当目标机器和服务处于 NAT 或防火墙后,使用端口转发可以简化访问。
- 测试和调试:开发人员常用于模拟不同网络场景,或将特定服务的流量重定向到本地。
- 代理服务:本地端口代理可以被用作简易的代理服务,提供间接的访问。
对于作为代理服务的常用场景是:
- 只在某台Windows上安装了VPN软件,只有从这台Windows才能ssh到VPN连接内网中的一台windows服务器,通过在这台Windows上设置端口代理,可以将这台Windows的某个端口转发到内网的Linux服务器的ssh端口。这样就可以从Windows服务器所在网络的其他机器(Linux, MacOS)等间接ssh到内网的Linux服务器。
- 只在某台Windows上安装了VPN软件,连上VPN后,只能在这台Windows上的用浏览器访问某https协议的堡垒机系统。通过在这台Windows上设置端口代理,可以将这台Windows的某个端口转发堡垒机系统的https端口。这样就可以从Windows服务器所在网络的其他机器(Linux, MacOS)等间接访问堡垒机系统。
上面两个场景,可借助这台Windows上的portproxy,通过只在这台windows上安装VPN,以这台windows作为跳板机访问特定的网络。避免了在客户端机器(MacOS, Linux)安装VPN软件,尤其是一些软件只提供了Windows版本的情况。
注意 端口代理涉及系统级网络配置,必须在管理员权限下执行命令。需要确保本地的防火墙允许监听的端口通信。
例子:将Windows上的本地端口 20022
转发到10.10.100.17
的22
端口,可以使用以下命令创建规则:
1netsh interface portproxy add v4tov4 listenport=20022 listenaddress=0.0.0.0 connectport=22 connectaddress=10.10.100.17
上面的命令将监听本地机器上的 20022
端口,并将所有传入的连接转发到 10.10.100.17
的 22
端口。在此之后,可以通过连接到 Windows 机器的 20022
端口来访问 10.10.100.17
的 22
端口。
查看本地端口是否已经监听:
1netstat -ano | findstr LISTENING | findstr 20022
2 TCP 0.0.0.0:20022 0.0.0.0:0 LISTENING 3104
如果需要查看已配置的端口转发规则,可以使用以下命令:
1netsh interface portproxy show all
2
3侦听 ipv4: 连接到 ipv4:
4
5地址 端口 地址 端口
6--------------- ---------- --------------- ----------
70.0.0.0 20022 10.10.100.17 22
删除规则:
1netsh interface portproxy delete v4tov4 listenport=20022 listenaddress=0.0.0.0
清除所有端口转发规则:
1netsh interface portproxy reset