基于Netty的代理工具Proxy
前言
原文发布于: 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相关推荐
- 基于FRP反向代理工具实现内网穿透攻击
文章目录 前言 FRP反向代理 内网环境搭建 服务端的配置 客户端的配置 FRP内网穿透 FRP进阶使用 fscan内网神器 总结 前言 当我们拿下目标单位的一台外网服务器后,需要借助外网服务器作为跳 ...
- 自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)
emmm,昨天蘑菇街一面,我感觉面试官特别好,最后的时候给了我一些建议和方向,感觉启发很大.面试过程中,问了我几个相对开放的问题,没怎么问基础.但是我感觉我答的不很好,第一次面大公司有点紧张.希望过过 ...
- 基于Netty的RPC简易实现
代码地址如下: http://www.demodashi.com/demo/13448.html 可以给你提供思路 也可以让你学到Netty相关的知识 当然,这只是一种实现方式 需求 看下图,其实这个 ...
- 端口转发与代理工具 内网代理 内网反弹代理
目录 一.LCX 二.nc 反弹 三.socks代理工具 四.frp 内网穿透利器 五.ngrok 内网穿透 理论上,任何接入互联网的计算机都是可访问的,但是如果目标主机处于内网,而我们又想和该目标主 ...
- 接口测试准备一、 网路基础 常用代理工具 charles使用 Android手机代理抓包
移动互联网公司技术架构 接口测试的必要性 1.行业成熟方案 2.更早份发现问题 3.更快的质量反馈 接口测试不能替代UI测试 1.接口测试有很多优点,但是保证的好似后端的质量,不能解决移动端的额质量 ...
- Ubuntu22.04虚拟机配置及使用代理工具
特别注意:本教程基于VMware虚拟机,安装Ubuntu22.04.其他类型虚拟机及Linux其他版本配置相似但有所不同. 1. 虚拟机配置 1.1 打开虚拟机设置. 或 1.2 选择硬件选项卡-网络 ...
- AsyncHttpClient源码分析-基于Netty的连接池实现
原文地址:asynchttpclient源码分析-基于Netty的连接池实现 最近项目重构,有了个机会更多接触一个有别于HttpAsyncClient的异步网络框架AsyncHttpClient,是个 ...
- 基于Netty的Android局域网IP电话
PhoneCall 此项目为基于netty框架实现的局域网内的ip电话,实现了先录音然后进行混音的功能,并且在github上传了demo可以进行测试. 一.介绍 基于netty框架开发的局域网IP电话 ...
- 《Kubernetes部署篇:基于docker使用kubespray工具离线部署高可用K8S集群(国内专网方案)》
文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...
最新文章
- python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
- 如何卸载sql2008,完全清除
- 决策树和随机森林(上)
- s5-2 Cpu调度算法
- leetcode340. 至多包含 K 个不同字符的最长子串
- CURL 错误码 中文翻译
- Zabbix自带模板监控MySQL服务
- html css没有反应,只有CSS和HTML的标签没有正确响应
- htc m7位置服务器,HTC M7 解锁教程(附htc one m7 解锁工具)
- [2018.10.25 T3] 旅程
- 抖音做综艺,差点意思
- linux系统玩什么游戏,linux系统可以玩什么网游
- eval在python中的作用_浅谈Python中eval的强大与危害
- 深信服EDR终端检测平台-任意用户登录漏洞复现
- Hadamard矩阵和Kronecker积
- 尚医通(九)数据字典模块前后端 | EasyExcel
- 行式数据库 VS 列式数据库
- 避免踩踏悲剧|AI赋能城市应急,让智慧景区更安全
- 鱼塘钓鱼 贪心算法
- leetcode-位运算