frp介绍

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp,

frp工作原理

服务端运行,监听一个主端口,等待客户端的连接;

客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;

服务端fork新的进程监听客户端指定的端口;

外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;

客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

简单来说就是一台没有公网ip的服务器,利用有公网ip的服务器的ip。让这两台设备连接。然后把这两台看成是一台就行了。然后这个frp就相当于把它俩连接起来的工具。
    可以先了解一下其他的知识,比如正向代理与反向代理。这篇文章其实讲的挺好的。vpn就使用了正向代理,frp中使用了反向代理

2 配置教程

想要配置frp穿透,首先必须先要有一台有公网ip的服务器,主要得有公网ip(即:可以外网访问)的服务器。如果没有,接下来的教程就不用看了。配置教程主要分为两个部分,一是服务器端(外网服务器)的配置;二是客户端(内网服务器)配置。

1、下载frp

https://github.com/fatedier/frp/releases

frp_0.38.0_linux_amd64.tar.gz是64位系统,frp_0.38.0_linux_386.tar.gz是32位系统,根据自已的云服务器去下载对应的frp文件。

2.解压压缩文件:

tar -zxvf frp_0.38.0_linux_amd64.tar.gz

mv frp_0.38.0_linux_amd64 frp

mv frp /usr/local/

cd /usr/local/frp

frpc, frpc.ini ,  因为包含c结尾代表client,是客户端所使用的,所以服务器端用不到可以删除掉,也可以不删除,没有影响。

然后配置frps.ini文件。

使用vim frps.ini修改文件

如下所示

[common]

# frp监听的端口,默认是7000,可以改成其他的

bind_port = 7000

# 授权码,请改成更复杂的

#token = xd123456abc  # 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改

dashboard_port = 7500

# frp管理后台用户名和密码,请改成自己的

dashboard_user = xdadmin

dashboard_pwd = xdadmin

#vhost_http_port = 6001  # 访问6001端口,映射到内网web服务

#vhost_https_port = 10443

#enable_prometheus = true

# frp日志配置

log_file = /usr/local/frp/log/frps.log

log_level = info

log_max_days = 3

dashboard_port是服务端仪表板的端口。开启后可使用ip+dashboard_port访问。
    token是另外一个没有公网ip的电脑连接的密码。
    dashboard_user和dashboard_pwd表示打开仪表板页面登录的用户名和密码.
    bind_port表示用于客户端和服务端连接的端口.也就是没有ip电脑所要连接的端口.它俩绑在一起的绳子.

使用守护程序systemctl

/lib/systemd/system文件夹下创建frps.service

vim frps.service

输入如下内容,保存退出。

[Unit]

Description=frp service

After=network.target

[Service]

TimeoutStartSec=30

ExecStart=#frp绝对路径#/frps -c #frp绝对路径#/frps.ini

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

启动服务

systemctl start frps

服务开机自启动
systemctl enable frps

服务器上最终的配置

[Unit]

Description=frp service

After=network.target

[Service]

TimeoutStartSec=30

ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

验证服务端是否启动成功

访问:http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态
如:http://62.244.114.4:7500/,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd
登录之后界面如下:

    如果上述步骤没有问题,则说明frp的服务端配置成功了,也就意味着内网穿透你已经成功了一半!!!

但是要提前到你买的官网打开这个可以访问的端口(我的是阿里云的服务器)(如何开放端口百度查询即可)如图:我的已经添加7000端口和3389端口

阿里云开放端口,在云服务器--->ECS安全组--->配置规则

还需要iptables或者fillwalld放开相关的端口

iptables

vim /etc/sysconfig/iptables

#自定义frp内网穿透端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 7000 -j ACCEPT

#frp管理后台端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 7500 -j ACCEPT

重启 iptables 防火墙服务

# systemctl restart iptables.service

fillwalld

那怎么开启一个端口呢

添加

firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=80/tcp

删除

firewall-cmd --zone= public --remove-port=80/tcp --permanent

测试地址:http://182.92.232.14:7500/static/#/

客户端相关配置(也就是另外一台内网的服务器)

解压压缩文件:

tar -zxvf frp_0.38.0_linux_amd64.tar.gz

mv frp_0.38.0_linux_amd64 frp

mv frp /usr/local/

cd /usr/local/frp

因为是客户端所以编辑包含c的文件

然后配置frpc.ini文件。

使用vim frpc.ini修改文件

如下所示

[common]

server_addr = 公网ip

server_port = 7000

[ssh]

type = tcp

local_ip = 192.168.1.88

local_port = 22

remote_port = 6000

[web1]

type = tcp

local_ip=192.168.1.88    #这个地方是没有公网ip的服务器地址

local_port = 80      #这个地方是没有公网ip的服务器部署的服务的端口

remote_port=8080   #绑定的远程有公网ip的服务器的端口

# frp日志配置

log_file = /usr/local/frp/log/frpc.log

log_level = info

log_max_days = 3

客户端配置

[common]

server_addr = 公网ip

server_port = 7000

[ssh]

type = tcp

local_ip=192.168.1.88

local_port = 22

remote_port=6000

查看frpc.ini配置文件(C代表客户端),在命令窗口直接输入frpc.ini即可打开。server_addr = 114.119.110.120是你买的服务器的公网IP要对应上。

server_port = 7000是监听端口与服务器的bind_port对应一致。local_port = 22,remote_port = 6000是在买服务器的官网开通的可访问端口。

最终配置

[common]

server_addr =182.92.232.14

server_port = 7000

[ssh]

type = tcp

local_ip = 192.168.1.88

local_port = 22

remote_port = 6000

[web]

type = tcp

local_ip = 192.168.1.88

#访问本地80web服务

local_port = 80

#必须已经备案

custom_domains = www.ddzhl.com

# frp日志配置

log_file = /usr/local/frp/log/frpc.log

log_level = info

log_max_days = 3

注意:代理端口好像限制最大8888(remote_port)

使用守护程序systemctl

/lib/systemd/system文件夹下创建frpc.service

vim frpc.service

输入如下内容,保存退出。

[Unit]

Description=frp service

After=network.target

[Service]

TimeoutStartSec=30

ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini

ExecStop=/bin/kill $MAINPID

[Install]

WantedBy=multi-user.target

启动服务

systemctl start frpc

服务开机自启动
systemctl enable frpc

最终实验的最终版本

服务端部分

vim frps.ini

[common]

# frp监听的端口,默认是7000,可以改成其他的

bind_port = 7000

authentication_method = token

# 授权码,请改成更复杂的

token = xd123456abc  

# 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改

dashboard_port = 7500

# frp管理后台用户名和密码,请改成自己的

dashboard_user = xdadmin

dashboard_pwd = xdadmin

# 访问10080端口,映射到内网web服务

#vhost_http_port = 10080

#vhost_https_port = 10443

#enable_prometheus = true

# frp日志配置

log_file = /usr/local/frp/log/frps.log

log_level = info

log_max_days = 3

客户端部分

vim frpc.ini

[common]

server_addr = 182.92.232.14

server_port = 7000

authentication_method = token

 token = xd123456abc

 [ssh]

 type = tcp

 local_ip = 192.168.1.88

 local_port = 22

 remote_port = 6000

 [web]

 type = tcp

 local_ip = 192.168.1.88

 local_port = 80

 #访问本地80web服务  

 remote_port = 8080

 custom_domains = www.ddzhl.com

 #必须已经备案

 # frp日志配置

 log_file = /usr/local/frp/log/frpc.log

 log_level = info

 log_max_days = 3

注意需要阿里云和防火墙开放需要的哪些端口,不然还是没有办法访问的

访问web服务的时候

type=tcp

如果是type=http的话,访问不了

测试访问

现在访问服务器IP:访问内部的ssh端口 就可以访问内网的设备

比如我现在要访问我内网的设备就访问:182.92.232.14:6000

连接成功

frp如何加token?

在 frps.ini 和 frpc.ini中均添加

authentication_method = token

token = changeit

