前言:此技术文档基于docker容器技术搭载的FRP服务,由两个基本的容器服务组成,frps-docker为服务端应用,部署于含公网IP的阿里云ECS中,frpc-docker为客户端应用,部署于含内网的服务器中,可实现在ECS中通过命令:ssh -p 6000 root@公网IP,登陆进入相应的内网服务器中,进行资源的管理
一.部署frp服务的一些要求:
1.硬件环境:
基于Linux系统Centos7.3及以上版本,更好地去兼容docker1.13.1及以上版本,并已在ECS中配置公网IP
2.网络YUM源(基于阿里云):
yum -y install vim wget net-tools lrzsz
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
3.安装docker服务:
yum -y install docker
systemctl start docker && systemctl enable docker
systemctl status docker #可查看docker运行状态
4.配置阿里云时间同步服务器,保证frps与frpc端的时间一致
查看服务器有无时间服务器chronyd
systemctl status chronyd
如无,进行安装:yum -y install chrony
systemctl status chronyd 再次查看,服务已安装配置上
systemctl start chronyd 启动时间同步服务
systemctl enable chronyd 开机自启动时间同步服务
vim /etc/chrony.conf 配置阿里云的时间同步服务
#如下4行内容进行注释
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
#添加如下一行内容,同步阿里云时间,保存并退出
server ntp1.aliyun.com iburst
重启时间同步服务:systemctl restart chronyd
查看时间同步情况:chronyc sources -v
如出现末行输出为含有:^* 120.25.115.20的数据,表示已成功配置阿里云的时间同步服务
5.关闭系统的selinux功能,并重启系统
sed -i 's/^\(SELINUX=\).*/\1disabled/g' /etc/selinux/config
reboot
6.开启防火墙firewalld的安全功能
#firewalld防火墙
systemctl status firewalld
#查看firewalld服务状态
systemctl start firewalld
systemctl enable firewalld
7.ssh服务端远程连接ssh客户端设置
#frps服务端的ssh设置
vim /etc/ssh/sshd_config
ClientAliveInterval 60 #与客户端的连接时长
ClientAliveCountMax 3 #与客户端的最大连接次数
保存并退出后重启sshd服务:systemctl restart sshd
#frpc客户端的ssh设置
ServerAliveInterval 60 #与服务端的连接时长
ServerAliveCountMax 3 #与服务端的最大连接次数
保存并退出后重启sshd服务:systemctl restart sshd
8.网络环境:
阿里云ECS,学校机房服务器
9.软件环境:
frps-docker,frpc-docker
二.公网ECS端的配置(在家目录下执行)
1.家目录下创建frps-docker文件夹并进入目录
mkdir frps-docker && cd frps-docker
2.获取fprs-docker的配置,镜像资源等;
wget --no-check-certificate https://code.aliyun.com/clangcn/frp-docker/raw/master/frps-docker/frps-docker.tar
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frps-docker/Dockerfile
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frps-docker/build.sh
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frps-docker/frps
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frps-docker/docker-compose.yml
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frps-docker/entrypoint.sh
3.导入镜像
docker load < frps-docker.tar
注释:此frps服务端已配置如下远程连接端口,用于直连frpc客户端,多个frpc客户端使用不同的端口,不可重复
4.获取docker-compose文件,并授予执行权限
curl -L http://firmware.koolshare.cn/shell/docker-compose/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
5.启动frps-docker服务
docker-compose up & #后台运行,在此进入到的路径下执行
6.停用frps-docker服务,frps-docker服务正常运行时,禁止执行此命令
docker-compose down
7.安全组入方向规则设置,此步骤一定要操作(ssh远程端口以6000为例,其它ssh远程端口操作一致):
端口即需要配置如下对应的端口序列,“:”号前面的端口,配置在docker-compose.yml文件中
三.内网服务的配置(在家目录下执行)
1.家目录下创建frps-docker文件夹并进入目录
mkdir frpc-docker && cd frpc-docker
2.获取fprc-docker的配置,镜像资源等;
wget --no-check-certificate https://code.aliyun.com/clangcn/frp-docker/raw/master/frpc-docker/frpc-docker.tar
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frpc-docker/build.sh
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frpc-docker/docker-compose.yml
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frpc-docker/Dockerfile
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frpc-docker/entrypoint.sh
wget --no-check-certificate http://git.cjkj.co/lqx001/frp-docker/raw/master/frpc-docker/frpc.ini
3.导入镜像
docker load < frpc-docker.tar
4.frpc.ini文件下的配置(需要更加关注的地方)
[common]
server_addr = 47.112.108.192 #此地址为公网ip地址
server_port = 6443
[ssh]
type = tcp
local_ip = 172.31.0.1
local_port = 22
remote_port = 6000 #端口可设范围6000-6010
5.获取docker-compose文件,并授予执行权限
curl -L http://firmware.koolshare.cn/shell/docker-compose/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
6.启动frps-docker服务
docker-compose up & #后台运行,在此进入到的路径下执行
7.停用frps-docker服务,frps-docker服务正常运行时,禁止执行此命令
docker-compose down
四.内网穿透实现
1.ECS公网端执行远程操作命令,注意:root@公网IP
ssh -p 6000 root@公网IP
2.当出现Are you sure you want to continue connecting (yes/no)?
输入yes
3.输入内网机器的密码,一定要注意:不是输入ECS公网的密码