设计思路:中转服务器放在移动端,移动端使用动态ip,每次自动调整ip都会将信息发送到指定位置A。所有客户端都会直接访问位置A寻找当前移动端ip然后访问移动端。移动端服务器收到客户端访问请求,会记录客户端用户名、ip和端口到指定位置A。
等上述过程结束,客户端就可以访问指定用户名的计算机。
设计一个自己的DNS工具,当用户启动工具,工具会修改本地dns文件来实现用户名到真实ip的映射。
指定位置A:mysql数据库(使用邮箱替代数据库)
可以通过数据库传递命令。
id | username | ip | port |
1 | proxy_server | 127.0.0.1 | 1221 |
2 | web_server | 127.0.0.1 | 1234 |
云服务器配置端口:1(80:web服务器),2(23:ftp服务器),3(1221:自定义服务器)
服务器A:发送一个访问外网的请求(绑定自己的端口),获取本机的公网ip(ip_a)并存储到数据库
客户端B:先获取需要扫描的ip列表,然后依次扫描ip1,ip2,ip3的端口,依次给各个端口发送数据包,如果获得A给予的正确响应数据包,那么将对应的端口存储到数据库(port_a)
守护进程C:处于用户PC端,提供超级链接直接连接到指定的服务器ip_a:port_a。
A每次启动都会访问数据库,修改公网ip,将端口置0
B定时检测端口,如果为0,则启动扫描,找到对应的端口,则修改数据库中的端口信息,停止扫描。
C已启动就去数据库获取信息,端口不为0则返回数据。
壳的用法:域名指向ip与客户端ip必须相同,否则当前网络与壳选择的网络线路不统一。