阿里云centos7 frp内网穿透相关推荐

  1. 【保姆级】阿里云服务器frp内网穿透教程

    背景1: 去年买了一台阿里云服务器,轻量应用服务器,2核4G.个人比较喜欢嵌入式,开发板也不少,但是开发板连接路由器后内次都要看一下IP然后去连接(虽然可以在路由器上控设置固定IP),然后最近突发奇想 ...

  2. 谷粒商城P139集——云服务器frp内网穿透+nginx

    1.腾讯云购买域名并备案以及解析 我注册的域名是第一年14元的 (1)购买域名并备案 (2)域名解析 测试:如域名为gulimall.com 则在浏览器中输入gulimall.com:9200(前提是 ...

  3. centos7 frp内网穿透

    git下载地址 中文文档参考 这里需要nginx 配置https证书, frp服务端,frp客户端, 阿里centos7, 子级域名. client -->(https) nginx --> ...

  4. 【外网访问学校服务器】阿里云服务器+frp+内网服务器

    寒假将至,为了在家能继续用学校的服务器,通过云服务器的公网ip作为桥梁进行内网渗透,来访问学校的服务器. 设备:服务端(阿里云轻量服务器) 客户端( Ubuntu 20.04.1) 阿里云先设置密码 ...

  5. 阿里云服务器怎么样可以实现 frp 内网穿透

    更多精彩内容请访问我的新博客站点 前言 前几天在一台具有公网IP的 vultr 云服务器上实现了 frp 内网穿透(参考链接),可以从寝室 ssh 登录到教研室的服务器,但是由于 vultr 的云服务 ...

  6. 阿里云服务器实现 frp 内网穿透

    更多精彩内容请访问我的新博客站点 前言 前几天在一台具有公网IP的 vultr 云服务器上实现了 frp 内网穿透(参考链接),可以从寝室 ssh 登录到教研室的服务器,但是由于 vultr 的云服务 ...

  7. 阿里云轻量应用服务器配置frp内网穿透通过Mac远控Win10主机配置指南

    tags: Linux Server Tips Config 写在前面 之前一直是用向日葵或者todesk进行远程访问主机的, 虽然很方便, 却也存在有广告, 需要登录, 延时高等问题. 在此之前也有 ...

  8. FRP内网穿透映射本地内网80端口到云服务器

    FRP内网穿透映射本地内网80端口到云服务器 如题,我的配置中本地服务器和云服务器都为ubuntu20.04,但CentOS同样适用. PS:怎么把网页部署到本地80端口请找别的教程,本文重点在内网穿 ...

  9. 花生壳 || FRP实现玩客云、树莓派...内网穿透,外网访问

    一:内外网穿透简介 内网穿透也叫做内网映射,也叫"NAT穿透".就是让外网能访问你的内网:把自己的内网(主机)当成服务器,让外网能访问.下面是我用过的两种内网穿透.个人认为FRP更 ...

最新文章

  1. static在内存层面的作用_「C++ Primer plus 心得」9.内存模型和名称空间
  2. AtCoder3950 [AGC022E] Median Replace(DFA + dp)
  3. editorloop 占用_速度控制 部分重复 语言学习软件 Loopman
  4. Python PIL(图像处理库)使用方法
  5. C++新特性探究(一):nullptr
  6. linux apache smtp,Linux 使用msmtp 发送邮件
  7. python按照图片命名复制到不同文件夹下
  8. 数据传递-------@ModelAttribute
  9. Hibernate二级缓存以及ehcache的搭建配置
  10. vs201x下正则表达式过滤中文
  11. 转【测试基础】测试计划如何编写
  12. piaget读法_这些手表品牌原来是这么念的!
  13. JL 杰理 AC692N系列TWS 蓝牙音箱 开发
  14. FPGA的速度等级(speed grade)
  15. ant-design-vue导航菜单a-menu的详细使用
  16. 《Thinking in Java》Fourth Edition中文版笔记
  17. 阿里云国际站:阿里云启用第三座日本数据中心,加快海外市场扩展
  18. Thread.setDaemon详解
  19. RPG Maker MV-去掉开头动画
  20. nginx 异常长连接快速断开

热门文章

  1. 短视频去水印工具小程序
  2. 大数据批量处理神器 - 自定义周期批量消费队列的实现
  3. Porter Algorithm ---------词干提取算法
  4. TL-C6748 EDMA使用笔记
  5. openstack 对比 k8s 深度好文
  6. 父母不会用手机 App?中老年群体的app应用产品
  7. BS酒店管理系统的设计与实现论文+任务书+中期检查+设计源码+答辩PPT
  8. 可知道我们十指交缠的那一夜;我们誓言到老的那一夜
  9. fopen函数的用法示例_在C和C ++中使用fopen()函数的用法以及示例
  10. Java基于JSP实验室预约管理系统