FRP内网穿透初体验!

2024/6/2·4 views

内网穿透有几款软件是比较流行的

fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)

ehang-io/nps: 一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal. (github.com)

ngrok | Unified Application Delivery Platform for Developers

这里我选择使用frp,介绍下如何通过frp使用本地http服务!

准备工作

  • 有公网ip的云服务器一台
  • 电脑/服务器一台

这里默认大家已经将frp的包放在了有公网ip的服务器和电脑/服务器中

部署服务端

这里我选择将frp放在/usr/local/frp目录,编辑frps.toml文件

toml 复制代码
bindPort = 7000
vhostHTTPPort = 8000  # 添加http端口

服务器防火墙需要开启7000、8000端口

启动

复制代码
/usr/local/frps -c /usr/local/frps.toml

也可以使用systemd管理服务
`

shell 复制代码
vim /etc/systemd/system/frps.service

输入

复制代码
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml

[Install]
WantedBy = multi-user.target

执行命令

shelll 复制代码
systemctl daemon-reload # 重新载入配置
systemctl start frps # 启动服务
systemctl enable frps # 开机自启

至此,服务端配置结束

部署客户端

首先启动本地http服务,不管是nginx,apache还是node,php启动本地服务都行。这里我选择nginx,服务使用80端口

修改frpc.toml配置文件

toml 复制代码
serverAddr = "codeemo.cn"
serverPort = 7000

[[proxies]]
name = "test-http"
type = "http"
customDomains = ["frp.codeemo.cn"]
localIP = "127.0.0.1"
localPort = 80

然后执行命令

shell 复制代码
frpc -c ./frpc.toml

可以看到[test-http] start proxy success表示启动成功了

接着就可以使用frp.codeemo.cn:8000 访问本地的80口服务了。

我想使用80端口

如果想使用80或者443端口进行访问,因为我服务器上已经安装了nginx,80、443端口已经被占用了,这时候可以做一层代理,这样一来,防火墙的8000端口也可以不放行了!

conf 复制代码
server
{
    listen 80;
    server_name frp.codeemo.cn;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8000;
    }
}

我在nginx中新建一个server,然后使用frp.codeemo.cn作为server_name,将请求代理到本地的8000端口,如果需要设置https,可以直接在这个vhost中设置。

结语

初次使用,难免会有纰漏、错误,还请指正!