先说几句空话。论坛里面的机油有些时刻会会问类似的标题,譬如这两个严重帖对于某内网3389端口转发不出来 ,内网转发的标题严重,但凡内网没法转出来,独霸我上次发布的工具很简单就转出来了。再譬如这几个严重帖:提权,内网,国际的办事器,转发的时刻涌现这类情况 ,固然我没有试过,但是目测和上面的情况差不多。至因此甚么原由,我在这里简单说一下:
原由很简单,我们大要把端口转发工具(如lcx等)构思成一个桥,因为客户端和远程主机没法直连气儿接,必要一个桥梁才大要建立邻接,正常情况下,这个桥梁建立起来后,就不会被被动拆掉。但是有一些不凡情况,譬如,办事端负载较多,版本纷歧致,邻接客户端太多等标题,乡村导致桥梁建立起来后会被办事器被动拆掉。假设是直连气儿接,mstsc客户端会被动重连,而办事器端收到被动重连,会正常建立起邻接来,也即是说有些情况必要2次大要或许更频繁,才大要建立侵蚀的邻接。而假设转发工具没有思索到这一点,就会在办事器拆掉桥梁后没法再次把桥梁被动架起来,导致转发成功,经典的成功成果下列图所示:
知道原由后,筹划方式就很简单,那即是让工具否决被动重连就OK了,大要严重秒掉。说了半天空话,上面说第二天的重点模式。
阐明:
四月份,我写了端口转发工具第一版,只否决TCP传输,Windows平台。事后,又想要否决端口复用,因此对工具进级。端口复用没有侵蚀,但是照常对挨次做了大的改进,目前否决UDP和TCP双通道转发,否决WINDOWS和LINUX平台(跨平台,双通道端口转发)。假设防火墙对TCP无限制,大要尝尝UDP通道(纷歧定相对大要颠末)。至于LINUX的转发,也是有实践意义的,我就用它来SSH登录过内网的LINUX主机。(话说这次改进很心酸,写了好几天,主假设碰到种种蛋疼标题,唉~~我把碰到的标题也记载上去了,种种蛋疼啊。。)
上面开端注解:
1.端口复用尝试
1).颠末SOCKET的选项SO_REUSEADDR来终了复用测试:
1234567891011121314 | ServerAddr.sin_family=AF_INET; ServerAddr.sin_addr.s_addr=inet_addr("10.104.171.216");//当地对外ip。也即是本机的公网IP地址 ServerAddr.sin_port=htons(RECV_PORT); val=TRUE; if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val))!=0)//设置socket选项用来重绑定端口 { printf("设置socket选项错误!n"); return(-1); } if(bind(sock,(struct sockaddr FAR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)//绑定端口 { printf("socket绑定成功!"); return(-1); } |
?
实验测试,在一台2003的机子上复用成功,此路摒弃。2).API HOOK,来截获80端口,从而完成复用2).Windwos的远程桌面和Linux的SSH,建立邻接后,第一个包的发起者不同。前者是客户端发送第一个包,后者是办事端发送第一个包。这一点, 对Windows和Linux的转发的流程,和独霸递次有影响。
四.挨次独霸阐明
挨次参数下列:
而后,linux的SSH反弹返来:
这样,就大要侵蚀登录SSH了:
2.Windows下的UDP通道测试。
同样,先在主机上监听端口,背面不要加-linux参数,而是加-udp参数:
而后,远程主机反弹返来:
而后,mstsc邻接畴前: