使用 frp 实现内网穿透

说起内网穿透,很多年之前,路由器就开始集成有端口映射,DDNS,端口转发,以及设置 DMZ 主机功能,后来开始有花生壳工具,所以,这个技术差不多从 TCP 和因特网被发明后就开始有了,而 NAT 更是早在 1994 年就被提出来了。

路由器集成的 DDNS 有什么缺陷呢,也显而易见,随着光宽带普及以及 ISP 对敏感端口的封闭,以及 DDNS 服务提供商可能随时跑路的可能性,造成路由器中的 DDNS 服务可能随时无法访问,更别说日趋复杂的网络环境带来的问题,早期使用 PPPoE 的时候,一个路由器可以解决问题,现在家家都是百兆光纤,都是光猫+无线路由器,路由器上设置 DDNS 已经不起作用了,光猫又被 ISP 控制,想实现小企业或家庭用户实现内网穿透更是难上加难。

后来花生壳出现了,最初花生壳也是和路由器厂商合作,所以在很多路由器中的 DDNS 功能中,都能看到一个花生壳的提供者,不过后来花生壳也出了客户端,智能硬件这些。不足的地方就是,流量和使用都会造成费用,而且如果有多个服务需要使用 NAT技术,就会产生多项费用,而且也不能自定义域名。

能实现完全自主掌控的内网穿透方法无非是自己搭建环境,这样一来域名端口流量完全可以自己控制,目前最佳的方案就是使用 Ngork 或者 Frp ,两者都是 Go 语言开发的,基本适用于 x86 x64 ARM MIPS IA64 等架构的 Linux Mac Windows 系统环境,所以很多路由器玩家都喜欢刷梅林固件然后跑一个 Ngork 或 Frp。

个人不喜欢 Ngork 的原因是它是收费商业软件,开源版本已经 N 多年没有维护了,它好用适合于不太在乎成本的用户。而 Frp 是完全由社区驱动开发的,更新比较频繁,功能也很强大,当然了部署和配置相对麻烦一点。

如果你的服务只运行在有公网 IP 的服务器上,那么这篇文章到此为止,你不用再往下看了;相反,如果你的服务运行在局域网内,需要将服务暴露到互联网上供外网上用户访问,那么你该往下继续看,前提是你还需要一个有公网 IP 的服务器,它不需要太高的配置,照我说, 256M 内存的搬瓦工就够了。只要有一个公网 IP,那局域网内任一服务器都可以在外网上访问,甚至不是一个局域网都可以。假设一种场景,我在公司电脑 IP 是 192.168.0.100,它运行了一个 Wordpress,我在家里的电脑 IP 也是 192.168.0.100,但是它运行的是一个 Discuz,它们都要通过一级域名为 dummy.net 的 二级域名访问,比如 space.dummy.net 指向 Wordpress,forum.dummy.net 指向 Discuz,唯一相同的是它们在局域网内部的 IP 是相同的,那么使用 Frp 该如何解决我们的需求。

Frp 的官网:https://github.com/fatedier/frp ,官网教程可以说是非常详细了,这里说说如何实际应用。Frp 其实包含两套工具,frpc 是客户端, frps 是服务端,所以服务端和客户端分别是什么环境,就下载对应的客户端。 这里我的服务端是 CentOS7,客户端是一个 Windows 服务器,所以使用 Linux 的 Frps,使用 Windows 的 Frpc 。

使用 SSH 工具登陆服务器,下载 frps,目前我这里使用的是最新 0.21.0 版本。

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

然后使用 tar 解压这个压缩包。

tar -xzvf https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz

未完待续

你可能感兴趣的:(使用 frp 实现内网穿透)