【网络】内网穿透方案&FRP内网穿透实战(基础版)
前言
最近周末在搭建个人网站,花了两天了解了下,目前基本上已经完成了个人博客网站的搭建,但是网站备案还没处理,只能IP访问,就不贴出了。
现把途中记录的笔记分享下。
内网穿透不仅仅用于个人网站搭建把数据拿捏在本地,主要是为了方便后期可能会玩or开发一些物联网设备而提前准备的环境。
原文:李柱明博客园:https://www.cnblogs.com/lizhuming/p/16885898.html
方案
方案1:公网
独立公网,IPv4的就不要想了。
动态公网:除了移动,电信和联通,和客服沟通下,都会很大方。
有了动态公网IP后,就用DDNS来绑定自己的域名就好了。DDNS服务商可以百度随便找个,因为我个人没有动态公网IP,就没有细究。
参考方案:DNSPOD
方案2:第三方内网穿透软件
花生壳
花生壳:贵,免费的不够用。
cpolar
cpolar:目前在用,个人使用感觉,比花生壳要好。
先下载去官网免费版的cpolar,然后配置映射即可。免费的带宽1M,有4条映射(我试过,应该是每个客户端有4条映射可配置,而不是每个账号只有4条映射,这个算nice)
方案3:云服务器做反向代理
先购买有个带公网IP的云服务器,然后用云服务器反向代理,利用这个云服务器做流量转发,原理和方案2一样,只是要自己实现流量转发。
参考方案:云服务器+FRP+个人域名。
FRP简介
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
FRP资源
FRP源码&教程:https://github.com/fatedier/frp
- 更多穿透教程也可以参考官方demo,甚至源码。
FRP原理
- 服务端运行,监听一个主端口,等待客户端的连接;
- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
- 服务端fork新的进程监听客户端指定的端口;
- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
就是利用拥有公网的服务器帮忙转发数据。
FRP配置教程之SSH
前期准备
需要一台具有公网IP的服务器。
需要被穿透的内网设备。
配置主要分两部分:
- FRP服务端,布局在具有公网的IP的服务器。
- FRP客户端,布局在内网设备。
FRP穿透配置文件参考:frp*_full.ini
。
服务器配置
下载FRP
下载release包:根据设备和frp版本下载:
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
解压:
tar -zxvf frp_0.45.0_linux_amd64.tar.gz
相关文件:
- frps*:是frp服务器相关文件。
- frpc*:是frp客户端相关文件。
lzm@lzm-ubuntu:~/work/network/frp/frp_0.45.0_linux_amd64$ ls
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE
配置FRP服务端
修改服务端配置:
vim frps.ini
文件内容:
# FRP服务端
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 12345 # 这个token之后在客户端会用到
# frp管理后台端口,请按自己需求更改
dashboard_port = 7001
# frp管理后台用户名和密码,请改成自己的
dashboard_user = lzm
dashboard_pwd = 123456
enable_prometheus = true
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
启动FRP服务端
拷贝到专门的文件夹&启动服务器:两种方案:
- 直接在当前终端运行:
./frps -s frpc.ini
使用systemctl命令组:
- 需要注意的是,新版本的release已经不提供systemd相关脚本了,需要的可以下载旧版本获取。
# 在etc文件夹下创建frp文件夹,把frps.ini服务配置拷贝过去
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
# 把frps固件包拷贝到系统的命令库中
sudo cp frps /usr/bin
# 把frps的单元文件拷贝到用户lib
sudo cp systemd/frps.service /usr/lib/systemd/system/
# 使能&启用
sudo systemctl enable frps
sudo systemctl start frps
验证是否启动成功
验证服务端是否成功启动:在浏览器中输入:http://服务器公网IP:FRP后台端口号,如:http://1.244.12.12:7001
输入用户名和密码出现下图即可说明服务端成功启动。
可能遇到的一些问题
- 验证进入后台管理时失败:在验证前需要检查防火墙。云服务器不是在命令行配置防火墙,而是在后台。对于腾讯云服务器,需要在后台进入防火墙配置,然后添加规则,开放对应端口。
客户端配置
和服务端步骤差不多
下载FRP
下载release包:根据设备和frp版本下载:
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
解压:
tar -zxvf frp_0.45.0_linux_amd64.tar.gz
相关文件:
- frps*:是frp服务器相关文件。
- frpc*:是frp客户端相关文件。
lzm@lzm-ubuntu:~/work/network/frp/frp_0.45.0_linux_amd64$ ls
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE
配置FRP服务端
修改服务端配置:
vim frpc.ini
文件内容:
# FRP客户端
[common]
server_addr = 服务器ip
# 与frps.ini的bind_port一致
server_port = 7000
# 与frps.ini的token一致
token = 123456
# 配置ssh服务
[ssh]
type = tcp
# 也可以是当前设备局域网内的其它IP
local_ip = 127.0.0.1
local_port = 22
# 这个自定义,之后再ssh连接的时候要用
remote_port = 7002
启动FRP客户端
./frpc -c frpc.ini
验证是否穿透成功
随便拿台能接入公网的设备进行ssh验证:
穿透成功:
【网络】内网穿透方案&FRP内网穿透实战(基础版)的更多相关文章
- frp内网 穿透映射使内网svn可外网访问
起因 公司svn目前部署在内网服务器上,现在想在家中也可以使用,因此需要外网访问内网的工具 经过 使用过几个产品: utools,一个小巧的windows下的工具,内网映射只是它的一个小功能,支持tc ...
- frp端口映射穿透内网
前言 frp 是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持 TCP.UDP.HTTP.HTTPS 等协议类型,并且 web 服务支持根据域名进行路由转发. Github: ...
- 树莓派FRP内网穿透及自启动
内网穿透的步骤和文件存档 实验室在远方部署了电脑主机来采集数据和图片,每次去调试会很麻烦,因而使用FRP内网穿透使得我们可以在实验室访问主机. 主要功能 实现远程可访问和开机自启FRP程序服务 安装和 ...
- 内网穿透—使用 frp 实现内外网互通
前言 什么是内网穿透? 内网穿透,又叫 NET 穿透,是计算机用语.用通俗的说法就是你家里的个人电脑,可以直接被外网的人访问.例如你在公司,不通过远程工具,直接也可以访问到家里的电脑(本文章特指 we ...
- Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问
Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问 1.使用场景: 需求1.家中服务器 ubuntu 主机,跑接口服务,需要对外暴漏, 需求2.同时需要在外网ssh远程 关键词: frp内网 ...
- 内网穿透工具--frp
对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一个使用 ...
- frp内网穿透实战
什么是frp frp是一个使用非常简单的开源内网穿透软件,代码地址:https://github.com/fatedier/frp ,使用条前提你需要有一台公网服务器,大致原理是:公网服务器监听某个端 ...
- 五、frp内网穿透客户端frpc.ini各配置参数详解
[必须]标识头[common]是不可或缺的部分 [必须]frps服务端IPserver_addr = 0.0.0.00.0.0.0为FRP服务端IP,客户端要填写为服务端已配置的对应的IP,或者是服务 ...
- 解决外网与内网或内网之间的通信,NAT穿透
在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translato ...
随机推荐
- 【c#】仅1600行代码 2D魔方游戏源码-纯WinForm
想起以前高三的时候写过一个很无脑的程序,那个时候.net5.0都还没影儿呢,,现在分享一下.一个平面展开的魔方游戏. 这个是1.0版本,有些许bug. 比如左边的格子操作不了. 「2d cube.ex ...
- 【JDBC】学习路径6-SQL插入、修改、删除数据
第一章:插入使用.executeUpdate(); 返回的是受到影响的数据条数. public static boolean insert(String username,String passwor ...
- .NET 开源工作流: Slickflow流程引擎高级开发(十) -- BpmnJS流程设计器集成
前言: 在Slickflow产品开发过程中,前端流程设计器经历了几个不同的版本(jsPlumb, mxGraph等),目的是为了在设计流程时的用户体验更加良好,得到客户的好评和认可.BpmnJS流程设 ...
- KingbaseES 并行查询
背景:随着硬件技术的提升,磁盘的IO能力及CPU的运算能力都得到了极大的增强,如何充分利用硬件资源为运算加速,是数据库设计过程中必须考虑的问题.数据库是IO和CPU密集型的软件,大规模的数据访问需要大 ...
- mysql选择列建立索引选择
1. 选择Where子句中筛选性好的列,即列中数据大量不重复 2. 索引名最好 idx_ 开头 3. 包含在 Order by ; Group By; Distinct 中的字段可以添加索引,可以提高 ...
- centos7设置时间和上海时区并进行同步
1.设置时区(同步时间前先设置) timedatectl set-timezone Asia/Shanghai 2.安装组件 yum -y install ntp systemctl enable n ...
- Kafka开启SASL认证 【windowe详细版】
一.JAAS配置 Zookeeper配置JAAS zookeeper环境下新增一个配置文件,如zk_server_jass.conf,内容如下: Server { org.apache.kafka.c ...
- ProxySQL配置之MySQL服务器配置
备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入 MySQL服务器配置 [MySQL Server Configuration] 一.在ProxySQL中配置后 ...
- 使用docker-compose部署Django项目
先从最基本的功能开始 在一切工作开始前,需要先编辑好三个必要的文件. 第一步,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 Dockerfile 文件来指定 ...
- 在 Linux 上安装服务器管理软件 Cockpit
Cockpit 是一个自由开源的服务器管理软件,它使得我们可以通过它好看的 web 前端界面轻松地管理我们的 GNU/Linux 服务器.Cockpit 使得 linux 系统管理员.系统维护员和开发 ...