FRP内网穿透技术文档

前言:此技术文档基于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客户端使用不同的端口,不可重复

FRP内网穿透技术文档_第1张图片


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远程端口操作一致):

FRP内网穿透技术文档_第2张图片

端口即需要配置如下对应的端口序列,“:”号前面的端口,配置在docker-compose.yml文件中

FRP内网穿透技术文档_第3张图片

三.内网服务的配置(在家目录下执行)

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公网的密码

















你可能感兴趣的:(FRP内网穿透技术文档)