Skip to content

Commit

Permalink
重构2.0版本
Browse files Browse the repository at this point in the history
  • Loading branch information
likedan130 committed Oct 13, 2021
1 parent 81fce45 commit 5e7308e
Show file tree
Hide file tree
Showing 182 changed files with 4,235 additions and 2,545 deletions.
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
HELP.md
netty-log/*
target/
!.mvn/wrapper/maven-wrapper.jar
target/**
!**/src/main/**
!**/src/test/**
mvnw*
Expand Down
73 changes: 49 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,53 +3,78 @@
基于netty的TCP/Http请求转发代理程序

## 简介
 在特定的网络环境或安全审计要求下,我们可能会面临网络被限定为单向访问的情况,本工具可以实现在单向网络中设置代理从而实现双向访问的目的。可简单用作内网穿透工具。
 在特定的网络环境或安全审计要求下,我们可能会面临网络被限定为单向访问的情况,本工具可以实现在单向网络中设置代理从而实现双向访问的目的。可简单用作内网穿透工具。也可以配置成LVS负载均衡服务

## 依赖/知识准备
- netty-高性能NIO通信框架
- tcp/ip通信基础知识

## 工具原理说明
1. [通信协议](代理程序通信协议.docx)
1. [通信协议](doc/代理程序通信协议.docx)
-----
2. 程序运行时序图![image](https://github.com/likedan130/netty-nat/blob/master/netty-nat%E6%97%B6%E5%BA%8F%E5%9B%BE.png)
2. 程序运行时序图![image](doc/netty-nat%E6%97%B6%E5%BA%8F%E5%9B%BE.png)
-----
3. 网络拓扑图![image](https://github.com/likedan130/netty-nat/blob/master/netty-nat%E7%BD%91%E8%B7%AF%E6%8B%93%E6%89%91%E5%9B%BE.png)
3. 网络拓扑图![image](doc/netty-nat%E7%BD%91%E8%B7%AF%E6%8B%93%E6%89%91%E5%9B%BE.png)

## 使用方式
1. **将项目克隆到本地**
2. **修改配置文件**
项目包含两个独立配置文件,分别为
 netty-nat
 |--netty-client
 |----properties.properties
 |--netty-server
 |----properties.properties
 netty-nat
 |--netty-client
 |----properties.yml
 |--netty-server
 |----properties.yml
- client对应properties配置:
internal.server.port          代理程序服务端端口
internal.server.host          代理程序服务端地址
proxy.client.port         被代理程序的端口
proxy.client.host         被代理程序的地址
internal.channel.init.num      代理程序内部连接池初始大小
internal.channel.max.idle.num   代理程序内部连接池最大空闲连接数
internal.channel.min.idle.num    代理程序内部连接池最小空闲连接数

```yaml
#内部连接池大小,内部连接只需转发外部与被代理服务间业务数据,可重用通道
internal:
channel:
init:
num: 10
#服务端ip和端口
server:
host: 127.0.0.1
port: 8083
#隧道信息,一条完整的外部>>服务端>>客户端>>被代理服务间的通路称为隧道
tunnel:
#tunnel示例,代理本地的mysql数据库服务和nacos服务
#服务端监听端口
- serverPort: 9000
#客户端连接的被代理服务端口
clientPort: 3306
#客户端连接的被代理服务端口
clientHost: 127.0.0.1
- serverPort: 9001
clientPort: 8848
clientHost: 127.0.0.1
#接入请求的接入密码
password: '123456'
```
- server对应properties配置:
proxy.server.port         代理程序开发服务端口
internal.server.port           代理程序内部连通端口(对应client配置中internal.server.port)
```yaml
#内部通信使用的端口,需要与客户端的internal.server.port值保持一致
internal:
server:
port: 8083
```
3. **打包**
项目中使用maven管理第三方依赖,打包使用maven-jar-plugin,自定义打包行为定义在项目根目录的assembly.xml中,打包时执行:
```mvn clean package -Dmaven.test.skip=ture```
```mvn clean package -Dmaven.test.skip=ture```
4. **部署**
项目打包后获得 项目名称-版本号.zip
解压后获得
解压后获得

- 项目主运行jar 项目名称-版本号.jar
- 项目第三方包依赖目录 libs
- 项目配置文件目录 config
将解压后文件及目录保持当前层级关系上传至服务器
- 项目配置文件目录 config
将解压后文件及目录保持当前层级关系上传至服务器
5. **启动**
进入项目根目录
调整config目录下的log4j.properties为当前服务器相关配置
运行```java -Dlog4j.configuration=file:./config/log4j.properties -jar nat-server-1.0-SNAPSHOT.jar & ```启动服务端
观察到 InternalServer started on port xxxx......即表示服务启动成功
运行```java -Dlog4j.configuration=file:./config/log4j.properties -jar nat-client-1.0-SNAPSHOT.jar & ```启动客户端

Binary file added doc/netty-nat时序图.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added doc/~$程序通信协议.docx
Binary file not shown.
Binary file added doc/代理程序通信协议.docx
Binary file not shown.
133 changes: 0 additions & 133 deletions nat-client/src/main/java/client/InternalClient.java

This file was deleted.

50 changes: 0 additions & 50 deletions nat-client/src/main/java/client/ProxyClient.java

This file was deleted.

74 changes: 0 additions & 74 deletions nat-client/src/main/java/client/decoder/ByteToPojoDecoder.java

This file was deleted.

Loading

0 comments on commit 5e7308e

Please sign in to comment.