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原理