简介

内网穿透技术是一种允许用户通过互联网访问内网资源的技术,它在很多场景下非常有用,但也存在一些潜在的风险和限制。以下是使用内网穿透的好处与坏处的详细分析:

优劣势

好处

1. 远程访问内网资源

- 方便性:内网穿透允许用户在任何地方通过互联网访问内网中的资源,如文件服务器、数据库、内部应用等,极大地提高了工作效率和便利性。

- 灵活性:无论用户身处何地,只要有网络连接,就可以访问内网资源,非常适合远程办公、远程技术支持等场景。

2. 支持多种应用场景

- 开发与调试:开发者可以使用内网穿透技术将本地开发环境暴露给外部网络,方便进行远程调试和测试。

- 物联网设备管理:内网穿透可以用于管理内网中的物联网设备,如智能家居设备、工业传感器等。

- 私有云服务:用户可以将内网中的私有云服务暴露给外部网络,方便远程访问和管理。

3. 节省成本

- 无需公网IP:内网穿透技术允许用户在没有公网IP的情况下访问内网资源,节省了购买公网IP的费用。

- 减少硬件投资:通过内网穿透,用户可以利用现有的内网设备和资源,而无需额外购买和部署硬件。

4. 提高安全性

- 加密传输:许多内网穿透服务支持加密传输,确保数据在传输过程中的安全性。

- 访问控制:用户可以通过配置访问控制策略,限制只有授权用户才能访问内网资源。

坏处

1. 安全风险

- 数据泄露风险:如果内网穿透服务的配置不当或被恶意利用,可能会导致内网数据泄露。

- 中间人攻击:如果内网穿透服务的加密措施不够完善,可能会被中间人攻击,导致数据被篡改或窃取。

- DDoS攻击:内网穿透服务可能会使内网资源暴露在互联网上,从而增加被DDoS攻击的风险。

2. 性能问题

- 带宽限制:许多内网穿透服务对带宽有限制,可能会导致访问速度较慢。

- 延迟问题:由于数据需要经过中转服务器,可能会导致延迟增加,影响用户体验。

3. 配置复杂性

- 技术要求高:内网穿透服务的配置和使用需要一定的技术知识,对于非技术用户来说可能比较困难。

- 兼容性问题:不同的内网穿透服务可能对客户端和服务器的兼容性要求不同,可能会出现兼容性问题。

4. 依赖第三方服务

- 服务稳定性:如果使用的是第三方内网穿透服务,可能会受到服务提供商的稳定性影响。

- 隐私问题:使用第三方内网穿透服务时,用户需要将数据传输给第三方,可能会涉及隐私问题。

个人总结:先不说安全风险,就是速度已经让人怀疑人生,想要好的速度只能多花钱,作者觉得这条路是最后最后的选择。

付费试用

以下是几款国内常见内网穿透服务的价格、流量和带宽情况对比:

自建内网穿透

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。

frp 项目官网是 https://github.com/fatedier/frp,中文官方文档地址:https://github.com/fatedier/frp/blob/master/README_zh.md。除了安装过程,中文文档对使用过程已经介绍的非常详细,如遇到问题,建议先查看官方文档。

frp工作原理为:

  1. 服务端运行,监听一个主端口,等待客户端的连接;

  2. 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;

  3. 服务端fork新的进程监听客户端指定的端口;

  4. 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;

  5. 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

注:需要有带公网ip的电脑或VPS,系统没限制

部署frp服务端

1. 打开 frp下载页面,下载最新版的 frp_0.33.0_linux_amd64.tar.gz,然后上传到服务器(,也可以ssh连接到服务器后用wget下载:

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

2. 服务器上解压安装包:tar -zxvf frp_0.33.0_linux_amd64.tar.gz

3. 进入解压后的目录:cd frp_0.33.0_linux_amd64,然后用vim/nano等编辑器编辑frps.ini文件(可以下载到本地,编辑好后再上传上去),填入下面的内容:

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 12345678

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

4. 设置和启动frp服务:

./frps -c ./frps.ini &

5. 防火墙放行端口:

# 添加监听端口
firewall-cmd --permanent --add-port=7000/tcp
# 添加管理后台端口
firewall-cmd --permanent --add-port=7500/tcp
firewall-cmd --reload

6. 浏览器打开“http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态:

配置frp客户端

1. 还是打开 frp下载页面,下载最新版的客户端。根据客户端平台不同,请按照下面对应关系下载:

2. 解压缩下载的压缩包,进入文件夹内;

3. 编辑frpc.ini,按照自己的需求设置转发。下面是一个示例:

# 服务端配置
[common]
server_addr = 服务器ip
# 请换成设置的服务器端口
server_port = 7000
token = 12345678

# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 自定义的远程服务器端口,例如2222

# 配置http服务,可用于小程序开发、远程调试等
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test.abc.com
remote_port = 自定义的远程服务器端口,例如8080

后台运行:./frpc -c ./frpc.ini &

注意:

1. 一个服务端可以同时给多个客户端使用

2. [ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;

3. 除了type为http/https,端口只能被一个服务使用

4. 如果用的nat vps,remote_port请改成映射后的端口

4. 登录服务器,防火墙放行监听的端口:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

5. 接下来以windows为例,介绍运行方法:按“win键 + r”(win键是ctrl和alt中间有windows图标的那个按键)-》输入cmd、回车 -》使用cd命令进入解压文件夹,例如 cd Desktop\frp_0.33.0_windows_amd64(切换到其他分区,例如D盘,请使用 cd /d d: 的形式) -》 ./frpc.exe -c frpc.ini

6. 登录frp管理后台,应该可以看到客户端已经连上来了:

最后可以根据系统,添加开机自启

总结

  • 免费版:NATAPP和飞鸽的免费版流量不限,但带宽较低;Sakura FRP和ChmlFrp的免费版带宽较高,但有流量限制。

  • 性价比:DDNSTO和节点小宝的付费版性价比相对较高,适合不同需求的用户。

  • 企业级:花生壳和快解析适合企业级用户,但价格较高,免费版限制较多。

  • frp是一款非常棒的开源、免费的内网穿透工具,对于有vps的网友,建议使用frp部署内网穿透服务,从而远程访问内网的设备和数据。