公网服务器上部署frp服务端
假设我们的公网服务器的地址anywebsites.f3322.net
,ubuntu 20.04系统,各个端口都可用。
首先准备好frp服务端的配置文件/opt/frps.ini
,内容如下
[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_addr = 0.0.0.0
# 管理端口
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
log_file = ./frps.log
log_level = info
log_max_days = 3
disable_log_color = false
# 客户端连接token
token = 12345678
allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 5
max_ports_per_client = 0
subdomain_host = frps.com
tcp_mux = true
然后,运行下面的命令,使用docker部署frps的服务端:
docker run -d --name=frps \
--restart=always \
-v /opt/frps.ini:/etc/frp/frps.ini \
-p 7000:7000 \
-p 7001:7001/udp \
-p 7500:7500 \
snowdreamtech/frps
该容器暴露出来三个端口:7000
端口为frp的服务端口;7500
为frp服务端的控制面板,而7001/udp
端口是为了接下来部署openvpn
预留的端口。
内网机器部署openvpn
Github上已经有一份说明非常详细的文档(点此查看),讲的非常简明扼要,接下来我只是简单翻译一下而已。
首先,找个文件夹,新建一份docker-compose.yml
的配置文件:
version: '2'
services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
ports:
- "1194:1194/udp"
restart: always
network_mode: "host"
volumes:
- ./openvpn-data/conf:/etc/openvpn
配置文件中,network_mode:"host"
让openvpn的容器共享宿主机的网络,而不是docker-compose自动创建的openven_default
虚拟网络。加了这条命令,外面机器成功登录了openvpn,即可访问内部局域网中的其他机器(否则不可以),然而,也要留意内部局域网中的ip分配与docker-compose默认的网段冲突!!!
进入该路径,依次运行下面的命令(若出现交互内容,则按照提示输入即可):
- 配置文件和证书初始化
docker-compose run --rm openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
docker-compose run --rm openvpn ovpn_initpki
- 修改文件所属权
sudo chown -R $(whoami): ./openvpn-data
- 启动openvpn服务
docker-compose up -d openvpn
- 产生客户端认证文件
export CLIENTNAME="your_client_name"
docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass
docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn
一切操作结束,最后得到一个 $CLIENTNAME.ovpn
,拷贝到本地,但仍然需要修改部分内容。需要把文件中remote VPN.SERVERNAME.COM 1194 udp
修改为remote anywebsites.f3322.net 7001 udp
。地址自然是我们的公网网址,而端口,需要接下来,在frp的客户端转发到7001/udp
。
内网机器部署frp客户端
内网客户端服务器上,准备好配置文件/opt/frpc.ini
,内容如下:
[common]
server_addr = anywebsites.f3322.net
server_port = 7000
token = 12345678
[openvpn]
type = udp
local_ip = 0.0.0.0
local_port = 1194
remote_port = 7001
然后,运行下面的docker命令:
docker run --restart=always -d \
--network host \
-v /opt/frpc.ini:/etc/frp/frpc.ini \
--name frpc \
snowdreamtech/frpc
然后,打开我们服务端的网页控制面板anywebsites.f3322.net:7500
:
展开左侧Proxies
栏,点中UDP
,看到部署的openvpn服务已经成功连接:
此时,将修改后的ovpn配置文件导入本机的openvpn客户端,即可成功登录内网!