通过阿里云服务器(frp内网穿透工具),实现跨局域网ModbusTcp通信

写在开头:

本文是基于windows系统,本文实现内网穿透需要下载的工具只有frp,所用云服务器为阿里云服务器。

笔者是某211高校在读研究生。本文是基于CSDN上其他前辈的文章,由我个人总结出的经验教训,旨在帮助有需要的各位解决各种问题,也方便我日后复习。那些关键代码不是我写的,但本文也绝对不是完全的复制粘贴,希望我的个人理解能够对你有所帮助。第一次发文章,希望不要涉及侵权的问题,如有不妥之处还请见谅。

步入正文:

要实现通过云服务器+ frp进行跨局域网数据传输,首先,在云服务器和要内网穿透的本机电脑都要下载frp压缩文件。我这个版本的frp下载之后是这个界面,共8行,分为frps(server)和frpc(client),即frp服务端和frp客户端(frps就是有公网IP的那端,frpc就是内网那一端)。如果你少了某些东西,可能是你的杀毒软件把它当成病毒处理了。可以关掉杀毒软件或者一般杀毒软件都会提示你是否找回它杀掉的文件,你找回就可以了。

云服务器端为frps,因此你可以删掉frpc开头的三个文件,删掉之后应该还剩5行,(篇幅原因不放图了);本地服务器(内网)端为frpc,同样,你可以删掉frps开头的三个文件。(至于为什么要删?不删行不行?这我没试,其他文章都这么写,我建议你照做)

一、首先配置frps(云服务器):

(先配置frpc应该是不行,因为你服务端不先开的话,即便客户端设置正确也连不上)

(1)第一步:配置frps.ini

双击打开frps.ini,配置如下:

(如果你打开只有一行,不要慌,直接加一行就行了,至于其他乱七八糟的设置,我觉得没必要,这两行够了。注意:这里我踩坑过有说下载vim编辑的,还有下载Git的,可能那些是基于其他系统的,但是对于windows系统来说,绝对是多此一举,记事本完全够用。同时我建议不要写汉字,图中汉字是批注用的,是为了方便大家理解。)

(2)第二步:放行端口

首先,你要在阿里云控制台,配置安全组,手动添加放行端口,需要放行的端口有:与frpc通讯的端口以及内网映射在公网上的公网端口(如果后半句你不理解,我给你举栗子,比如:我的内网端口是502,我设置的映射到公网上的端口为7777,这里不需要放行502,只需要放行7777)。我这里放行的分别是7000和7777端口。到这,就放行端口这一块,还远远不够。

其次,也是十分重要的、极其容易忽视的一点!!! ——防火墙的配置。

关于防火墙,你有两种选择:

其一,你可以关掉云服务器的防火墙,即设置成我这样,确定。如果你的云服务器只是拿来做课题,没什么其他特殊用途,这是最简单的方式。

其二,如果你的云服务器有防火墙方面的特殊要求,你可以保持开启防火墙。这时需要你在云服务器上,防火墙-高级设置里,新建入站规则,规则类型选为端口,然后在特定本地端口处,输入要放行的端口(可以在要放行的端口中间加英文逗号实现同时添加多个端口),这些要放行的端口包括:与frpc连接的端口和内网映射在公网上的端口。我这里分别是7000和7777。如下图:

(3)第三步:让你的隧道后台运行

在任意位置创建txt文本(我建议就在frps.ini所在文件夹下),建议命名为frps.txt,输入以下内容(我不理解,但很神奇):

注:第六行cd后面的文件路径应为你的frps文件所在目录,即下图界面蓝色选中的地址。注意空格。写完保存退出去。

