内网穿透 通过frp代理访问内网机器

最近需要在服务器搭建一些服务,但是云服务器拓展性能价格昂贵,家里的一台小服务器完全可以满足,但是在公司的时候无法连接家中的内网,解决方案是通过frp做一个反向代理,通过云服务器的公网代理到家里的服务器,做一个内网穿透。

文章目录

  • 什么是frp
  • 为什么使用 frp?
  • 下载frp
  • 部署
  • 开始使用!
  • 推荐使用 systemd来控制frp
    • 使用 systemd
      • yum
      • apt
      • 写入内容
      • 使用 systemd 命令,管理 frps。
      • 配置 frps 开机自启。
  • 配置frp
    • 服务端
    • 客户端

什么是frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用 frp?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

更多详情可参阅 frp官网

下载frp

目前可以在 Github 的 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。

部署

解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。

开始使用!

编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。如果需要在后台长期运行,建议结合其他工具使用,例如 systemd 和 supervisor。

如果是 Windows 用户,需要在 cmd 终端中执行命令。

配置文件如何编写可以参考 示例 中的内容。

推荐使用 systemd来控制frp

使用 systemd

这个示例将会演示在 Linux 系统下使用 systemd 控制 frps 及配置开机自启。
在 Linux 系统下,使用systemd 可以方便地控制 frp 服务端 frps 的启动和停止、配置后台运行和开启自启。

要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件。

如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd。

yum

yum install systemd

apt

apt install systemd
使用文本编辑器,如 vim 创建并编辑 frps.service 文件。

$ vim /etc/systemd/system/frps.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.ini[Install]
WantedBy = multi-user.target

使用 systemd 命令,管理 frps。


# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

配置 frps 开机自启。

systemctl enable frps

配置frp

服务端

配置frps.ini

[common]
bind_port = 7808 # 服务端绑定的端口
token = 123456 #简单身份验证,需要和客户端配置相同

客户端

配置frpc.ini

[common]
server_addr= 123.1.1.1 #frp服务端所在服务器的公网ip
server_port=7080 #frp服务端绑定的端口 (自己定)
token = 123456 #(简单的身份认证)需要和服务端配置相同才可代理[ssh]
type=tcp
# 本地需要暴露到公网的服务地址
local_ip=127.0.0.1
# 本地需要暴露到公网的服务端口
local_port=22
# 公网通过此端口映射到本地端口
remote_port=50022# 代理mysql 下面想代理什么端口只需要配置一个就可以
[mysql]
type=tcp
local_ip=127.0.0.1 # 内网中mysql的ip
local_port=3306 # 内网中mysql的端口
remote_port=53306 # 映射到外网的端口

这样访问公网的123.1.1.1:50022就相当于在内网访问127.0.0.1:22
mysql 通过123.1.1.1:53306相当于在内网中127.0.0.1:3306

注意:记得在云服务器防火墙或者安全策略中放开自己配置的这些端口,如50022、53306、7080


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部