linux/windows内网穿透(fpr免费开源软件)

1,274 阅读3分钟

前提条件

一台有公网IP的服务器

Frp介绍

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 github.com/fatedier/fr…

frp工作原理

服务端运行,监听一个主端口,等待客户端的连接;

客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;

服务端fork新的进程监听客户端指定的端口;

外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;

客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

2.1 服务端配置

下载frp库

linux版:阿里网盘

内网穿透 www.aliyundrive.com/s/BDc125gUd… 提取码: yj03

解压frp压缩包修改配置文件

tar -zxvf frp_0.48.0_linux_amd64.tar.gz

vi frps.ini

[common]
bind_port = 7000(默认端口可修改 与客户端保持一致)
vhost_http_port = 9000(需要内穿的端口)
token = 12345678(自定义 客户端和服务端保持一致)

#修改配置完毕后重启
./frps -c frps.ini
#重启可能会出现端口占用的情况 
使用命令  losf -i:端口号  查找被占用端口
kill -9 pid  干点进程 在进行重启就好

2.2 客户端配置

同样的压缩包进行解压/修改配置文件

tar -zxvf frp_0.48.0_linux_amd64.tar.gz

vi frpc.ini

[common]
server_addr = *.*.*.*(服务端IP)
server_port = 7000 (自定义 需要和服务端对应)
token = 12345678 (自定义 需要和服务端对应)
[ssh] 
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[portainer]
type = http
local_ip = 127.0.0.1
local_port = 9000 (需要内穿的端口)
custom_domains =  (服务端IP)
[rocketMq_consle]
type = http
local_ip = 127.0.0.1
local_port = 9001
custom_domains = 服务端IP

#可以配置多个

#[名称不可重复]

#修改配置完毕后重启

./frps -c frps.ini

#重启可能会出现端口占用的情况

使用命令 losf -i:端口号 查找被占用端口

kill -9 pid 干点进程 在进行重启就好

配置开机自启动

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

服务名称,可自定义

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

配置后如果访问不到 去云服务器看看对应的端口是否开放