首先要了解公网IP和私网IP,像家用电脑或者服务器只有一个私网IP,没用公网IP。
如果路由器有公网IP可以间接连接我们的内部服务器,一般要运营商下放公网IP,如果运营商没用下放公网IP,像第三方有很多内网穿透的盒子,例如:内网穿透/旁路由sd-wan组网盒子蒲公英。
我们也可以借助一款强大的软件FRP达到可以让外网访问的效果。
二、什么是内网穿透?内网穿透的原理很简单的说就是:
两台计算机A和B都处于不同的局域网中,A想要访问B, 就需要通过一台服务器做桥接的,桥接的方式有两种,一种是服务器相互转发流量 到A和B,另一种是告诉对方公网IP地址,自己充当一个介绍人的角色。
内网穿透的工具有很多:花生壳、蜻蜓映射、frp、nps、ngrok
我们重点介绍的是frp
三、什么是FRP?frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
四、为什么使用 frp?通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
1.一台带有公网IP的云服务器(阿里云或者腾讯云的都可以,linux系统,必须是centos7以上版本,centos6不支持systemctl命令)。
2.备案过的域名。
3.物理服务器(内网)、家用电脑(内网)(家用电脑也可以作为服务器)
六、安装。到frp中文文档上,下载最新版本
安装 | frphttps://gofrp.org/docs/setup/
下载完成后,我们用xftp上传的云服务器
我们用xshell分别连接物理服务器和云服务器。
在云服务器上输入解压
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
云服务器端输入ls查看目录,cd frp 进入文件frp下
进入xftp,点击frps.ini右键进行编辑
在文件中写入并保存
[common] bind_port = 7000 vhost_http_port = 8080
然后在云服务器命令界面开启服务器
./frps -c ./frps.ini
这样代表云服务器已经启动了
然后在物理服务也安装
然后解压,同样修改文件名称
然后进入物理服务器编辑frpc.ini文件
[common] server_addr = 81.51.019.17 server_port = 7000 [web] type = http local_port = 80 custom_domains = xy.xtxxy.com
然后保存,端口号是7000,要确保服务器端口7000开启,在物理服务器上输入启动客户端
./frpc -c ./frpc.ini
访问域名,搭建web环境,也是可以访问的。
设置开机自动开启服务
云服务器ctrl + c 终止服务器
设置这样的代码,配置这个服务
vi /lib/systemd/system/frps.service
[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target
保存,设置开机,和开机自动开启
#启动服务 systemctl start frps #设置开机自启 systemctl enable frps #停止服务 systemctl stop frps #关闭开机自启 systemctl disable frps
reboot重启可以查看进程
ps auxw
客户端配置开机自起
vi /lib/systemd/system/frpc.service
[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple ExecStart=/root/frp/frpc -c /root/frp/frpc.ini [Install] WantedBy=multi-user.target
#启动服务 systemctl start frpc #设置开机自启 systemctl enable frpc #关闭开机自启 systemctl disable frpc #停止服务 systemctl stop frpc #服务状态 systemctl status frpc #刷新服务列表: systemctl daemon-reload
后台运行frp服务命令
Server:nohup ./frps -c frps.ini >/dev/null 2>&1 & Client:nohup ./frpc -c frpc.ini >/dev/null 2>&1 &



