通过Docker+frp实现内网穿透

通过Docker+frp实现内网穿透

这篇文章是最近又折腾了一个局域网的小网站,在这边记录一下内网穿透的方法,还是老方法frp,只不过之前用的是.start.sh,这次使用的是Docker

配置内网穿透一定要有一个公网服务器,也就是能访问到的服务器,可以是腾讯云、阿里云等

请注意:由于近日frp更新(0.52版本后),原.ini配置文件已经不再生效,取而代之的是.toml等配置文件,因此近日更新博客,对启动容器命令添加了版本号,直接复制该博客的命令仍然生效。
若想安装最新版本frp,可以参考官网。(后面我也会做出更新)

1. 创建并修改配置文件

1.1 在公网上创建frps的配置文件
## 创建目录
FRP_HOME=/etc/docker/frp/ && mkdir -p $FRP_HOME
## 创建文件
touch $FRP_HOME/frps.ini

修改文件的内容:

vim frps.ini

>>> 内容如下:<<<

[common]
bind_port = 7000
vhost_http_port = 7080
vhost_https_port = 7081
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = username
dashboard_pwd = password
token=token_information
# 👇 用来实现二级域名,如:xxx.yyyy.com,下面这一行是不包含「xxx」的剩下的「yyyy.com」那一部分👇
subdomain_host = yyyy.cc

subdomain_host = yyyy.cc并非一定要写,首先实现二级域名的方式有很多,frp还提供了一种用『custom_domains=xxx.yyyy.cc』的方式,DNS解析也可以实现二级域名,方法很多自行尝试。




1.2 在内网上创建frpc的配置文件
## 创建目录
FRP_HOME=/etc/docker/frp/ && mkdir -p $FRP_HOME
## 创建文件
touch $FRP_HOME/frpc.ini

修改文件的内容:

vim frpc.ini

>>> 内容如下:<<<

[common]
# 公网IP
server_addr = xx.xx.xx.xx
# frps 配置文件中的 bind_port
server_port = 7000
# frps 配置文件中的 token
token=token_information

# 一个连接,名字随便取,但不可重复
[xxx]
# 连接类型,可以是tcp、http、https,后两者必须配置「subdomain」或「custom_domains」
type = tcp
# 本地IP:可以是本机,也可以是局域网的其他IP
local_ip=127.0.0.1
# 本地端口:想要网穿的端口
local_port = 80
# 二级域名:xxx.yyyy.com 中「xxx」的那一部分
subdomain = xxx

# 又一个连接,名字随便取,但不可重复
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 通过公网的 8022 就可以访问到内网这台电脑的22端口
remote_port = 8022

2. 启动 Frp

1. 公网启动 | frps
docker run -d --restart always --network host --name frps -v /etc/docker/frp/frps.ini:/etc/frp/frps.ini snowdreamtech/frps:0.51.3
2. 内网启动 | frpc
docker run -d --restart always --network host --name frpc -v /etc/docker/frp/frpc.ini:/etc/frp/frpc.ini snowdreamtech/frpc:0.51.3

访问IP:7500可以查看Dashboard控制面板。

注意:如果你配置了http类型的穿透,同时配置了subdomain前置域名,但是通过xxx.yyyy.cc无法访问到你的网站,请检查你的域名yyyy.cc是否解析到frps所指定的http端口。
一般解析都只能指定到80端口,最简单的方法都是将frps的http端口设置为80,或者可以尝试“隐性解析”,解析到服务器的其他非80端口,然后将http地址设置为该端口。
关于“隐性解析”,网上教程很多,自行百度。




内网穿透的方法很多,frp绝对不是唯一的选择,还有花生壳、甚至通过路由器等,但是frp的性价比很高,只要你的服务器还能多跑一个Docker就可以启动起来。

另外,使用解压压缩包然后.start.sh也是一种启动frp的方式,可以试着自己编写systemctl文件来实现给systemctl托管以方便的控制开机自启、开启关闭等,也是一个不错的选择(之前就是用的这种方法,但是写systemctl文件有点烦)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值