我是靠谱客的博主 灵巧流沙,最近开发中收集的这篇文章主要介绍FRP+Docker+windows搭建内网穿透,实现外网访问家里的Windows,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

准备:云服务器或者vps,作用:做数据转发

1. frp是啥?

具体可以看这里:https://gofrp.org/docs/concepts/

简单来说,大家如果不求甚解,只需要知道下面这些就行:

    frp是fast reverse proxy的缩写,是一个专注于内网穿透的高性能的反向代理应用
    frp项目的作者是中国人!
    frp支持 TCP、UDP、HTTP、HTTPS 等多种协议,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
    frp是go语言写的,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。
    frp有服务端(frps,s指service,通常搭建在有公网IP的设备上)和客户端(frpc,c指client,通常搭建在内网设备上)

在服务器上搭建FSP服务端

创建目录frp

 进入frp创建配置文件frps.ini

touch frps.ini

创建docker-compose.yml

vim docker-compose.yml

复制以下内容

version: '3.3'
services:
    frps:
        restart: always
        network_mode: host
        volumes:
            - './frps.ini:/etc/frp/frps.ini'
        container_name: frps
        image: snowdreamtech/frps

 保存退出

编辑frps.ini

[common]

#frp 监听端口,与客户端绑定端口

bind_port= 5443
kcp_bind_port = 5443


#dashboard用户名

dashboard_user= admin

#dashboard密码

dashboard_pwd= admin

#dashboard端口,启动成功后可通过浏览器访问如http://ip:9527

dashboard_port= 9527

#设置客户端token,对应客户端有页需要配置一定要记住,如果客户端不填写你连不上服务端

token = 8ad3d1x429a2d

注意:5443 和 9527端口不能被占用,被占了的话需要换成一个不被占用的 端口范围 1-65535

查看tcp端口使用情况

netstat -ntlp

启动docker-compose

docker-compose up -d

通过docker ps可以看到frps已经启动

 启动成功就可以看到5443 、9527端口被监听了

 ok 现在服务端启动了

我用的阿里云服务器,需要开放端口,不然外界是不能通过5443 和 7527 访问服务器的

使用浏览器连接看一下 http://ip:9527

   可能服务器的防火墙导致的,使用docker run的方式映射端口,防火墙会自动开放端口,docker-compose在配置文件中使用的是host网络模式,默认是桥接模式

查看防火墙是否开启

systemctl status firewalld

查看防火墙开放的端口

# 查看永久开放的端口

firewall-cmd --list-ports --permanent

# 查看所有已经开放的临时端口

firewall-cmd --list-ports

如果出现

表示没有端口被开放

docker ps 显示有端口号的防火墙都是不会显示的,只有frps没有端口显示,需要自己手动开放

开放9527和5443端口,并重新加载防火墙

firewall-cmd --zone=public --add-port=9527/tcp --permanent

firewall-cmd --zone=public --add-port=5443/tcp --permanent

firewall-cmd --reload

 

此时再访问frps控制面板

登录成功

 客户端搭建

我的客户端搭建在windows上

在windows怎么 下载安装docker可以看我的其他文章

客户端和服务端差不多,就不细讲了

打开ubuntu切换root用户创建目录和配制文件和docker-compose.yml

 docker-compose.yml

version: '3.3'
services:
    frpc:
        restart: always
        network_mode: host
        volumes:
            - './frpc.ini:/etc/frp/frpc.ini'
        container_name: frpc
        image: snowdreamtech/frpc

在 docker-compose.yml复制可能会导致格式不对,可以先随便创建一个文件把内容复制进去,在把文件名修改成docker-compose.yml

fprc.init

这里面自己不需要开启的自己添加、删除

为了测试:我本地开启分布式文件系统minio服务

运行minio服务,我数据卷挂载带d盘下面的data目录

sudo docker run -d -p 9000:9000 -p 9001:9001 --name minio -v /mnt/d/data:/data -e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin" --restart=always minio/minio server /data --console-address ":9001"

 服务运行起来了

 试试浏览器能不能打开minio控制台

# frpc.ini
[common]
server_addr = 118.31.8.238
server_port = 5443
token = 8ad3d1x429a2d

[ssh]
type = tcp
local_ip = 172.26.77.33
local_port = 22
# 这个自定义,之后再ssh连接的时候要用
remote_port = 6000 

[minio]
type = tcp
local_ip = 127.0.0.1
local_port = 9001
# 这个自定义,之后再ssh连接的时候要用
remote_port = 6001

配置文件里面设置的6000和6001端口进行数据转发的时候用到的,需要在服务器控制台开放端口和服务器防火墙开放端口

windows wsl 上的ubuntu ssh需要远程访问的,需要修改ssh配置文件

sudo vim /etc/ssh/sshd_config

1. Port 22 #默认即可,如果有端口占用可以自己修改
2. PasswordAuthentication yes # 允许用户名密码方式登录 

下载ssh查看ubuntu的本地ip

下载ssh服务

sudo apt-get install openssh-server

 下载网络工具

apt install net-tools

查看ubuntu的本地 ip

ifconfig | grep inet

 可以看到可以通过4个ip访问ubuntu,写127.0.0.1 只可以本地访问, 写 172.26.77.33可以本地可以远程。

查看ssh端口

netstat -tnlp | grep ssh

 如果通过本地ssh连接不成功

原因就是ssh服务没有启动

启动ssh

/etc/init.d/ssh start

如果报错

这是因为ssh没有什么共钥,需要生成一个公钥才能启动ssh

生成公钥

ssh-keygen -A

启动ssh服务

/etc/init.d/ssh start

查看ssh状态

service ssh status

 

启动frpc

docker-compose up -d

 客户端启动成功,通过配置文件可以看到本地的ssh和minio代理成功

 通过frp控制台也可以看到代理

测试

测试通过外网能不能访问到windows上面的服务

测试服务minio控制台,可以看到可以通过服务器的ip服务windows服务

 手机测试,也没问题

 测试ssh登录windows上wsl中的ubuntu

配置ssh工具,测试通过本地能不能连上ssh

通过127.0.0.1连接上ssh了

 测试通过远程服务器连接本地ssh

 远程连接、成功连接

最后

以上就是灵巧流沙为你收集整理的FRP+Docker+windows搭建内网穿透,实现外网访问家里的Windows的全部内容,希望文章能够帮你解决FRP+Docker+windows搭建内网穿透,实现外网访问家里的Windows所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部