基于swoole实现的TCP数据包转发 TCPproxy

码农软件 · 软件分类 · 网络工具包 · 2019-02-25 11:11:48

软件介绍

基于swoole实现的TCP数据包转发,可用于转发请求包到指定应用,可实现内网花生壳等类似功能。

原理图:

假设我们希望有一台机器A(ip 192.168.1.101)要开放端口6379给用户访问,但可能实际情况是用户无法直接访问到A(ip 192.168.1.101), 但却有一台机器B(ip 192.168.1.100) 可以开放一些其他端口给用户访问,为了让用户通过B(ip 192.168.1.100)能访问到A(ip 192.168.1.101)上6379端口,基于swoole实现的Tcpproxy解决了这个问题! 当然你可以联想到我们家里的内部机器是在外网无法访问的,可正好你有一台云服务器,所以我们可以通过Tcpproxy实现外部访问你家里的内网应用, 说到这里你可以完全把它当成内网花生壳的功能. 按照上面描述的情况,配置我们的服务选项后如下:

//守护进程模式
$proxy_conf['daemon'] = 0;

//开放给用户的公网的ip
$proxy_conf['public_ip'] = '192.168.1.100';
//开放给用户的公网的端口
$proxy_conf['public_port'] = 9999;
//代理内部中转端口
$proxy_conf['public_proxy_port'] = 6677;

//内部无法开放给公网的ip
$proxy_conf['local_ip'] = '192.168.1.101';
//内部无法开放给公网的端口
$proxy_conf['local_port'] = 6379;
//开放连接数
$proxy_conf['open_num'] = 10;

在B服务器运行

php proxy_server.php

在A服务器运行

php proxy_client.php

演示

为了在本机测试,我简化A,B为本地,通过本地9999访问本地6379应用,

//开放给用户的公网的ip
$proxy_conf['public_ip'] = '127.0.0.1';
//开放给用户的公网的端口
$proxy_conf['public_port'] = 9999;
//代理内部中转端口
$proxy_conf['public_proxy_port'] = 6677;

//内部无法开放给公网的ip
$proxy_conf['local_ip'] = '127.0.0.1';
//内部无法开放给公网的端口
$proxy_conf['local_port'] = 6379;
//开放连接数
$proxy_conf['open_num'] = 10;

模拟内网花生壳功能时使用要点

  • 需要一台有公网ip运行proxy_server.php开放给用户访问

  • 在你的内网运行proxy_client.php来代理你的应用

为了调试更方便,对于内内网无php&swoole环境的,我们提供了sproxy,功能同proxy_client.php

make
#单以多进程模式运行
./sproxy_process -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d
#或以多进程多线程模式运行
./sproxy_thread -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d
  • -d 指定以守护进程模式运行

  • -s 指定proxy_server.php内部地址和端口

  • -t 指定需要代理app运行地址和端口

  • -c 指定开启进程数量

为你推荐:

本文地址:https://www.codercto.com/soft/d/93.html

数据库系统实现

数据库系统实现

加西亚-莫利纳(Hector Garcia-Molina)、Jeffrey D.Ullman、Jennifer Widom / 杨冬青、吴愈青、包小源 / 机械工业出版社 / 2010-5 / 59.00元

《数据库系统实现(第2版)》是斯坦福大学计算机科学专业数据库系列课程第二门课的教科书。书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分——存储管理器、查询处理器和事务管理器的实现技术。此外,第2版充分反映了数据管理技术的新进展,对内容进行了扩充,除了在第1版中原有的“信息集成”一章(第10章)中加入了新的内容外,还增加了两个全新的章:“数据挖掘”(第11章)和“数据......一起来看看 《数据库系统实现》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具