目前公司上线了一套系统,但只部署在内网中,外网无法直接连接,而公司唯一一台VPN设备也被上级公司禁止使用,而且业务部门做业务时间都在行政人员下班后反馈,如果下班回到家后接到业务部门反应的系统问题,无法连接到系统就无法排查,向日葵这种工具就显得非常好用了。
但最近公司接到护网行动演习通知(呸),为护网行动前期做准备,公司的领导要求网管将远程端口全面封禁,不允许使用远程工具连接到内网。这就意味着teamviewer,向日葵,ToDesk等等常见的远程工具无法使用。
我自己买了一台阿里云的公网主机,系统带的是centos8.2的系统。我想着用代理是不是能绕过本机的检测。我在网上找了部署代理的方法,看到一个叫tinyproxy的一个工具,可以非常方便的设置与服务器之间的代理,于是我在终端里敲着命令:yum -y install tinyproxy …
服务器一直提示No Mach – – – – 难道源又不行了?我更换了阿里云的源,仍然一样的提示。看来这个工具是没法使用了,于是找了其他的方案,安装squid进行代理。
进行一系列倒腾之后,代理可以正常运行,本机是win10的系统,直接修改代理地址。通过ip138可以查看IP地址已代理到阿里云的主机,打开向日葵,仍然是无法连接的状态。
去百度找了找原因,发现向日葵的官网和论坛全部无法访问,大概率是把这些远控的公网IP封了,所以还是无法访问。(网管你过来,我保证不会打死你)
于是我想到了内网穿透的方法。以前用过很多的内网穿透免费版、试用版各种版本,都非常的卡,域名又是一大堆乱七八糟的,简而言之非常难用。于是我就想自己搭一个内网穿透的服务器,反正阿里云的服务器闲着也是闲着。
硬件的准备:
- 公网的服务器一台,windows与linux均可,我的服务器装的centos8.2的系统版本。
- 公司内网主机一台。Ps:主要是连接到这台计算机来访问内网系统。
软件的准备:
- frp for linux,frp for windows
首先搭建服务器端,用root账户登录。
个人习惯在根目录下创建一个自定义目录用来区分是不是我自己下载的东西
mkdir softdown cd softdown/
然后去github上下载frp工具,使用wget命令,我下载的是0.39的版本,然后tar命令解压,解压后用mv命令给文件夹改个名,改成frp方便使用。
wget https://github.com/fatedier/frp/releases/download/v0.39.0/frp_0.39.0_linux_amd64.tar.gz tar -zxvf frp_0.39.0_linux_amd64.tar.gz mv frp_0.39.0_linux_amd64 frp
解压后的文件夹里有两个执行文件,一个是frps 一个是frpc。 s代表server,也就是服务器端,c代表client代表客户端。所以在服务器上配置和运行都是带s的文件名。
进入frp文件夹并配置frps.ini
cd frp vi frps.ini
打开配置文件后,只看到一个[common]和一个bind_port。
我们做好服务器配置。
bind_port默认是7000,默认端口容易被扫描,所以我做了一个更换,我给他改成了9897。
这仅仅是最基础的配置,根据需要,我加入了frps的其他一部分配置。
[common] bind_port = 9897 #面板登录用户 dashboard_user=admin #面板登录密码 dashboard_pwd=admin #面板登录端口 dashboard_port=9999 #限制只能使用服务端的指定端口 #privilege_allow_ports = 9898,9899 #token校验 #token=raven
限制端口和token的目的一是为了不让任意端口连接,二是因为公司其他业务部门也会用到此代理,但又不可能开放所有都其他人用,那会显得我特别没有排面.
如果服务端配置了token,需在客户端加入同样token才能连接到服务器。
所以可以根据自己的需要,可以开放部分端口或者写入token来增加相应验证权限。
然后使用命令开启服务
./frps -c ./frps.ini
看到success字样说明成功了,在当前终端页面可以保持服务运行,但关闭页面后就失效了,可以使用nohup来实现后台持续运行。
nohup ./frps -c ./frps.ini &
启动成功后,可以通过ip:dashboard_port 格式来访问面板,可以清晰直观的看到一些数据。
http://IP:9999 #如果域名有绑定也是可以用域名的。
由于我使用的是阿里云的服务器,一般不会进行重启,所以我就没有设置服务方式自启动了,有需要自启动的可以查找相关资料。
运行服务端之后,需要下载客户端在windows主机上配置客户端,用于远程桌面连接到此主机。
选择windows系统版本的, frp for windows直达链接
下载完成后直接解压到一个目录,然后配置frpc.ini
[common] server_addr = 0.0.0.0 #你的阿里云IP地址 server_port = 9897 #服务端配置的端口号 #token = xxxxx [ssh] type = tcp local_ip = 127.0.0.1 #可选择内网192地址 local_port = 3389 #本地暴露的端口,远程桌面连接默认为3389 remote_port = 9898 #暴露给外部访问的端口,若服务端有设置端口号限制,需要在端口号列表内才可以连接
配置完之后,在当前目录路径输入cmd,会跳出当前目录的命令提示符。输入客户端启动命令
.\frpc.exe -c .\frpc.ini
窗口看到start proxy success字样说明启动成功了。
如果一台服务器连接多个客户端,那么每个客户端的端口与名字都必须不一样,名字就[ssh]自行修改,端口就不用多说了吧~
启动远程桌面连接,输入IP地址:9898(客户端暴露给外部访问的端口尝试)
跳出来熟悉的界面。最终输入账号密码可以连接到我的工作机了。
客户端的cmd窗口需要一直运行,可以通过vbs的方式开机启动自启,我自己是用易语言制作了一个隐藏窗口的程序。
精易模块里命令参考:
窗口_取句柄() '参数<4>的名称为“窗口标题”,类型为“文本型”,允许接收空参数数据。注明:窗口的标题。
窗口_显示隐藏 () '参数<2>的名称为“显示隐藏”,类型为“逻辑型”。注明:真 = 显示;假 = 隐藏;。
原文链接:https://blog.csdn.net/liqunhao002/article/details/124188566