frp内网穿透

开源地址

FRP 适合把内网中的 SSH、Web 或其他 TCP 服务暴露到公网服务器上。网页服务不一定要走 HTTP 类型代理,也可以先用 TCP 透传,再由公网机器上的 Nginx 或其他网关统一处理域名和证书。

Tip

不要轻易直接使用 HTTP 类型代理。它需要额外配置域名、端口和安全策略;如果只是临时访问或内部服务,TCP 方式通常更直观。

frps

frps 运行在有公网 IP 的服务器上,负责接收客户端连接并监听对外端口。

启动

setup.sh
#!/bin/bash

# snowdreamtech/frps

docker kill frps
docker rm frps

docker run -d \
--name frps \
--restart=always \
--net host \
-v $(pwd)/frps.ini:/opt/frp/frps.ini \
fatedier/frps:v0.68.0 -c /opt/frp/frps.ini

配置

frps.ini
[common]
# 监听端口
bind_port = 44052
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = xxx
dashboard_pwd = xxx
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081


# 身份验证
token = 1ym7qY

frpc

frpc 运行在内网机器上,负责把本地端口注册到 frps。配置中需要保持服务端地址、端口和 token 与 frps 一致。

启动

setup.sh
#!/bin/bash

docker kill frpc
docker rm frpc

docker run -d \
--name frpc \
--restart=always \
--network host \
-v $(pwd)/frpc.ini:/etc/frp/frpc.ini \
fatedier/frpc:v0.68.0 -c /etc/frp/frpc.ini

配置

frpc.ini
[common]
# server_addr为FRPS服务器IP地址
server_addr = xx.xx.xx.xx
# server_port为服务端监听端口,bind_port
server_port = 44052
# 身份验证
token = 1ym


# [ssh] 为服务名称,下方此处设置为,访问frp服务段的2288端口时,等同于通过中转服务器访问127.0.0.1的22端口。
# type 为连接的类型,此处为tcp
# local_ip 为中转客户端实际访问的IP
# local_port 为目标端口
# remote_port 为远程端口

[ssh-pvelinux]
type = tcp
local_ip = 192.168.1.112
local_port = 22
remote_port = 15001

[jenkins]
type = http
local_ip = 192.168.1.112
local_port = 8081
remote_port = 8082