frp内网穿透容器化快速部署

关于frp

frp可以作为一个流量代理代发,可以将公网的流量转发到内网访问,从而实现访问公网即可访问到内网。
使用例子:两个不同局域网之间ssh访问
GitHub官网见:frp
详细使用见:frp详细使用

机器选择

为便于快速部署及管理,这里使用容器化部署:
server端为阿里云ECS,client端则对应内网的linux系统,
假设域名为www.abc.com

server端

docker-compose.yml

  sonic-frps:
    container_name: frps
    image: snowdreamtech/frps
    restart: always
    network_mode: "host"
    volumes:
      - /var/docker/frps/frps.ini:/etc/frp/frps.ini
    environment:
      version: 2

其中配置文件frps.ini见:
token必须要和client端token对应,加密用;

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
token = abcdef

docker-compose up -d 启动后:
在这里插入图片描述
查看:域名:7500端口,监控面板:
frp内网穿透容器化快速部署_第1张图片

client端

docker-compose.yml

  sonic-frpc:
    image: "snowdreamtech/frpc"
    container_name: frpc
    restart: "always"
    network_mode: "host"
    privileged: true
    volumes:
      - /home/frpc-c.ini:/etc/frp/frpc.ini
    environment:
      version: 1

其中配置文件frpc.ini见:

[common]
tls_enable = true
server_addr = www.abc.com
server_port = 7000
token = abcdef

[websocket_service]
type = tcp
local_ip = 127.0.0.1
local_port = 7777
remote_port = 7001

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7050

备注:
1、【多client处理】如果一个机器需要部署2个client端,则再起一个client端容器即可,其中
[websocket_service]、[ssh]需要更名,可以随机取[websocket_service1]、[ssh2];
2、以上所有的端口client端都不能重复使用;
3、阿里云ECS的安全组需要对以上的所有的端口增加开放;
4、如果是公司内部,需要注意ssh是否能对外访问,注意运维端口是否有ssh出口封禁;

验证

假设ECS的client端登陆用户为test

ssh -oPort=7050 [email protected]

如果能登陆上即可.

此时sever端容器日志会出现一条访问请求
在这里插入图片描述
说明请求已经发送到server端,表示配置正常;

其他

1、观察dashboard,可以实时看到连接的情况
frp内网穿透容器化快速部署_第2张图片

2、具体用法可以查看
frp服务端配置参数
frp客户端配置参数

你可能感兴趣的:(Linux,docker,容器,运维)