内网穿透frp

3443人浏览 / 0人评论

前期准备:

云服务器或者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

 

客户端linux开机自启:
方法1:(如果无法启动脚本可以sleep 10秒)
自己脚本 myservice 如下:
#!/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的服务
方法2:
以脚本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 

全部评论