假设我们希望有一台机器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实现外部访问你家里的内网应用, 说到这里你可以完全把它当成内网花生壳的功能. 按照上面描述的情况,配置我们的服务选项后如下

//sproxy_server使用 //守护进程模式 $proxy_conf['daemon'] = 1; //开放地址 $proxy_conf['host'] = '192.168.1.100'; //开放端口 $proxy_conf['ports'] = [ [9999, 7777, 0], //开放给用户端口,内部转发端口,是否http ]; //sproxy_client使用 $sproxy_conf = [ 'daemon' => 1, 'process_num' => 10, //指定代理服务地址+端口 'agent' => [ 'host' => '192.168.1.100', 'port' => 7777, ], //指定目标app地址+端口 'apps' => [ 'host' => '192.168.1.101', 'port' => 6379, ], ];

在A,B服务器分别运行

php sproxy_client.php php sproxy_server.php

赶紧部署试试吧

模拟内网花生壳功能时使用要点 需要一台有公网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 指定开启进程数量

tcpproxy:基于 Swoole 实现的 TCP 数据包转发工具的方法的更多相关文章

  1. WireShark抓包时TCP数据包出现may be caused by ip checksum offload

    最近用WireShark抓包时发现TCP数据包有报错:IP Checksum Offload,经过查阅资料终于找到了原因 总结下来就是wireshark抓到的数据包提示Checksum错误,是因为它截 ...

  2. [置顶] NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析--吐血放送

    NS2中对TCP数据包和ACK包的TCP Sink类的主要实现代码详尽剖析,限于个人水平,如有错误请留言指出! TcpSink类的recv()方法: void TcpSink::recv(Packet ...

  3. Wireshark抓包工具--TCP数据包seq ack等解读

    1.Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节 2.在二进制窗口中,如“DD 3D”,表示两个字节,一个字节8位 3.TCP数据包中,seq表示这个包 ...

  4. 【转载】TCP数据包结构

    最近在研究TCP协议,找了点资料,感觉很经典,所以转载过来. 如果本文中图片不能观看,请链接原始地址:http://xinxiangsui2018.blog.163.com/blog/static/1 ...

  5. [转]Wireshark抓包工具--TCP数据包seq ack等解读

    原文: http://blog.csdn.net/wang7dao/article/details/16805337/ ---------------------------------------- ...

  6. tcpdump 基于mac地址抓取数据包

    1.刚刚接触tcpdump时,常用tcpdump -i eth1 host 192.168.1.1 这个命令基于ip地址抓取数据包信息. tcpdump -i eth1(接口名称) host 192. ...

  7. LINUX下的远端主机登入 校园网络注册 网络数据包转发和捕获

    第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...

  8. 数据包编辑工具bittwiste

    数据包编辑工具bittwiste   bittwiste是数据包重放工具bittwist的一个工具.该工具可以编辑修改PCAP抓包文件.该工具提供数据包过滤功能,如根据范围和时间过滤.同时,该工具支持 ...

  9. 可视化数据包分析工具-CapAnalysis

    可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xpli ...

随机推荐

  1. 微信开发教程 Yank.WeiXin.Robot

    http://www.cnblogs.com/yank/category/539657.html

  2. Android ListView自定义Adapter使用误区

    参考博客:BaseAdapter中重写getview的心得以及发现convertView回收的机制 使用自定义的BaseAdapter实现LIstView的展示 由于Recycler(反复循环器)的机 ...

  3. window.location.href和window.open的几种用法和区别

    使用js的同学一定知道js的location.href的作用是什么,但是在js中关于location.href的用法究竟有哪几种,究竟有哪些区别,估计很多人都不知道了. 一.location.href ...

  4. [ROS]2 尝试编译OrbSLAM

    主要参考http://blog.csdn.net/dourenyin/article/details/48055441 1.编译g2o的过程中, 先是出现Eigen3依赖项的问题,要求Eigen3最低 ...

  5. javascript设计模式学习之二——this

    一.this指向问题 1)默认绑定,即作为独立的普通函数调用 此时this指向全局对象window,如果是严格模式下,则指向undefined; 2)隐式绑定,即具有调用上下文(一种场景就是作为对象的 ...

  6. Visual Studio 快速返回上次浏览/编辑的位置

    参考资料: http://stackoverflow.com/questions/4927375/how-to-navigate-back-to-the-last-cursor-position-in ...

  7. iOS UICollectionView之-(水平滚动)

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  8. vmware vcenter appliance dhcp 改为 静态IP导致web service认证失败

    参考 http://www.davidhill.co/2012/09/failed-to-connect-to-vmware-lookup-service/ Failed to connect to ...

  9. duplicate database的时候,rman连接 auxiliary database的后状态不正确

    duplicate database的时候,rman连接 auxiliary database的后状态不正确 auxiliary database 已经被startup nomount,但是rman连 ...

  10. git打tag 三步骤

    git status git tag publish/1.0.0 git push origin publish/1.0.0