【docker部署frp+dnsmasq 内网穿透】

一、需要的准备工作

1.公网服务器一台(或者有公网ip的服务器);
2.内网服务器一台(或者win系统电脑);
3.公网服务器安装docker;
3.公网服务器安装frp安装包或镜像;
4.公网服务器安装dnsmasq安装包或镜像;

二、服务器部署开始

1.安装docker

  1. 在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装yum-utils软件包(提供yum-config-manager 实用程序)并设置存储库。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 Docker 引擎、containerd 和 Docker Compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 启动 Docker。
sudo systemctl start docker
  1. 通过运行镜像来验证Docker Engine安装是否成功 hello-world。
sudo docker run hello-world

安装docker官网链接

2.安装frp服务端 【安装在公网服务器】

  1. 下载frp镜像
    frps镜像下载地址
docker pull snowdreamtech/frps:latest
  1. 创建一个文件夹用来存放映射文件
mkdir /home/feiji/frps
  1. 创建一个frps.ini文件
touch frps.ini

frps.ini 内容

[common]
#服务端暴露的端口及客户端连接时需要的token密码
bind_port = 7000
token = jichang

#frps管理后台的端口和账号密码
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = feiji

#如果你想支持http,必须指定http端口监听
vhost_http_port = 80
#自定义二级域名
subdomain_host = feiji.proxy
  1. 创建一个启动脚本
    **注意!!!部分版本的脚本命令是 …/frps.ini:/etc/frp/frps.ini … 但是经实践,需要映射到/etc/frp/frps.toml 否者 dashboard 看板有概率无法启动 **
docker run --restart=always  --network host  -d -v /home/feiji/frps/frps.ini:/etc/frp/frps.toml --name frps snowdreamtech/frps
  1. 开放当前服务的端口
75007000  端口需要防火墙放开
  1. 打开dashboard 查看服务端是否启动成功
    【docker部署frp+dnsmasq 内网穿透】_第1张图片

3.安装frp客户端 【安装在内网服务器】

  1. 下载frpc客户端安装包
    frpc客户端安装包
    【docker部署frp+dnsmasq 内网穿透】_第2张图片

  2. 下载后解压到内网服务器或win电脑
    【docker部署frp+dnsmasq 内网穿透】_第3张图片

  3. 编辑frp客户端只修改frpc.ini的文件内容

[common]
# frp服务端所在服务器的公网IP  我这个是乱写的一个
server_addr = 47.91.110.11 
# frp服务端的端口
server_port = 7000
# frp服务端的token密码,保持一致
token = jichang

# 当前服务器需要穿透出去的内网服务的端口
[本地-测试-管理后台]
type = http
local_ip = localhost
local_port = 8080
# 域名前缀 可自定义
subdomain = local-test-admin
  1. 启动客户端frpc
    【docker部署frp+dnsmasq 内网穿透】_第4张图片
    【docker部署frp+dnsmasq 内网穿透】_第5张图片
  2. 打开dashboard 查看客户端服务及端口是否注册成功
    【docker部署frp+dnsmasq 内网穿透】_第6张图片

4.安装dns解析器 【安装在公网服务器】

  1. 下载dns镜像
docker pull jpillora/dnsmasq

dnsmasq下载连链接
【docker部署frp+dnsmasq 内网穿透】_第7张图片

  1. 创建一个文件夹用来存放映射文件
mkdir /home/feiji/dns
  1. 创建一个dnsmasq.conf文件
touch dnsmasq.conf

dnsmasq.conf 内容

#dnsmasq config, for a complete example, see:
#  http://oss.segetech.com/intra/srv/dnsmasq.conf
#log all dns queries
log-queries
#dont use hosts nameservers
no-resolv
#use cloudflare as default nameservers, prefer 1^4
#这两个server是国内常规使用的代理服务器ip 
server=8.8.8.8
server=114.114.114.114
strict-order
#serve all .company queries using a specific nameserver
#server=/company/10.0.0.1
#explicitly define host-ip mappings
#域名解析frps.ini里自定义二级域名 subdomain_host = feiji.proxy 
#这个意思是当前服务器接收到的请求中,如果域名带有feiji.proxy的,全部转发到47.91.110.11(部署了frp服务端的) 服务器上,由此进入本地穿透出来的服务
address=/feiji.proxy/47.91.110.11 
  1. 创建一个启动dns服务的脚本
touch start-dns.sh

start-dns.sh 内容

docker run \
	--name dnsmasq \
	-d \
	-p 53:53/udp \
	-p 5380:8080 \
	# /dns/dnsmasq.conf换成你本地这个文件的绝对地址
	-v /dns/dnsmasq.conf:/etc/dnsmasq.conf \
	--log-opt "max-size=100m" \
	# dns管理后台的账号密码可以自己设置
	-e "HTTP_USER=foo" \
	-e "HTTP_PASS=bar" \
	--restart always \
	jpillora/dnsmasq

添加权限

chmod -x start-dns.sh
  1. 开放当前服务的端口
5380   端口需要防火墙放开
  1. 打开dnsmasq 管理后台查看服务端是否启动成功

【docker部署frp+dnsmasq 内网穿透】_第8张图片

三、DNS配置测试内网穿透

  1. 配置dns服务器IP
    选择你链接的网络,点击属性,设置dns的服务器IP
    【docker部署frp+dnsmasq 内网穿透】_第9张图片
  2. 打开frp的dashboard 看板,选择对应注册进去的服务,在配置了对应dns的电脑上请求对应域名
    【docker部署frp+dnsmasq 内网穿透】_第10张图片
    请求成功
    【docker部署frp+dnsmasq 内网穿透】_第11张图片

你可能感兴趣的:(nginx,docker,服务器,容器)