前言

原文发布于: http://blog.ztgreat.cn/article/51

Netty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持,对于目前而言,只要互联网存在,那么网络IO 也将存在,就目前的形式而言,硬件越来越好,带宽也越来越大,这个时候IO的瓶颈就凸显了出来,个人觉得,掌握一门IO框架是很重要的,不能仅仅的学会做点应用层,对于中下层还是需要熟悉的,这样才能健全整个知识体系,越是上层的东西,更新换代也快,但是很多时候思想都是差不多的,万变不离其宗,稳扎稳大的弄好基础,这才是关键。

这个proxy 是LZ 基于Netty 闲暇时间写的,通过名字也知道这个是一个代理程序,其实网上有很多类似这样的程序,当然不仅仅局限于Java 语言,LZ是网络专业出身的,因此比较喜欢研究一下网络工具,有的时候很想让自己的内网主机暴露出去,可以通过外部访问,这样不仅方便调试程序,而且很容易控制。

这款 proxy 呢,可以通过公网服务器访问内网主机,目前仅支持tcp流量转发,是的,需要借助公网服务器,但是不需要把本机的服务部署在公网,这个还是会减少很多工作量的,而且大家也知道,云服务器的资源那是大大的宝贵,当然网上流行的内网穿透,不借助公网服务器,直接穿透内网,以LZ的网络知识,我只想说很难,而且这个在不同的网络环境下影响很大,极大可能性就是不稳定。

proxy 最开始的版本是通过端口转发的,但是这样就需要不同的服务绑定不同的端口,这无疑是一种资源浪费,同时需要开放公网服务器的端口,这样也不好,现在呢可以通过域名转发,同时也可以配合nginx来使用。

工作流程

上面呢就是proxy的工作模式,很多的代理软件模式都差不多是这样的,代理服务器和代理客户端呢通过私有的协议进行通信。

代理客户端先和代理服务器建立连接,代理服务器通过不同的域名(或端口)来区分具体的代理服务,用户通过访问代理服务器的指定域名(或端口),然后代理服务器将数据转发给代理客户端,客户端再转发数据给真实服务器,当客户端接收到真实服务器响应后,再传输给代理服务器,代理服务器再将数据传送给用户,完成一次请求。

example

(1)通过外网访问本机的mysql

- serverport: 3307proxyType: tcprealhost: 127.0.0.1realhostport: 3306description: mysql 代理

配置服务端,将服务端程序运行在公网服务器,同时开放3307端口,本地运行客户端(需要简要配置),这样通过外网ip或者域名访问其3307端口,便是访问内网本机的3306端口了。

(2)ssh 服务

- serverport: 2222proxyType: tcprealhost: 172.16.254.63realhostport: 22description: ssh 代理

配置服务端,将服务端程序运行在公网服务器,同时开放2222端口,本地运行客户端(需要简要配置),这样通过外网ip或者域名访问其2222端口,便是访问**内网本机(172.16.254.63)**的22端口了。

(3)域名转发

- domain:  proxy.ztgreat.cnproxyType: httprealhost: 127.0.0.1realhostport: 8080description: http代理

访问proxy.ztgreat.cn 实际访问的便是本机的8080端口

通过域名转发,是共享的同一个端口(非80),这样需要入口配合nginx来使用

项目情况

proxy 整体很简单,只是可能有点繁琐,鉴于LZ水平还很菜,代码质量也就一般般,还有很多待完善,后面根据需求,不断完善吧,慢慢来。
https://github.com/ztgreat/proxy

