内网穿透之frp详解(http、https及tcp穿透配置)

您所在的位置:网站首页 内网穿透映射类型有哪些 内网穿透之frp详解(http、https及tcp穿透配置)

内网穿透之frp详解(http、https及tcp穿透配置)

2024-07-11 18:59| 来源: 网络整理| 查看: 265

frp 是一个使用 go 语言开发的反向代理服务,可用于内网穿透,支持 tcp, udp 协议,为 http 和 https 协议提供了额外的能力,且尝试性支持了点对点穿透。 由于 ngrok 2.x 已经闭源,ngrok 1.x 已不再维护,所以这里尝试使用 frp 替代 ngrok 作为个人的内网穿透工具。

0. 前提条件 一台 Linux 云主机 (这里是 CentOS 7),并要求具有固定公网 IP 暴露这台云主机指定端口的能力有一个域名解析到这个公网 IP,如frp.test.com和*.frp.test.com解析到这个公网 IP 1. 下载frp (服务端frps 和客户端frpc)

分别在服务器和个人本地机器上,从 [https://github.com/fatedier/frp/releases] 下载对应平台的 frp 服务端 frps 和客户端 frpc 可执行文件。 这里下载的 0.34 版本。

服务端:

wget https://github.com/fatedier/frp/releases/download/v0.34.2/frp_0.34.2_linux_amd64.tar.gz tar -zxvf frp_0.34.2_linux_amd64.tar.gz mv frp_0.34.2_linux_amd64 frps /usr/local/frp 2. 配置启动服务端 frps

编写 frps 的 Systemd 配置文件 /etc/systemd/system/frps.service:

[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini [Install] WantedBy=multi-user.target

修改 frps 的配置文件 /usr/local/frp/frps.ini:

[common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,请改成更复杂的 token = 12345678 vhost_http_port = 7550 # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = admin dashboard_pwd = 123 enable_prometheus = true # frp日志配置 log_file = /var/log/frps.log log_level = info log_max_days = 3

设置frps开机自启及启动:

systemctl enable frps systemctl start frps netstat -nltp | grep frps tcp6 0 0 :::17000 :::* LISTEN 32481/frps tcp6 0 0 :::8082 :::* LISTEN 32481/frps 3.nginx 配置

接下来配置 nginx 反向代理 frps 的 http 服务:

server { server_name *.frp.hryunyi.com; listen 443 ssl http2; ssl_certificate /home/nginx/ssl/*.frp.test.com.fullchain.cer; ssl_certificate_key /home/nginx/ssl/*.frp.test.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; listen 80; if ($scheme = http) { return 301 https://$host:443$request_uri; } location / { proxy_pass http://127.0.0.1:7550; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect http:// https://; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } 4.frp 客户端配置 通过自定义域名访问内网的 Web 服务

使用 python 在本地快速启动一个 http 服务用于测试:

python3 -m http.server 8080

下面将使用 frp 将这个 http 服务暴露到公网,编写 frp 客户端 frpc 的配置文件 frpc.ini:

[common] server_addr = frp.test.com tls_enable = true server_port = 7000 token = 12345678 [web_nextcloud] type = http local_ip = 127.0.0.1 local_port = 19080 custom_domains = python.frp.test.com

启动 frp 客户端:

./frpc -c ./frpc.ini

使用http://python.frp.test.com即可从公网访问前面使用 python 启动的用于测试的 http 服务。

配置 TCP 类型的代理让用户访问到内网的服务器。

在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件

[common] server_addr = frp.test.com tls_enable = true server_port = 7000 token = 12345678 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 custom_domains = ssh.frp.test.com remote_port = 6000

local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。

`ssh -oPort=6000 [email protected]` frp 会将请求 `ssh.frp.test.com:6000` 的流量转发到内网机器的 22 端口。 关于 frp 的更多内容可以查看官方文档 frp。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3