使用frp实现内网穿透

安装frp服务端:frps

Frp 这个内网穿透项目的官方地址为 https://github.com/fatedier/frp ,不过我们今天搭建服务端时不直接使用这个,而是使用了网友做的一键安装脚本,地址为 https://github.com/clangcn/onekey-install-shell/tree/master/frps 。亲测Centos 7 64位和Centos 8 64可用。

wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

三行分别是下载脚本、改变权限、执行安装,安装过程一般按照默认值(直接回车)就行了,就是有些常用的端口肯定被占用了,所以要改一下。一切顺利的话,在最后会列出所有重要信息,包括客户端绑定的端口(bind_port),服务端的管理(查看客户端在线情况),端口(dashboard_port)以及用户名和密码,还有服务端和客户端的 token 值。

在服务端放行端口

最重要的一点,以上出现的所有端口,都需要在服务器上放行。在Centos 7和Centos 8上放行端口的方式为:

firewall-cmd --add-port=xxx/tcp --zone=public --permanent
firewall-cmd --add-port=xxx/udp --zone=public --permanent

不然的话,客户端启动的时候会在短暂延迟后关闭,没有什么提示。

安装完成后,frps 已经成为一个服务了,系统重启后会自动运行(自己手动搭建的话,这方面要自己处理)。这时我们输入 frps 命令,就可以看到用法了:

+--------------------------------------------------+
|        Manager for Frps, Written by Clang        |
+--------------------------------------------------+
| Intro: http://koolshare.cn/thread-65379-1-1.html |
+--------------------------------------------------+

Usage: /etc/init.d/frps {start|stop|restart|status|config|version}

功能都显而易见,就不多说了,比如,输入 frps config 可进行配置。

在内网Windows上安装frp客户端:frpc

客户端没听说有什么一键脚本,而且也确实不需要,因为比较简单。

我们只需要在 https://github.com/fatedier/frp/releases 下载一个最新版。选择amd64的那个。我们只需要其中的 frpc.exe 和 frpc.ini 这两个文件就行了。

将这两个文件拷贝到某个目录,然后我们再在其中建一个 start-frpc.bat 文件,内容为:

frpc -c ./frpc.ini
pause

意思是,启动 frpc 程序,并使用当前目录的配置文件frpc.ini。

[common]
server_addr = #<server IP>
server_port = #<server port>
token = #<token from server>
 
[mstsc-home]  #<name, must be unique>
type = tcp
local_ip = 127.0.0.1
local_port = 3389  #<remote desktop service: local port>
remote_port = #<server port, not the port of http or https>

[web]
type = http
local_ip = 127.0.0.1
local_port = 8680
custom_domains = xxx.your.domain

这样的话,我们运行 start-frpc.bat 这个批处理文件,就会启动 frpc 程序了,并且配置了两个隧道。效果就是,我们在公司的远程桌面程序中,填入你的服务器 IP(server_addr)+ 对应端口(remote_port),实际会访问到你家里(启动了这个 frpc 客户端)电脑的指定端口(local_port),这样就达到了远程内网机器的目的。其中 remote_port 无需在服务端配置,不过要在服务器防火墙中放行。此外,还配置了一个web服务,可以访问部署在本地8680端口的web服务。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

13 + 1 =

83 − 75 =