基于Netty的代理工具Proxy相关推荐

  1. 基于FRP反向代理工具实现内网穿透攻击

    文章目录 前言 FRP反向代理 内网环境搭建 服务端的配置 客户端的配置 FRP内网穿透 FRP进阶使用 fscan内网神器 总结 前言 当我们拿下目标单位的一台外网服务器后,需要借助外网服务器作为跳 ...

  2. 自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)

    emmm,昨天蘑菇街一面,我感觉面试官特别好,最后的时候给了我一些建议和方向,感觉启发很大.面试过程中,问了我几个相对开放的问题,没怎么问基础.但是我感觉我答的不很好,第一次面大公司有点紧张.希望过过 ...

  3. 基于Netty的RPC简易实现

    代码地址如下: http://www.demodashi.com/demo/13448.html 可以给你提供思路 也可以让你学到Netty相关的知识 当然,这只是一种实现方式 需求 看下图,其实这个 ...

  4. 端口转发与代理工具 内网代理 内网反弹代理

    目录 一.LCX 二.nc 反弹 三.socks代理工具 四.frp 内网穿透利器 五.ngrok 内网穿透 理论上,任何接入互联网的计算机都是可访问的,但是如果目标主机处于内网,而我们又想和该目标主 ...

  5. 接口测试准备一、 网路基础 常用代理工具 charles使用 Android手机代理抓包

    移动互联网公司技术架构 接口测试的必要性 1.行业成熟方案 2.更早份发现问题 3.更快的质量反馈 接口测试不能替代UI测试 1.接口测试有很多优点,但是保证的好似后端的质量,不能解决移动端的额质量 ...

  6. Ubuntu22.04虚拟机配置及使用代理工具

    特别注意:本教程基于VMware虚拟机,安装Ubuntu22.04.其他类型虚拟机及Linux其他版本配置相似但有所不同. 1. 虚拟机配置 1.1 打开虚拟机设置. 或 1.2 选择硬件选项卡-网络 ...

  7. AsyncHttpClient源码分析-基于Netty的连接池实现

    原文地址:asynchttpclient源码分析-基于Netty的连接池实现 最近项目重构,有了个机会更多接触一个有别于HttpAsyncClient的异步网络框架AsyncHttpClient,是个 ...

  8. 基于Netty的Android局域网IP电话

    PhoneCall 此项目为基于netty框架实现的局域网内的ip电话,实现了先录音然后进行混音的功能,并且在github上传了demo可以进行测试. 一.介绍 基于netty框架开发的局域网IP电话 ...

  9. 《Kubernetes部署篇:基于docker使用kubespray工具离线部署高可用K8S集群(国内专网方案)》

    文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...

最新文章

  1. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
  2. 如何卸载sql2008,完全清除
  3. 决策树和随机森林(上)
  4. s5-2 Cpu调度算法
  5. leetcode340. 至多包含 K 个不同字符的最长子串
  6. CURL 错误码 中文翻译
  7. Zabbix自带模板监控MySQL服务
  8. html css没有反应,只有CSS和HTML的标签没有正确响应
  9. htc m7位置服务器,HTC M7 解锁教程(附htc one m7 解锁工具)
  10. [2018.10.25 T3] 旅程
  11. 抖音做综艺,差点意思
  12. linux系统玩什么游戏,linux系统可以玩什么网游
  13. eval在python中的作用_浅谈Python中eval的强大与危害
  14. 深信服EDR终端检测平台-任意用户登录漏洞复现
  15. Hadamard矩阵和Kronecker积
  16. 尚医通(九)数据字典模块前后端 | EasyExcel
  17. 行式数据库 VS 列式数据库
  18. 避免踩踏悲剧|AI赋能城市应急,让智慧景区更安全
  19. 鱼塘钓鱼 贪心算法
  20. leetcode-位运算

热门文章

  1. Cesium点线面绘制
  2. Javascript:window.close()不起作用?
  3. 【行人惯性导航】关于行人导航中IMU位姿推导的知识点及相关代码
  4. 享拍app v1.8.1官方iPhone版
  5. 2050让年青人因科技而团聚,你会来吗?
  6. HDU - 1237 简单计算器
  7. Yii2 定制表单输入字段的标签和样式
  8. 商品期货的模拟盘能打印交易记录吗(商品期货的模拟盘能打印交易记录吗为什么)
  9. 看了 4K 经典中视频,我才知道 30 多年前的艺术家有多牛
  10. 无线充电原理介绍 之 RT1650产品介绍【强烈推荐】