CentOS 7 部署frp穿透内网

超凡脫俗 2024-07-03 13:37:03 阅读 79

本文将介绍如何在CentOS 7.9上部署frp,并通过示例展示如何配置和测试内网穿透。

文章目录

(1)引言(2)准备工作(4)frps服务器端配置(5)frpc客户端配置(6)启动停止重启命令(7)设置开机自启动(8)使用openwrt作为frpc客户端连接

(1)引言

在家庭网络环境中,如果你想在外部访问到家里的局域网设备,通常情况下需要拥有公网IP。然而,由于IPv4地址资源有限,运营商很少会提供公网IP给家庭用户,除非你愿意支付额外费用。虽然IPv6可以解决这个问题,但需要互访的两端都是IPv6才能实现访问。

为了实现在外部随时访问家庭网络中的设备,我们可以选择使用frp来进行内网穿透。frp是一个开源的内网穿透工具,它可以将内网设备暴露给外部网络,从而实现远程访问。

(2)准备工作

在开始之前,你需要准备以下几项:

一台带有公网IP的云服务器,本文以CentOS 7.9为例。家庭网络中需要访问的设备,例如家用群晖NAS。了解云服务器的防火墙和安全组设置,以便进行相应的配置。

frp下载

1、GitHub文件地址:https://github.com/fatedier/frp/releases

2、根据所需下载需要的版本:

选择对应版本,右击复制下载链接,到服务器下载或直接下载都行。

在这里插入图片描述

3、服务器使用wget进行下载

<code>wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz

(4)frps服务器端配置

1、防火墙和安全组设置

在部署frp之前,我们需要进行一些防火墙和安全组的设置,以确保frp能够正常运行并且安全可靠。

2、关闭云服务器防火墙

首先,我们需要关闭云服务器上的防火墙。在CentOS 7.9上,可以使用以下命令关闭防火墙并禁用其开机启动:

systemctl stop firewalld && systemctl disable firewalld

3、关闭SELinux

SELinux是一种安全增强机制,它可以限制进程的权限。为了简化配置过程,我们可以将SELinux设置为"Permissive"模式,或者完全禁用它。可以使用以下命令将SELinux设置为"Permissive"模式:

setenforce 0

4、开放安全组端口

在云服务器的安全组中,我们需要开放一些端口以允许frp的通信。具体需要开放的端口包括:

frp服务的绑定端口(默认为7000)frp的仪表盘端口(默认为7001)frp的HTTP虚拟主机端口(默认为10080)frp的HTTPS虚拟主机端口(默认为10443)DSM 应用服务端口(5000)Openwrt端口(8120)

在这里插入图片描述

请根据你的实际情况在安全组中开放相应的端口。

5、安装frps

创建配置文件目录

<code>mkdir -p /usr/local/frps

将frps解压到tmp目录下备用

tar zxvf frp_0.32.1_linux_amd64.tar.gz -C /tmp

查看解压的配置文件内容

ll /tmp/frp_0.32.1_linux_amd64

total 23000

-rwxrwxr-x 1 mysql mysql 10575872 Apr 3 2020 frpc

-rw-rw-r-- 1 mysql mysql 7575 Apr 3 2020 frpc_full.ini

-rw-rw-r-- 1 mysql mysql 126 Apr 3 2020 frpc.ini

-rwxrwxr-x 1 mysql mysql 12935168 Apr 3 2020 frps

-rw-rw-r-- 1 mysql mysql 4639 Apr 3 2020 frps_full.ini

-rw-rw-r-- 1 mysql mysql 26 Apr 3 2020 frps.ini

-rw-rw-r-- 1 mysql mysql 11358 Apr 3 2020 LICENSE

drwxrwxr-x 2 mysql mysql 4096 Apr 3 2020 systemd

复制frpsfrps.ini两个配置文件

cd /tmp/frp_0.32.1_linux_amd64

cp frps frps.ini /usr/local/frps

修改frp配置文件

现在,我们需要对frp进行配置,以便实现内网穿透。

使用文本编辑器vim打开frp的配置文件/usr/local/frps/frps.ini

vim /usr/local/frps/frps.ini

根据需要,修改以下配置项:

[common]

bind_port = 7000

dashboard_port = 7001

vhost_http_port = 10080

vhost_https_port = 10443

token = 123456789

dashboard_user = admin

dashboard_pwd = admin

#内网NAS

[dsm]

type = tcp

local_ip = 192.168.31.100

local_port = 5000

remote_port = 5000

#内网路由器

[openwrt]

type = tcp

local_ip = 192.168.31.120

local_port = 80

remote_port = 8120

上述配置是frp的配置文件,其中包含了以下几个部分:

[common]:这是通用配置部分,包含了一些常用的配置项。

bind_port:指定frp服务器监听的端口号,这里设置为7000。dashboard_port:frp的仪表板(dashboard)的端口号,用于管理frp服务,这里设置为7001。vhost_http_port:虚拟主机的HTTP端口号,用于HTTP协议的内网穿透,这里设置为10080。vhost_https_port:虚拟主机的HTTPS端口号,用于HTTPS协议的内网穿透,这里设置为10443。token:用于验证客户端与服务器之间的身份验证令牌。dashboard_user:仪表板的用户名,这里设置为"admin"。dashboard_pwd:仪表板的密码,这里设置为"admin"。

