当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

java-port-forwarding

内网端口转发
授权协议 DBAD license
开发语言 Java
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 常炯
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

java-port-forwarding

Across the intranet we can reach every corner in the world.

通过服务器,转发内网主机的TCP数据包,由服务器作为中间人,完成客户端到主机端的通信。

动态IP拨号上网无网络管理权限的主机提供对外服务,借以实现内网穿透。

加密转发数据,可避开路由器对端口及协议的封禁。

模块说明

名词解说

  • 主机端:需要被转发服务的电脑端

  • 服务器端:提供转发服务

  • 客户端:任意设备

比如,出差在外,需要通过手机(客户端)访问位于家中的一台台式机(主机端),可以通过一台服务器,来转发两者间的数据通信。

commander 服务器端

  • 内置SpringBOOT,提供了主机管理与端口转发配置,默认访问地址:http://serverip:8888。

  • 使用sqlite数据库

  • ${server.command.port}上开启监听,负责下发心跳测试包及指令到主机端。

  • ${server.forward.port}上开启监听,在服务器端下发转发指令后,主机端将连接到指令的端口上,然后同时也连接到服务器的此端口上,并将两者的输入输出流对接起来,以完成转发。

messenger 主机端

  • 无任何依赖

  • 可转发本机或局域网内其它任何机器的TCP数据包

设置

快速开始

  1. 按需修改两个模块下的配置文件,比如几个端口及主机端的服务器地址等。

  2. 使用Maven打包,mvn package,将会在target目录下分别生成服务器端original-commander-1.0-SNAPSHOT.jar和主机端messenger-1.0-SNAPSHOT.jar

  3. 在拥有固定IP的服务器端执行java -jar original-commander-1.0-SNAPSHOT.jar

  4. 在主机端执行java -jar messenger-1.0-SNAPSHOT.jar,如果需要后台运行,可执行javaw -jar messenger-1.0-SNAPSHOT.jar

  5. 使用初始账号admin及密码123456登陆http://serverip:8888/,进行主机端的端口转发管理。

  6. 别忘了修改初始登陆密码。

指令数据包结构

  • FA FA FA 协议头

  • 00 00 00 00 加密后的数据体长度

  • 00 00 00 00 主机ID

  • 00 00 指令,最高2位用于描述加密类型,01表示DES加密,后14位表示指令

  • ...... DES加密后的数据体

