frp突破内网ip限制教程
1,背景
使用个人电脑连接家庭宽带使用都是动态ip(上个星期想要申请杭州移动家庭宽带的公网ip,但是他们的回复是现在家庭宽带无法申请公网ip),我们在外部无法访问。如何将我们自己私人电脑的ip映射到公网随时随地的访问呢?
现有的方法有好几个:①花生壳软件开放端口映射到域名(不收费的限制多);②ngrok(感觉相对复杂一点);③frp内网ip映射
frp的实现原理如下图所示
2,前提条件
①一台有公网ip的云服务器(我这边是阿里云的ecs服务器)
②了解一点点docker容器化知识(直接使用容器部署服务端和客户端)
3,流程
3.1,在云服务器上部署服务端
①在安装有docker的云服务器上直接执行如下命令,创建frp服务端配置文件
# 创建frp配置文件夹
mkdir /home/frp && cd /home/frp
# 创建frps.ini
cat <<EOF> frps.ini
# 复制如下配置,自行修改密码
[common]
# 你的frp服务端页面端口
bind_port = 10000
vhost_http_port = 10001
vhost_https_port = 10002
dashboard_addr = 0.0.0.0
dashboard_port = 10003
# 你的frp服务端账户名
dashboard_user = admin
# 你的frp服务端密码
dashboard_pwd = 你自己的密码
EOF
②直接执行如下命令
# 进入frp目录
cd /home/frp
# 创建启动脚本
cat <<EOF> start.sh
# 复制如下配置,挂载容器的frps.ini目录请自行修改
#!/bin/bash
docker run -d \\
--restart always \\
--network host \\
--name frps \\
-v /home/frp/frps.ini:/etc/frp/frps.ini \\
snowdreamtech/frps
EOF
# 运行脚本
sh start.sh
③直接访问ip:10003端口
3.2,在个人电脑上部署客户端
我这边直接是在windows10中安装了一个ubuntu系统,参考链接4
①ubuntu系统中安装docker
apt-get upgrade
apt-get install docker
docker info # 执行返回结果如下,表明docker已经安装
②直接执行如下命令,创建客户端frp配置文件
# 创建frp文件夹
mkdir -p /home/frp && cd /home/frp
# 创建frpc.ini
cat <<EOF> frpc.ini
# 复制如下配置
[common]
server_addr = 你自己云服务器的公网ip
server_port = 10000
# 下面的配置就是你自己映射的内网主机端口到外网端口情况
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[rabbitmq]
type = tcp
local_ip = 127.0.0.1
local_port = 15672
remote_port = 35672
EOF
③直接执行如下语句,启动容器
# 创建启动脚本
cat <<EOF> start.sh
# 复制如下配置,挂载容器的frpc.ini目录请自行修改
#!/bin/bash
docker run -d \\
--restart always \\
--network host \\
--name frpc \\
-v /home/frp/:/etc/frp/ \\
snowdreamtech/frpc
EOF
# 运行脚本
sh start.sh
我这边是直接在本地个人电脑上启动了一个rabbitmq,将本地的15672映射到公网的35672
然后直接访问 公网ip:35672
同时也可以在frp页面查看有哪些端口映射注册到服务端了
4,参考链接
1, frp官网
3, 阿里云内网穿透
5, 内网穿透神器frp原理
探究未知是最大乐趣