然后将frps.txt文本格式后缀名改为frps.bat,(如果你没后缀名,在上图界面点查看,然后勾上后缀名就行了)。双击运行即可。然后会出现一闪而过的cmd命令提示框,不要慌,这是正常的。可以通过查看任务管理器,检查frps.exe服务是否存在(一般任务管理器里的frps.exe服务都排在比较前面的位置),存在即为启动成功,如下图。(如果没有,等一会刷新一下,或者重新打开任务管理器,应该就有了)。你可以右键frps.bat,创建快捷方式放至桌面,方便启动。

至此,云服务器端配置完成。(内网端基本一样,到这没问题基本已经成功了)

这里我再分享一个我踩过的坑吧,嫌我啰嗦就跳过,直接去看配置frpc端。

以下是吐槽:

就是有的文章会让你输入:

或者

总之十分的生硬。单看这俩长相,好像差了个./ 。其实都一样,输入哪个都行,我运行下来是没有任何区别。抛开长相不谈,他也不告诉你在哪运行,于是你可能就会去cmd窗口运行,不出意外,cmd会提示你:“.”不是内部或外部命令,于是你可能会去各种网站搜不是内部或外部命令怎么办,然后疯狂改变量,最后啥用没有。

以下是解决方案:

其实这个命令是要在cmd的这个路径下运行的,专业名我也不懂,总之看图,还是这张图这个界面,选中路径呈蓝色之后,输入cmd,然后回车

然后就这样:

在这里,你再去输入那段十分生硬的命令(注意空格),就不会再提示内部/外部命令什么的了。结果如下即为成功(如果我推荐的后台运行的方法,在任务管理器,你没找到frps.exe的话,也可以通过这个判断是否成功联通):

同样,你也可以新建frps.bat文件,文件里的命令是frps -c frps.ini ,来快速启动它。

这个方法看似简单,但弊端明显,即你一旦关闭这个cmd窗口,对应的隧道服务也就停止了,进而客户端也就无法连接。因此,建议还是用我直接给的方法,直接让它在后台运行。

再注意一下吧:用这个方法,打开任务管理器是找不到frps.exe的,不要再找啦。

二、配置frpc(本地服务器)

基本同frps一样。

(1)第一步:配置frpc.ini

打开frpc.ini,配置如下:

注意:[common]必须有,至于其他的[ xxxx ],你想穿透几个内网端口就开几个[ xxxx ] (我没需求我没搞)。注意命名不能相同;注意改remote_port,因为7777已经是502的了。

(要是新增外网端口的话,记得云服务器安全组放行,同时云服务器防火墙新增入站规则(防火墙关闭的话就不用新增入站规则)。

(2)第二步:后台运行frpc.exe

创建txt文本,建议命名为frpc.txt,输入以下内容(除文件路径外,和frps那边只有两个字母的区别):

注:第六行cd后面的文件路径应为frpc文件所在目录。

然后将frpc.txt文本格式后缀名改为frpc.bat,双击运行即可。剩下的现象和操作同frps端,记得创建快捷方式。

至此,操作已全部完成。

至于有的文章还写道可以通过把.bat文件拖入到startup(开机自启动)文件夹里,实现frps,frpc开机自启动。我试了很久,又是改系统变量,又是任务计划程序,又是干嘛的,反正最后没成功,总提示找不到文件路径。不过对于我这种情况来说也没必要,因为学生免费1+6个月体验阿里云服务器,而这个阿里云服务器是一直运行的,在frps端你只需双击一次frps.bat就不用再管了;而至于frpc端,每次开机双击一次frpc.bat就行了,也不是很麻烦。

声明一下:frpc端应该是不需要设置防火墙入站规则的,记不太清了。如果以上操作都做了还是不行,那你可以尝试把内网这边的防火墙关了。如果行就是防火墙的问题,你可以新建入站规则,把需要的端口放行;如果不行,就只能抱歉您在我这浪费时间了。

注意:一定要先搞frps,只有frps端已开启,frpc端才能成功连接。希望对您有所帮助。

猜你喜欢

转载自blog.csdn.net/learninger_lt7/article/details/129601866