准备:云服务器或者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
远程连接、成功连接