前言
内网穿透(Intranet Penetration)是一种网络技术,用于实现从公共网络(如互联网)访问位于私有网络(内网)中的设备或服务。在传统的网络环境中,内网设备通常无法直接从外部网络访问,因为它们被路由器、防火墙等网络设备保护在内部网络中。内网穿透技术允许穿透这些网络设备,实现公网与内网之间的连接。
以下是一种常见的内网穿透技术方案:
服务器端部署:
在内网中部署一个服务器,作为内网穿透的中转站。该服务器通常位于公网上,可由外部网络访问。客户端连接:
在内网设备上安装一个客户端程序,与服务器建立连接。客户端程序将内网设备的请求发送到服务器,并将服务器的响应返回给内网设备。穿透隧道:
客户端和服务器之间建立一个加密的隧道,通过这个隧道传输数据。隧道可以使用不同的协议和加密方式,如TCP、HTTP、SSL等。端口映射:
通过内网穿透工具,在服务器和内网设备之间建立端口映射。将服务器的特定端口映射到内网设备上的目标端口,使外部网络可以通过服务器访问内网设备。安全性和权限控制:
内网穿透工具通常提供安全性和权限控制机制,确保只有经过授权的用户可以访问内网设备。
1、准备工作
frp搭建分为服务端和客服端,服务端运行在外网服务上,客户端就是本地内网环境;服务端与客户端可以是linux系统或者windwos系统,没有固定的对应的关系,可以交叉作为服务端或者客户端,如图:
下载linux和windows版本的frp:https://github.com/fatedier/frp/releases
下面使用linux作为服务端,windows作为客户端实现FRP的搭建
2、服务端
2.1、解压
将下载的frp_0.40.0_linux_amd64.tar.gz
包,拷贝到服务器的/opt目录下
,并且解压得到frp_0.40.0_linux_amd64
目录
2.2、修改frps.ini配置
frps.ini
文件进行端口的映射配置
vim /opt/frp_0.40.0_linux_amd64/frps.ini
内容:
[common]
# 与客户端绑定的进行通信的端口,防火墙需要开放7000端口
bind_port = 7000
#token认证,任意值
token = 123456789
2.3、启动
cd /opt/frp_0.40.0_linux_amd64
# 后台启动
nohup ./frps -c ./frps.ini &
启动成功:
2.4、配置开机自启
创建frps.service文件:
vim /etc/systemd/system/frps.service
内容:
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/frp_0.40.0_linux_amd64/frps -c /opt/frp_0.40.0_linux_amd64/frps.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
启动命令:
sudo systemctl enable frps
sudo systemctl start frps
3、客户端
3.1、解压
将下载的frp_0.40.0_windows_amd64.zip
包,解压得到frp_0.40.0_windows_amd64
目录
2.2、修改frpc.ini配置
frpc.ini
文件进行客户端的配置,配置与服务端的端口的映射以及本地服务信息;
内容:
[common]
#服务端所在ip
server_addr = 111.15.113.18
#服务端配置的绑定端口,与bind_port值一致
server_port = 7000
#token认证,任意值,与服务端配置的token一致即可
token = 123456789
#公网访问内部web服务器以http方式,可以配置多个`[]`表示服务名称
[nginx]
type = http
#本地ip
local_addr = 127.0.0.1
#内网web服务的端口号
local_port = 80
#所绑定的公网服务器域名,一级、二级域名都可以
custom_domains = demo.nginx.com
[boot-demo]
type = http
#本地ip
local_addr = 127.0.0.1
#内网web服务的端口号(可随便修改)
local_port = 90
#所绑定的公网服务器域名,一级、二级域名都可以
custom_domains = demo.boot.com
2.3、启动
Windwos需要通过cmd
的方式运行frpc.exe
d:
cd My\frp\frp_0.40.0_windows_amd64
frpc.exe
启动成功:
4、测试
1、启动frp客户端与服务端;
2、启动本地环境的nginx(可以是其他任意的http服务);
3、通过127.0.0.1服务本地nginx,保证连通;
4、通过demo.nginx.com域名访问,成功访问,表示环境搭建成功;
结果: