沙滩星空的博客沙滩星空的博客

使用FRP实现内网穿透 远程访问内网服务器

frp简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
内网穿透工具来让外网与你家内网建立起连接,实现无公网 IP 的远程访问了。

FRP 服务端和客户端是同一个压缩包,下载链接:
https://github.com/fatedier/frp/releases

我这边服务端是 CentOS7 系统,客户端是Windows10。

注: 除http(s)以外,客户端内任何本地端口的修改,必须在以下范围内:

默认端口白名单:2000-3000,3001,3003,4000-50000

客户端 frpc.ini 文件的 server_port 值和服务端 frps.inibind_port 值必须一致。

服务端

服务端下载 Linux amd64 版本:

wget -c https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar xzf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
ls

解压后程序目录共有以下文件:
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd

frpc frpc_full.ini frpc.ini 这三个是客户端文件,可以直接删除

rm -rf frpc*

查看服务端配置文件 frps_full.ini frps.ini
可知,FRP访问默认监听端口为 7000,管理面板默认端口为 7500,账户和密码都默认为 admin
如阿里云或腾讯云,记得设置 安全组策略 使得以上端口 允许入站和出站

默认端口白名单:2000-3000,3001,3003,4000-50000
frps_full.ini

allow_ports = 2000-3000,3001,3003,4000-50000

修改 frps.ini 设置

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = xx
dashboard_pwd = xx

运行一下命令即可启用 FRP 服务:

./frps -c frps.ini

或启动守护进程到后台运行

nohup ./frps -c frps.ini > nohup.out 2>&1 &

CTRL+Z 暂停正在执行的进程,并放入后台
jobs 查看当前后台进程
bg %1 继续执行后台暂停的进程。程序后台运行,信息输出仍然在前台屏幕输出
jobs 查看后台进程作业号
fg %1 重新放回前台

http://blog.catmes.com/archives/nohup.html

客户端

远程服务器的 remote_port 端口,由本地客户端配置文件决定

默认端口白名单:2000-3000,3001,3003,4000-50000

frpc.ini 配置客户端。

remote_port 远程服务器端口(映射到本地电脑) 对应远程服务器nginx proxy_pass反向代理的端口
local_port 本地机器端口(与 remote_port 配对)

将本地的8000端口映射到远程服务器的8888端口

[common]
server_addr = 121.46.36.159
server_port = 7000

; [ssh]
; type = tcp
; local_ip = 127.0.0.1
; local_port = 22
; remote_port = 6000

[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8000
remote_port=8888

启动客户端:

Windows 10

c:\frp\frpc.exe -c c:\frp\frpc.ini

Linux

./frpc -c frpc.ini

shell

#!/bin/bash
frpdir=/opt/apps/frp_0.36.2_linux_amd64/
${frpdir}frpc -c ${frpdir}frpc.ini

使用 NGINX 对80和443端口进行端口转发

出于访问80和443端口的需要,FRP 默认的端口白名单,无法满足需求。
而服务端刚好又安装了 NGINX ,默认监听 80 和443 端口。可用 NGINX 对指定域名做反向代理设置。

例:把 80 端口的请求转发到本地 8888 端口(8888端口为客户端的frpc.ini文件remote_port设置项)

server {
  listen   80;
  server_name yourtest.test;
  location / {
     proxy_set_header Host $host;
     proxy_pass http://127.0.0.1:8888;
  }
}

proxy_pass http://127.0.0.1:8888;
nginx 每一行语句必须以 分号 ; 结束。
反向代理的地址,不加 http ,直接用IP会报错。

proxy_set_header Host $host; 此项不设置,无法获取访问的域名和站点,所以本地NGINX会解析到访问默认站点。


FRP 简单入门安装配置教程 - 开源免费内网穿透工具,无公网 IP 远程访问 https://www.iplaysoft.com/frp.html
frp内网穿透学习 https://www.cnblogs.com/BOHB-yunying/p/12693675.html
内网穿透服务器 https://blog.csdn.net/deng_xj/article/details/88952420
利用nginx与frp/ngrok实现内网穿透,将网站架在自己家里或者公司内部 https://blog.csdn.net/miw__/article/details/89355689

未经允许不得转载:沙滩星空的博客 » 使用FRP实现内网穿透 远程访问内网服务器

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址