使用frp工具实现内网的穿透以及配置多个ssh和web服务
frp简介
FRP 项目地址 https://github.com/fatedier/frp/blob/master/README_zh.md
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
环境准备
ssh连接
1. 需要一台可以直接访问外网的服务器,比如阿里云服务器(服务端)
2. 需要做内网穿透的服务器,比如公司内部的局域网测试服务器(客户端)
web访问
3. 需要额外的已经备案的域名
下载地址
https://github.com/fatedier/frp/releases
选择最新的就行,一般都是linux环境
安装步骤
客户端跟服务端都需要的安装操作
cd /usr/local/ wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz tar -zxvf frp_0.27.0_linux_amd64.tar.gz mv frp_0.27.0_linux_amd64 frp
下载完毕frp的目录文件
- frpc:客户端可执行程序
- frpc_full.ini:客户端所有配置项(可以再此文件查看frp的所有的配置项)
- frpc.ini:客户端配置项
- frps:服务端可执行程序
- frps_full.ini:服务端所有配置项(可以再此文件查看frp的所有的配置项)
- frps.ini:服务端配置项
- LICENSE:许可证
- 服务端只需要编辑frps.ini文件
- 客户端只需要编辑frpc.ini文件
服务端配置
查看frps.ini文件,修改为如下内容
[common]
bind_port = 7000 # 客户端跟服务端绑定的端口号
默认的配置信息中只有一个绑定端口为7000,意思是我们在外网服务器中绑定7000端口和客户端进行通信。注:端口可以自定义,但是需要客户端和服务端进行统一。阿里云服务器需要在esc管理中配置安全组规则中暴露7000端口
启动服务端
./frps -c frps.ini
如下表示启动成功
启动成功之后,关闭xshell或者是退出回话,都会使连接断开,可以使用nohup来进行后台启动(后面启动都可以使用这种方式)
如下是后台启动并将日志输入到file.log文件中
nohup ./frps -c ./frps.ini > file.log 2>&1 &
客户端配置
查看frpc.ini文件,修改为如下内容
[common]
server_addr = 39.105.97.50 # 你的公网ip
server_port = 7000 # 绑定的端口,自定义,跟服务端一直即可 [ssh]
type = tcp
local_ip = 127.0.0.1 # 绑定的ip,填写127.0.0.1表示本机即可
local_port = 22
remote_port = 6008 # ssh默认是22,现在转发为6008端口
- [common]表示以下配置信息是一些公用配置信息
- server_addr是我们服务端即外网服务器的公网访问ip
- server_port是我们前面在服务端配置的frps.ini中bind_port中对应的端口。需保持两边一致
- [ssh]表示以下配置信息是我们使用ssh连接内网服务器时需要的一些配置信息
- type 是连接类型,ssh方式连接就用tcp
- local_ip 是本机ip,直接使用127.0.0.1即可
- local_port 是本地ssh端口,ssh默认端口为22
- remote_port 是外网服务器请求过来的端口 注:阿里云服务器需要在esc管理中配置安全组规则中添加6008端口
启动客户端
./frpc -c ./frpc.ini
OK,之后可以通过xshell来连接,只需要指定端口号为remote_port(6008)即可,如下
多个ssh配置
单个ssh配置成功,项配置多个,一样的操作,在另一台机器进行下载frp,之后只需要修改frpc.ini文件,修改格式如下
[common]
server_addr = 39.105.97.50
server_port = 7000 [ssh001] # 不能重复
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6009 # 不能重复
需要将remote_port进行修改,[ssh]名称不能重复
frpc命令启动即可。
外网服务器HTTP配置
配置了http之后,就可以访问内网的web服务了,比如云盘前提是需要有已经备案的域名,这样才能配置。
配置方式
服务端:修改frps.ini,内容如下
[common]
bind_port = 7000
vhost_http_port = 6001 # 访问6001端口,映射到内网web服务
bind_port和之前做ssh时是一个意思。也是为了和客户端建立通信的端口,只需要在之前的配置文件中添加上vhost_http_port = 6001,这个配置意思是让别人在访问我们的服务器6001端口时。frp将http请求转发到内网服务器
客户端:修改frpc.ini,修改内容如下
[common]
server_addr = 39.105.97.50
server_port = 7000 [ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6008 [web]
type = http
local_port = 8080 # 访问本地8080web服务
custom_domains = www.chendahai.cn # 必须已经备案
- [web]表示我们的配置是一个web服务
- type表示我们的请求方式是http方式
- local_port表示我们的本地服务端口号为80
- custom_domains表示配置为一个已经备案的域名(必填,并且需要域名可用) 并且域名解析配置为外网服务器ip
OK,使用frpc命令重启即可,通过www.chendahai.cn:6001,即可访问内网的8080服务了。
多个web服务配置
如果想配置多个web服务怎么办,跟ssh类似,添加多个[web]即可,注意不能重名
服务端不需要做任何修改,修改ftpc.ini内容如下
[common]
server_addr = 39.105.97.50
server_port = 7000 [ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6008 [web01]
type = http
local_port = 8080
custom_domains = www.chendahai.cn [web02]
type = http
local_port = 80
custom_domains = cd.chendahai.cn # 使用二级域名进行配置
之后访问内网的80端口web服务可以通过cd.chendahai.cn:6001就可以访问了,二级域名是需要配置域名解析的。
如下是配置了2个ssh和3个web服务,服务端日志如下
结束
OK,内网穿透基本配置完毕
frp的使用和配置相当简单,如有疑问或者想了解关于frp的其它功能可以查看官方中文文档
补充
倘若想配置连接数据库mysql
可以这么操作,修改frpc.ini,添加如下配置
[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3366
重启,连接即可
切记,如果需要,记得添加安全组规则
使用frp工具实现内网的穿透以及配置多个ssh和web服务的更多相关文章
- 基于Yarp实现内网http穿透
Yarp介绍 YARP是微软开源的用来代理服务器的反向代理组件,可实现的功能类似于nginx. 基于YARP,开发者可以非常快速的开发一个性能不错的小nginx,用于代理http(s)请求到上游的ht ...
- 搭建 Frp 来远程内网 Windows 和 Linux 机子
魏刘宏 2019 年 5 月 19 日 一.使用一键脚本搭建服务端 Frp 这个内网穿透项目的官方地址为 https://github.com/fatedier/frp ,不过我们今天搭建服务端时不直 ...
- LanProxy 内网映射穿透
前言:用过 ngrok 的人都知道,这是一个免费并且简便的内网映射工具,可是现在ngrok不知道弄啥?不能用了,那我们只能去找一些新的工具,下面是我跟我朋友一起弄的(主要是他教我(✪ω✪)),免费的, ...
- 工具篇:使用natapp工具映射内网到外网访问
一.环境说明 开发基于微信公众号的应用最大的痛苦之处就是调试问题,每次实现一个功能后都需要部署到一个公网服务器进行测试,因为微信用户每次向公众号发起请求时,微信服务器会先接收到用户的请求,然后再转发到 ...
- win 内网frp反弹到内网liunx
前提:frp不同系统 但是版本必须完全相同 这是我的两个版本 我这个就是验证frp可以在不同系统之间使用 准备工作 靶机 win2003 ip 192.168.1.132 公网 vps windows ...
- 单线拨号上网时RouterOS内网端口映射的配置
很多时候routeros 是通过单线拨号上网,假设PPP接口名为pppoe-out1 若需要添加内网ip=18.16.1.92主机的3389端口映射 ,可以在命令行键入: ip firewall na ...
- 内网环境下为Elasticsearch 5.0.2 添加head服务
背景: 本项目的服务器是内网环境,没有网络,因此需要在离线的环境中,安装head服务. 需要用到的安装包有: node的安装包 elasticsearch的head插件源码 说明:此次只讲述为elas ...
- CentOS squid代理内网主机上网 openVpn配置
- 内网 LAN IPv6 环境配置 H3C S5500 Huawei S5700
# 使能IPv6报文转发功能. <Sysname> system-view [Sysname] ipv6 # 使能DHCPv6服务器功能. <Sysname> system-v ...
随机推荐
- [NOIP2004] 普及组
不高兴的津津 纯模拟 #include<cmath> #include<cstdio> #include<iostream> using namespace std ...
- maven坐标查询
使用maven时,一个经常用到的操作就是去 中央仓库查询相关库的坐标,但在哪里查呢? 1 http://mvnrepository.com/ 服务器是由sonatype提供的,采用的是Nexus服务器 ...
- PHP PDO使用
PHP操作MySQL数据库方式有三种: *1. mysql 最原始的.纯过程化的 如连接: mysql_connect(主机名,账号,密码); 2. mysqli 改进版的.兼容过程化和面向对象化操作 ...
- UVA 437_The Tower of Babylon
题意: 一堆石头,给定长宽高,每种石头均可以使用无数次,问这堆石头可以叠放的最高高度,要求下面的石头的长和宽分别严格大于上面石头的长和宽. 分析: 采用DAG最长路算法,由于长宽较大,不能直接用于表示 ...
- 选择器的使用(first-child和last-child选择器)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...
- 淘宝后台添加颜色尺码动态sku
废话不多说,直接上代码,用了vue,可直接copy运行 <!DOCTYPE html> <html lang="en"> <head> < ...
- 条款21: 尽可能使用const
对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const,还有,两者都不指定为const: char *p = "hello"; ...
- ZOJ3662:Math Magic(全然背包)
Yesterday, my teacher taught us about math: +, -, *, /, GCD, LCM... As you know, LCM (Least common m ...
- 关于微软网站维护培训时遇到的issues:What is WEDCS?
WEDCS (pronounced “wed-ex”), the Web Events Data Collection Service, is a system for collecting, com ...
- java json字符串转成 Map或List
import java.util.List; import java.util.Map; import java.util.Map.Entry; import net.sf.json.JSONArra ...