十分钟实现内网连接,配置frp
一.frp是什么?其实是一款实现外网连接内网的一个工具,个人理解,说白了就像是teamviwer一样,外网能访问内网。
- 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
- 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主
二.实现目标
- 外网通过ssh访问内网
- 可以访问内网web服务
三.需要的前提
(1)公网服务器一台
(2)内网服务器一台
(3)公网绑定一个域名
(4)内网部署一个web服务
注意:如果单纯只是用来控制不访问web服务,则(3)(4)不是必须的,(1)(2)是必须的
四.开始搞起
1. 公网和服务器都需要进行下载frp进行安装,废话不多说,基佬地址:Releases · fatedier/frp · GitHub
当然也可以用命令:
wget 对应版本的地址
如:
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_386.tar.gz
- 由于个人内网服务器是64位ubunt系统,故内网服务器下载64位系统,用的这个版本:frp_0.22.0_linux_amd64.tar.gz
- 个人外网服务器是32位系统,故外网服务器服务器下载32位系统,用的这个版本:frp_0.22.0_linux_386.tar.gz
2.新建目录
mkdir -p /usr/local/frp
将frp_0.22.0_linux_amd64.tar.gz上传到该目录下,将frp_0.22.0_linux_386.tar.gz上传到该目录下。
3.分别在内网服务器、外网服务器解压对应的文件
tar -zxvf frp_0.22.0_linux_amd64.tar.gz
tar -zxvf frp_0.22.0_linux_386.tar.gz
4.分别进入解压目录:
cd /usr/local/frp/frp_0.22.0_linux_amd64
cd /usr/local/frp/frp_0.22.0_linux_386.tar.gz
注意:外网服务器上应该关注两个文件:frps、frps.ini
内网服务器上应该关注两个文件:frpc、frpc.ini
5.配置外网服务器(公网服务器),vi ./frps.ini,注意启动时候请删除注释
[common]
bind_port = 8080 # 和客户端进行绑定并通信的端口
#bind_udp_port = 993 # udp端口,可以不用写
#vhost_http_port = 80 # 访问客户端web服务自定义的端口号,可以不用写
#vhost_https_port = 443 # 访问客户端web服务自定义的端口号,供https,可以不用写
保存后进行启动
nohup ./frps -c ./frps.ini & # 后台运行
执行完后如图:
使用命令查看进程号,是否成功
ps -A | grep frps
ok~配置完美
6.配置内网服务器(内网服务器),vi ./frpc.ini
[common]
server_addr = 147.31.180.123 # 此处填写公网ip
server_port = 8080 # 与外网服务端bind_port一致
# 公网通过ssh访问内部服务器
[ssh]
type = tcp # 连接协议
local_ip = 127.0.0.1 # 内网服务器的ip地址
local_port = 22 # ssh默认的端口号
remote_port = 110 # 自定义访问内部ssh端口号
#公网访问内部web服务器以http方式 # 如果没有需要访问内网web,则一下配置不需要
[web]
type = http #访问协议
local_port = 8081 #内网web服务的端口号
custom_domains = neiwangdizhi.com #所绑定的公网服务器域名,一级、二级域名都可以
保存后进行启动
nohup ./frpc -c ./frpc.ini & # 后台运行
使用命令查看进程号,是否成功
7测试:
成功如图:
同样,访问内网的web,则ip:neiwangdizhi.com port :110 用户名:linux服务器的用户 密码:linux服务器的密码
补充,当有一台公网服务器,多台内网服务器,则需要配置多设置,需要变化的是客户机的ssh,如下
1.对A机器做映射,并启动
[common]
server_addr = *********
server_port = *********
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 110
2.对A机器做映射,并启动
[common]
server_addr = *********
server_port = *********
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 111
3. 运行即可
注意:[ssh]的名称必须不同,remote_port必须不同