[dsm]:这是一个自定义的服务配置部分,用于将frp服务器上的TCP流量转发到本地的NAS服务。

type:指定服务类型为TCP。local_ip:本地服务的IP地址,这里设置为192.168.31.100。local_port:本地服务的端口号,这里设置为5000。remote_port:frp服务器上的对外暴露的端口号,这里设置为5000。

[openwrt]:这是另一个自定义的服务配置部分,用于将frp服务器上的TCP流量转发到本地的路由器。

type:指定服务类型为TCP。local_ip:本地服务的IP地址,这里设置为192.168.31.120。local_port:本地服务的端口号,这里设置为80。remote_port:frp服务器上的对外暴露的端口号,这里设置为8120。

通过这样的配置,frp可以将来自frp服务器的流量转发到本地的NAS服务和路由器上,实现了内网穿透的功能。请确保配置文件中的IP地址、端口号等信息与实际情况相符,并确保frp服务器和本地服务的网络连通性。

(5)frpc客户端配置

frpc配置与frps服务端配置其实相差不大

1、下载frp

wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz

2、创建frpc软件目录

mkdir -p /usr/local/frpc

3、解压frpc配置文件

tar zxvf frp_0.32.1_linux_amd64.tar.gz -C /tmp

3、复制配置文件frpc.ini和frpc

cd /tmp/frp_0.32.1_linux_amd64

cp frps frpc.ini /usr/local/frpc

4、编辑配置文件

[common]

server_addr = 服务器的IP

server_port = 7000

token = 123456789

[dsm]

type = tcp

local_ip = 192.168.31.100

local_port = 5000

remote_port = 5000

[openwrt]

type = tcp

local_ip = 192.168.31.120

local_port = 80

remote_port = 8120

(6)启动停止重启命令

1、服务端启动:

nohup 为后台运行进程

cd /usr/local/frps

nohup ./frps -c frps.ini > /dev/null 2> /dev/null &

2、客户端启动:

cd /usr/local/frpc

nohup ./frpc -c frpc.ini > /dev/null 2> /dev/null

3、查看frps和frpc进程

ps aux | grep frps

root 3908 0.0 0.7 715756 13468 pts/0 Sl 13:12 0:00 ./frps -c frps.ini

root 4271 0.0 0.0 112812 980 pts/0 S+ 13:18 0:00 grep --color=auto frps

ps aux | grep frpc

root 28639 0.2 0.0 712392 8792 pts/2 Sl 13:16 0:00 ./frpc -c frpc.ini

root 28698 0.0 0.0 23244 2224 pts/2 S+ 13:16 0:00 grep --color=auto frpc

4、查看frps服务端监听的端口

netstat -tnlp | grep frps

输出:

tcp6 0 0 :::10000 :::* LISTEN 3908/./frps

tcp6 0 0 :::8120 :::* LISTEN 3908/./frps

tcp6 0 0 :::7000 :::* LISTEN 3908/./frps

tcp6 0 0 :::7001 :::* LISTEN 3908/./frps

tcp6 0 0 :::10080 :::* LISTEN 3908/./frps

tcp6 0 0 :::5000 :::* LISTEN 3908/./frps

tcp6 0 0 :::10443 :::* LISTEN 3908/./frps

(7)设置开机自启动

1、关闭frps和frpc进程

查询进程id

ps aux | grep frps

输出:

root 3908 0.0 0.6 715756 12644 pts/0 Sl 13:12 0:00 ./frps -c frps.ini

关闭进程

kill -9 3908

frpc依次操作。

2、创建服务单元启动frps

在服务器端操作:

1、创建一个 Systemd 服务单元文件

vim /etc/systemd/system/frps.service

内容如下:

[Unit]

Description=FRP Client

[Service]

ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini

[Install]

WantedBy=multi-user.target

客户端也是如此操作,修改vim /etc/systemd/system/frpc.service,和配置文件ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini即可。

3、创建启动服务单元fpc

vim /etc/systemd/system/frpc.service

内容:

[Unit]

Description=FRP Client

[Service]

ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini

[Install]

WantedBy=multi-user.target

3、启动命令

#开启服务

systemctl start frps 或frpc

#开机自启动

systemctl enable frps 或frpc

#重新启动

systemctl restart frps 或frpc

#停止启动

systemctl stop frps 或frpc

打开DSM网页界面,成功

在这里插入图片描述

openwrt访问

在这里插入图片描述

下载文件测试

速度有点慢,我的服务器网络是1M的

在这里插入图片描述

(8)使用openwrt作为frpc客户端连接

访问openwrt后台,在服务->Frp 内网穿透

端口令牌参考->>/etc/frps/frps.ini配置文件

服务器:填frpc服务器IP

端口:frpc服务端口(bind_port)

令牌:填token

用户:admin

在这里插入图片描述

编辑添加服务列表

在这里插入图片描述

设置协议类型:tcp

远程端口:5000

内网主机:192.168.31.100

内网端口:5000

在这里插入图片描述

服务器添加:

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。