在具有公网IP的服务器(一般是云主机)上安装frp服务
拉取frp镜像
docker pull snowdreamtech/frps
新建配置文件目录并创建一个配置文件
cd ~ mkdir docker-vols cd docker-vols mkdir frp-server cd frp-server vim frps.ini
frps.ini 文件内容
[common] #绑定端口,用户frp客户端连接用 bind_port = 60000 #用于穿透http服务用(如果需要的话) vhost_http_port = 60001 #用于穿透https服务用(如果需要的话) #vhost_https_port = 60002 #其他需要穿透的普通tcp或udp端口不需要在配置文件中写明,但需要在后面创建容器时做好映射 #与客户端的token必须设置成一致 token = 42974813dsadaqefaaa336c4eq9864bc #frp服务端管理页面端口,用户,密码 dashboard_port = 60080 dashboard_user = admin dashboard_pwd = admin
创建并运行容器,-v 参数里要改成你上面创建的文件路径,-p 参数改成frps.ini中你定义的绑定端口和http穿透端口,另外,按照你的需要添加你想要映射的端口,比如这里我添加了一条10022用于ssh连接的端口。如果想映射的端口比较多,嫌一个一个设置麻烦也可以直接使用host网络模式自动映射所有端口到这个容器,但一般不建议这样使用。
# 指定端口创建容器(其中10022-10032这个端口段就可用于后面的客户端内网穿透用) docker run --restart=always -p 60000:60000 -p 60001:60001 -p 60080:60080 -p 10022-10032:10022-10032 -d -v ~/docker-vols/frp-server/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps # 使用host模式自动映射所有端口(不建议) docker run --restart=always --network host -d -v ~/docker-vols/frp-server/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
- 执行上面的命令后,会返回一大串ID,不用管它。容器会在后台运行。此时可以访问 http://服务器IP:60080 来访问frp服务后台,用户密码是之前配置文件里面设置的user和pwd。
frp客户端设置(在内网的openwrt路由器上设置)
- 首先需要你的路由器安装openwrt系统并且安装好Frp客户端插件,自行百度。
- 进入 「Frp 内网穿透」菜单(不是Frps),进行基本设置,内容如下,令牌是服务器frps.ini中的token。
- 继续接下来就是添加具体的穿透源端口,目标内网设备的内网IP和端口了。内容如下。需要几条就配置几条。
- 都配置好以后别忘了勾上「启用」。
完成
通过上面的设置,现在你可以从外网任何地方访问 yourdomain.com:10022 ,相当于直接访问内网 192.168.1.123 的 22 端口了,用这种方法就可以穿透内网直接访问内网设备提供的各种服务了。