Netty_Proxy内网穿透操作概要

Mars 2019年11月06日 54次浏览

Netty_Proxy

基于Netty实现的Tcp请求内网穿透,目前已测试SSH和Http均可以穿透。服务端必须部署在公网服务器上,客户端部署在需要被穿透的内网服务器。

Server

启动命令:  java -jar server.jar -port 9527 -password 123lmy

或者简写:  java -jar server.jar -p 9527 -pwd 123lmy

  • p 服务端端口
  • pwd 服务端token校验

Client

http服务:

启动命令:  java -jar client.jar -host 47.96.158.922 -port 9527 -password 123lmy -proxy_host localhost -proxy_port 8080 -remote_port 12135

或者简写:   java -jar client.jar -h 47.96.158.922 -p 9527 -pwd 123lmy -proxy_h localhost -proxy_p 8080 -remote_p 12135

  • h       服务端ip地址,可以是阿里云
  • p       服务端端口,如果是阿里云需要带控制台暴露该端口
  • pwd     服务端token校验
  • proxy_h  内网被代理的服务ip,因为客户端在内网,所以一般为localhost
  • proxy_p  内网被代理的服务端口
  • remote_p 需要公网,即服务端暴露访问内网应用的端口

ssh服务:

  java -jar client.jar -h 47.96.158.922 -p 9527 -password 123lmy -proxy_h localhost -proxy_p 22 -remote_p 12222

  • proxy_p 这是内网ssh连接端口,一般默认是22
  • remote_p 服务端暴露访问ssh的端口
如使用ssh连接工具输入以下即可连接成功:
	ip: 47.96.158.922
	port:12222
	username:xxx
	password:xxx

本地测试

server:

java -jar server.jar -port 9527 -password 123lmy

client:

http:

java -jar client.jar -host localhost -port 9527 -password 123lmy -proxy_host localhost -proxy_port 8080 -remote_port 12135


测试http的web服务穿透:   本地开启一个web服务,暴露端口8080,在启动服务端和客户端之后,浏览器输入 localhost:12135即可访问到web应用。

ssh

  java -jar client.jar -h localhost -p 9527 -password 123lmy -proxy_h localhost -proxy_p 22 -remote_p 12222


测试ssh服务穿透:   在启动服务端和客户端之后,本地打开ssh连接工具,输入ip为localhost,端口为12222,再输入连接本机ssh的账号密码,即可连接到本机ssh。

心跳机制说明

由于客户端和服务端共用同一个超时机制,如果读写超时同时存在,就必须设置读超时大于写超时。