内网穿透-FRP方案
前期准备:
云服务器或者VPS,有公网ip或域名,内网主机一台。
本文所用的服务端Linux系统,客户端是windows7系统。
服务端(Linux)搭建步骤
1:下载服务端的frp:
https://github.com/fatedier/frp/releases 下载最新版本
2.使用tar命令解压下载成功的压缩包文件:
tar -zxvf frp_0.33.0_linux_arm64.tar.gz
3.使用cd命令进入解压出来的文件夹:
重命名 mv frp_0.33.0_linux_arm64 frp
cd frp
4.修改服务器配置文件(frps.ini):
按i,进行编辑,将内容修改下面的:
[common]
bind_port = 7000
vhost_http_port = 8000
vhost_https_port = 90
dashboard_user = admin
#dashboard 密码
dashboard_pwd = admin
#dashboard 端口,启动成功后可通过浏览器访问如http://ip:7500
dashboard_port = 7500
5.启动frp服务端:
让frp在后台运行:
nohup ./frps -c frps.ini & > frp.log
这样即使关掉了SSH,frp依然在后台运行中。
到此,服务端的搭建已经完成。
另,停止运行frp的方法:
杀掉frps进程即可。使用ps命令,查看进程:
ps -ef | grep frp
使用kill命令杀掉:
kill -9 进程id
客户端搭建步骤
1.下载客户端的frp:
在以上地址下载最新windows压缩包
2.解压下载成功的压缩包
3.编辑frpc.ini文件,内容如下:
[common]
server_addr = x.x.x.x #公网ip
server_port = 7000
[mysql]
type = tcp
#local_ip = 127.0.0.1
local_port = 3306 #本地mysql端口
remote_port = 3366 #印射公网端口
#连接Windows远程桌面的
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
custom_domains = x.x.x.x #公网ip或域名
[web01]
type = http
local_ip = 127.0.0.1
local_port = 80
locations = /
custom_domains = x.x.x.x #公网ip或域名
[web02]
type = http
local_ip = 127.0.0.1
local_port = 8090
locations = /cardmanager
custom_domains = x.x.x.x #公网ip或域名
#通过tcp来连接svn
[svn]
type = tcp
local_ip =127.0.0.1
local_port = 81
remote_port = 9000
如果客户端也是linux,也是一样的配置
4.启动frp客户端:
在目录下打开cmd命令窗口,执行如下命令:
frpc.exe -c frpc.ini
到此,客户端的搭建已经完成。
客户端windows开机启动
我们已经可以通过阿里云服务器远程到非公网的电脑了,如果自启动的话那就更完美了。
1、设置frpc自启动,自启动的脚本如下
@echo off
:home
frpc -c frpc.ini
goto home
保存为start.bat保存到frpc.exe同级目录下
右键start.bat创建快捷方式
然后把快捷方式复制放到启动目录即可
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
#!/bin/bash
# chkconfig: 2345 10 90
# description: myservice ...
echo "hello world" > /tmp/myservice.log
将自己写的脚本move到 /etc/rc.d/init.d/ 下面并修改权限
mv myservice /etc/rc.d/init.d/
chmod +x myservice
将脚本加入开机服务
chkconfig –add myservice #把myservice添加到系统服务列表
chkconfig myservice on #设定myservice的开关(on/off)
chkconfig –list myservice #就可以看到已经注册了myservice的服务
以脚本autostart.sh为例:
#!/bin/bash
#description:开机自启脚本
/usr/local/tomcat/bin/startup.sh #启动tomcat
赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh
打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容
su – user -c ‘/opt/script/autostart.sh’
在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
问题解决:
2018/11/25 10:19:18 [W] [control.go:113] login to server failed: dial tcp *.*.*.*:7000: connect: no route to host
网上搜索了一下,也有人遇到过类似情况,关闭了服务器防火墙就OK了,我也试了一下,服务器centos7,看了一下防火墙状态,结果是running,然后就关闭了防火墙
[root@aiuyo ~]# firewall-cmd --state
running
[root@aiuyo ~]# systemctl stop firewalld.service
玉不琢不成器,人不学不知道,拜读了!
我也有过博客,不过那都是很多年前的事情了!
值得思考哦,受教了!