frp安装配置之内网穿透最佳方案

补坑来了,上次写过cpolar实现免费的内网穿透,但是最大的问题在于免费版不能用自己的域名,毕竟是第三方提供的服务器,免费的都有限制,刚好自己有一台阿里云的云服务器,所以比较完美的方法是用开源的frp自己搭建一个内网穿透服务器,这样就可以用阿里云的公网ip绑定自己的域名了。
或许有人会问,既然已经有了公网服务器为啥还要内网穿透?毕竟公网服务器都比较贵啊,楼主的阿里云服务器一年将近700块,才2g内存,40g存储,如果把想要跑的服务都跑在上面,很快就熬不住了,不如就拿来做内网穿透服务器,就起个转发功能,自己家里买个树莓派,安装linux系统,就可以跑各种东西了,也不用担心存储的问题。

Frp是一款流行的跨平台开源免费内网穿透反向代理应用,支持 Windows、macOS与 Linux,支持 TCP、UDP 协议,支持http 和 https 协议,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。

服务器端安装配置 Frp

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

export FRP_VERSION=0.32.1
sudo mkdir -p /etc/frp
cd /etc/frp
sudo wget "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz"
sudo tar xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz
sudo mv frp_${FRP_VERSION}_linux_amd64/* /etc/frp

截止写这篇文章为止,github上的最新版本是0.32.1,如果以后出了更新的版本只要改一下上面的版本号就行了,可以去https://github.com/fatedier/frp/查看最新版本信息。

FRP 默认提供了 2 个服务端配置文件,一个是简化版的 frps.ini,另一个是完整版的 frps_full.ini。初学者只需用简版配置即可,在简版 frps.ini 配置文件里,默认设置了监听端口为 7000,可以按需修改它。

需要将服务器的系统防火墙安全组放行,设置 7000 或修改过的对应端口的「允许入站和出站」,否则会一直连接不上的哦!!!这个切记!!

启动 FRP 服务端(非后台启动,未配置开机自启的情况下)

./frps -c ./frps.ini

如服务器使用 Win 系统,假设解压到 c:\frp 文件夹,那么只需这样启动:

c:\frp\frps.exe -c c:\frp\frps.exe

当然,这样的启动一般测试可以,生产环境多数为后台启动,需要配置后台运行和开机自启

使用systemctl配置后台运行和开机自启

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

在frps.service里写入以下内容

[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/etc/frp/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

启动frps

sudo systemctl start frps
#打开自启动
sudo systemctl enable frps

如果要重启应用,sudo systemctl restart frps
如果要停止应用,sudo systemctl stop frps
如果要查看应用的日志,sudo systemctl status frps

如果启动时7000端口被占用

#查看端口号 
netstat -anp|grep 7000

#查看端口号
lsof -i:7000

#查看程序进程 
ps -ef|grep frps

得到进程id(pid)之后,杀掉进程

kill -9 进程号

至此服务端安装完毕并已经启动

配置frp客户端(内网机器上)

可以将 Frp 客户端安装在内网的 Windows 电脑、Linux 设备 比如树莓派 或者 NAS,甚至部分路由器等设备上。Linux 客户端的安装和启动与服务器端没有太多区别,只是对应运行程序是 frpc 而不是 frps。

如果是linux设置,安装和设置重启过程这里就省略了,和上面一样的,如果是windows电脑,Frp 是绿色程序,下载软件包回来解压后,启动 frpc.exe 即可。

在启动前,我们需要先修改配置文件frpc.ini
比如服务器的公网ip是1.2.3.4.5

[common]
server_addr = 1.2.3.4.5
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

[RDPDEEPIN]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7002

[RDPWINDOWS]
type = tcp
local_ip = 192.168.0.109
local_port = 3389
remote_port = 7004

[TOMCAT]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 7003

如上,中括号里面的文字是标识,可以自定义,第一个server-port = 7000是服务器上的server端端口。
这里配置了四个应用,分别是
1.ssh远程登录22端口,映射公网的7001;
2.rdp协议的deepin桌面连接3389端口,映射公网的7002;
3.rdp协议的内网ip为192.168.0.109的windows3389端口,映射公网的7004;
4.tomcat应用,8081端口映射公网的7003

以上还可以配置更多端口,上面的7001到7004都要在服务器安全组放行

启动frp客户端

linux和上面写的服务端启动方法一样
windows假设已将 Frp 的客户端解压缩到 c:\frp 目录中,那么启动 Frp 客户端的命令就是:

c:\frp\frpc.exe -c c:\frp\frpc.ini

Linux 启动 Frp 客户端命令(非后台启动,未配置开机自启的情况下):

./frpc -c ./frpc.ini

启动之后看到 “start proxy success”字样就表示启动成功了。

远程访问

公网ip:7001就可以ssh连接到内网的deepin
公网ip:7002就可以rdp连接到内网的deepin桌面
公网ip:7004就可以rdp连接到内网的windows
公网ip或域名:7003就可以访问到内网的tomcat应用

这样真的就完美舒服了。

参考:https://www.iplaysoft.com/frp.html
https://blog.csdn.net/x7418520/article/details/81077652

你可能感兴趣的:(frp安装配置之内网穿透最佳方案)