转发数据包结构

  • FA FA FA 协议头

  • 00 00 00 00 数据包长度

  • ........... DES加密后的数据体

  •       看了”子清行“朋友博客里的一篇文章,讲述了一个叫”DuplexPipe“的小工具的实现。最开始没怎么懂意思,看了他公开的源代码,是用java写的,一个jar包。可惜我不太会java,因此没法看。     回来想了半天,决定自己用C语言写一个。刚开始的目的是做一个能从外网连接到藏在NAT后面的内网的机子的程序,写了一天,大概300多行,能工作了,可是代码很糟糕,结构混乱,思路自己还蒙着。

  • 最近接手了一个bug,很诡异:产品发布的webservice不work了,报错:Connection refused. 查了一下,报错的webservice调用都来自于服务器本机,也就是说在本机的code中调用在本机上发布的webservice。挺丑陋,但不至于报错。 一番狠查之后发现从client 端到服务器并不能直接访问,而是经过了NAT port-forwarding 把针对公网server

  • Port Forwarding is configured on the router (machine making nat) and will forward connections originated from external clients to internal machine running asterisk. If using Linux/Netfilter, run, on r

  • 当我在本地主机上同时使用客户端和服务器进行测试时,其工作原理.但是随后,我将客户端和服务器拆分为具有不同IP地址的不同计算机,现在客户端未接收到数据包.任何人都可以发现我的代码存在的问题: 客户: class Csimudp { public static DatagramSocket ds; public static byte buffer[] = new byte[1024]; public

  •      -X      Enables X11 forwarding.  This can also be specified on a per-host basis in a configuration file.              X11 forwarding should be enabled with caution.  Users with the ability to byp

  • kafka.properties broker.id=1 #advertised.host.name=127.0.0.1 #listeners=PLAINTEXT://127.0.0.1:9092 port=9092 num.network.threads=3 num.io.threads=3 socket.send.buffer.bytes=102400 socket.receive.buffe

  • 我在新的MySQL 5.7数据库上启动Keycloak 7.0.1 这是Kubernetes部署规格:容器:-环境:-名称:KEYCLOAK_USER值:管理员-名称:KEYCLOAK_PASSWORD值:密码-名称:PROXY_ADDRESS_FORWARDING值:“ true”-名称:KEYCLOAK_LOGLEVEL值:INFO-名称:DB_VENDOR值:mysql-名称:DB_ADDR

  • 简介 用log来做调试的方法低效茫目 远程调试是jdk自带的一个有利调试工具,可以快速定位问题 在工作机上使用eclipse来自带的remote debug 问题 运维禁止使用remote debug, 因为若网络边界被攻破,内网开启java debug的机器将面临着巨大的风险。 使用端口转发来实现eclipse远程调试 给服务器的java进程加入调试参数: -Xdebug -Xrunjdwp:s

  • 环境 centos7 开始 想要在java中还是在其他方式访问dockerAPI都需要设置一个端口 运行以下命令:进入docker.service vi /lib/systemd/system/docker.service 找到Execstart=/usr/bin/dockerd后加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock  退出并且

  • 介绍 前段时间接了一个比较特殊的需求,需要做一个用于部署服务的服务。主要是将一个k8s服务集群部署到远端的服务器上,具体服务器的连接信息会通过接口传入。 本来部署是人工来完成的,无非是将一些必须的文件scp到目标服务器上,然后ssh远程登录,执行一些安装的操作,齐活。安装的流程没什么问题,主要是这些步骤需要使用代码来实现,也就是需要一个支持SSH的client库来执行这些操作 JSch is a

 相关资料
  • 本文向大家介绍SSH端口转发实现内网穿透的实现,包括了SSH端口转发实现内网穿透的实现的使用技巧和注意事项,需要的朋友参考一下 我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh

  • 在本章中,我们将了解如何使用JavaMail API转发电子邮件。 以下程序中遵循的基本步骤是: 在属性中获取具有POP和SMPT服务器详细信息的Session对象。 我们需要POP详细信息来检索消息和SMPT详细信息以发送消息。 创建POP3商店对象并连接到商店。 创建文件夹对象并在邮箱中打开相应的文件夹。 检索邮件。 如果要转发,请浏览消息并输入“Y”或“y”。 获取邮件的所有信息(收件人,发

  • 端口转发(Forwarded Port)。请求访问主机(你的电脑)上的某个端口,把请求转发到虚拟机上的某个端口。比如你在虚拟机上安装了一个 Web 服务器,默认它会在虚拟机上的 80 端口提供接待服务。你可以配置一个端口转发,当访问主机上的某个端口的时候,把请求转发到虚拟机上的 80 端口。下面通过一个试验你就很容易理解这个端口转发。 端口转发配置 打开 Vagrantfile,添加一行配置代码:

  • 问题内容: 我正在尝试制作一个使用 Redis* 作为后端的 Java应用程序 。由于 Redis 是一个非常快速的键值存储,我想使用它,但是 redis 可以与1个客户端一起使用,因此它没有user:pass身份验证的选项。我想找到一种实现某种身份验证的方法,因此我尝试了带有 redis2 扩展名的 nginx 。我这样做是因为我可以使用 客户端证书 和HTTPS。但这使我的应用程序非常慢。 *

  • 我遇到的问题是,我无法在我希望看到的端口上看到应用程序。我正在公开端口8080并在8080上运行uwsgi进程,但在浏览器中找不到ip地址的应用程序。我只是得到谷歌Chrome的‘此网页不可用’。(我使用的是Mac,所以我需要获得boot2docker的ip地址)。容器显然正在运行,并报告我的uwsgi和celery进程也都成功运行。 运行时,得到的响应如下 ...因此容器似乎正在接受端口8080

  • 问题内容: 我已经构建了一个打开ServerSocket的简单应用程序,并在连接时将其自身连接到远程计算机上的另一个服务器套接字。为了实现端口转发,我使用了两个线程,一个线程从本地输入流读取并向远程套接字输出流读取流,反之亦然。 该实现感觉有点差劲,所以我问您是否知道更好的实现策略,或者是否有一些代码可以以高效的方式实现。 PS:我知道我可以在Linux上使用IPTables,但是必须在Windo