ColinOL

A Small Website

用户工具

站点工具


wiki:linux:linux-windows-frp-nat

frps内网穿透、外网访问内网

概述

frps是什么

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。可以粗略理解它是一个中转站,帮助实现【公网】←→【FRP(服务器)】←→【内网】的连接,让内网里的设备也可以被公网访问到。只需一台有公网IP的 VPS 服务器即可愉快地进行内网穿透,来让外网与内网建立起连接,实现远程访问!

frps资料

  1. github官方地址:https://github.com/fatedier/frp
  2. 说明:本文中使用的连接方式为kcp(基于udp协议),特此注明

准备

  1. 公网电脑/VPS:Linux,运行frps服务端
  2. 内网电脑:windows,运行frpc客户端
  3. 注册域名、域名A记录指向服务器IP、域名备案(有需要的话)

服务端配置(linux为例)

安装

FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,因为开源,只需到 Github 发布页 下载对应系统平台的软件包并解压就可用了。

sudo mkdir -p /opt/frp
cd /opt/frp
sudo wget "https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz"
sudo tar xzvf frp_0.38.0_linux_amd64.tar.gz
sudo mv frp_0.38.0_linux_amd64/* /opt/frp

frps.ini 配置

# frps.ini 服务端配置
[common]
# bind_addr = 0.0.0.0
 
# 默认使用TCP连接,可能导致http域名无法访问的问题
# bind_port = 7000
 
# frp支持使用kcp作为底层的通讯协议,而kcp默认就是基于udp协议
kcp_bind_port = 8190
 
vhost_http_port = 8080
 
#开启tls加密
tls_enable = true
 
#客户端也要配置一样的token
token = 123456
#超时时间,如果客户端遇到服务启动认证失败,大概率是时区问题,服务器设置一下就好了
authentication_timeout = 20000
 
# frp 控制面板
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = passwd

开启防火墙端口:7000

运行

./frps -c ./frps.ini

客户端配置(windows为例)

下载

从官方地址下载(https://github.com/fatedier/frp/releases)最新版本,解压缩到相应目录。

https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_windows_amd64.zip

frpc.ini 配置

启动动前,我们需要先修改配置文件。需要修改 frpc.ini 配置文件。

# frpc.ini 客户端配置
 
[common]
server_addr = 100.100.100.100
server_port = 7000
# frp支持使用kcp作为底层的通讯协议,而kcp默认就是基于udp协议
protocol = kcp
token = 123456
tls_enable = true
 
[ip_a]
# 适用于IP形式访问
# 形式为 server_addr:remote_port
# 示例为 100.100.100.100:6655
type = tcp
# 局域网IP,如果为本机,则是127.0.0.1
local_ip = 127.0.0.1
local_port = 80
remote_port = 8180
 
[ip_evlicensemanager]
# 适用于IP形式访问
# 形式为 server_addr:remote_port
# 示例为 100.100.100.100:6655
type = tcp
# 局域网IP,如果为本机,则是127.0.0.1
local_ip = 172.16.0.18
local_port = 88
remote_port = 6655
 
[domain_a]
# 适用于域名形式访问
# 形式为 custom_domains:(frps.ini)vhost_http_port
# 示例为 example.com:8080
type = http
# 内网 IP (如是本机,也可使用 127.0.0.1 或者这行不要)
local_ip = 172.16.0.18
local_port = 88
# 必填项
custom_domains = example.com
tls_enable = true

运行

注意程序路径,如果有空格的话,需要加引号“”

./frpc.exe -c ./frpc.ini

或 在程序目录新建文件并编辑为以下内容,然后双击运行

run_frpc.cmd
@echo off
title frpc 桥接软件 正在运行...
color 5e
echo 启动frpc
frpc.exe -c frpc.ini
echo 准备退出
pause

frps 服务端注册为服务,并自动启动

创建服务文件

sudo vim /usr/lib/systemd/system/frps.service

编辑为以下内容,并保存

[Unit]
Description=frp server
After=network.target
 
[Service]
Type=simple
 
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
 
[Install]
WantedBy=multi-user.target

设置开启自启

sudo systemctl enable frps

启动服务

sudo systemctl start frps

停止服务

sudo systemctl stop frps

重启服务

sudo systemctl restart frps

查看服务状态

sudo systemctl status frps

参考:

  1. Frp做内网穿透访问家里的Web网站 https://netsecurity.51cto.com/art/202010/628637.htm
  2. 利用frp 穿透到内网的http/https网站,实现对外开放(有域名和无域名时的配置情况) https://www.cnblogs.com/sanduzxcvbnm/p/8509150.html
wiki/linux/linux-windows-frp-nat.txt · 最后更改: 2022/03/29 04:39 由 colin