使用 frp 安全的暴露内网服务
source link: https://beginor.github.io/2020/08/05/expose-internal-network-service-securely-with-frp.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用 frp 安全的暴露内网服务
frp frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,并且为 http 和 https 应用协议提供了额外的能力。
最近需要将内网的一些服务转发出来, 在自己的电脑上随时可用, 于是就研究了 frp 的文档, 操作记录如下。
frp 服务器配置
要使用 frp 进行内网穿透, 必须有一台有互联网 IP 的服务器, 否则没办法架设 frp 服务器。 服务器上根据操作系统安装 frp 的服务端, frps , 配置如下:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
log_file = /usr/frp/frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
# set dashboard_addr and dashboard_port to view dashboard of frps
# dashboard_addr's default value is same with bind_addr
# dashboard is available only if dashboard_port is set
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and pwd for basic auth protect, if not set, both default value is admin
dashboard_user = admin
dashboard_pwd = dashbord_password
# auth
authentication_method = token
token = frp_server_token
配置完成之后, 在服务端用下面的命令可以启动 frp 服务端:
/usr/frp/frps -c /usr/frp/frps.ini
内网服务配置
内网服务器上根据操作系统, 下载对应的 frp 客户端 frps , 以 ssh 服务为例, 配置文件如下:
[common]
server_addr = server_ip_or_name
server_port = 7000
# for authentication
token = frp_server_token
# decide if exit program when first login failed, otherwise continuous relogin to frps
# default is true
login_fail_exit = false
[internal_ssh]
type = stcp
sk = internal_ssh_sk
use_encryption = true
use_compression = true
local_ip = 127.0.0.1
local_port = 22
注意, 这里使用的是 stcp 模式, 没有使用 tcp 模式, 更加安全。 因为 tcp 模式会将内网服务端口直接暴露在互联网, 风险比较大。
配置文件编写好之后, 在内网服务器上运行下面的命令, 启动 frp 客户端:
/usr/frp/frpc -c /usr/frp/frpc.ini
客户端配置
通过 stcp 模式进行穿透的服务, 需要在客户端计算机上也运行一个 frp 的客户端 frpc, 配置如下所示:
[common]
server_addr = server_ip_or_name
server_port = 7000
# for authentication
token = frp_server_token
[internal_ssh_visitor]
type = stcp
role = visitor
sk = internal_ssh_sk
server_name = internal_ssh
use_encryption = true
use_compression = true
bind_ip = 127.0.0.1
bind_port = 1022
注意: visitor 中配置的
sk
和server_name
必须与内网服务器上的 frpc 的配置一致, 而且bind_ip
只能是127.0.0.1
。
配置文件保存之后, 在客户端计算机上也运行下面的命令, 启动 frp 客户端:
/usr/frp/frpc -c /usr/frp/frpc.ini
现在, 在命令行窗口输入下面的命令, 就可以连接到内网服务器的 ssh 服务了:
ssh -p 1022 [email protected]
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK