最近开发过程中又遇到了需要外网访问内部服务接口的需求,比如调用三方服务的各种回调通知、支付成功回调、大模型回调等都需要外部服务器来访问内部的接口,这里有个问题就是如果我们在本地或者测试环境调试的过程中我们使用的是内网环境,那外网是访问不到我们的接口的,那如何解决这个问题呢?
答案就是使用内网穿透,我们先来看看内网穿透有什么优点和他的使用场景,然后我会通过一个完整的java示例来教同学们怎么使用
1. 内网穿透的场景
内网穿透(也称为NAT穿透、反向代理或端口转发)技术允许位于私有网络(如公司内网、家庭局域网)内的服务(如Web服务器、API接口、数据库等)被外网用户访问。在测试环境中,内网穿透技术尤为关键,因为它解决了以下关键问题:
- 远程访问与测试:
- 在没有内网穿透的情况下,测试人员或外部合作伙伴可能无法直接访问位于内网中的测试环境。内网穿透技术允许他们通过公共互联网访问这些内部资源,从而进行远程测试。
- 无论是功能测试、性能测试还是安全测试,远程访问都使得测试过程更加灵活和高效。
- 模拟真实环境:
- 通过内网穿透,测试人员可以模拟真实的外网访问环境,以验证服务在公开网络中的表现和安全性。
- 这种模拟有助于发现可能因网络配置、防火墙规则或NAT转换等问题导致的潜在问题。
- 团队协作与沟通:
- 当多个团队或部门需要协作时,内网穿透可以确保所有人都能访问到相同的测试环境。
- 这有助于减少因环境不一致导致的误解和错误,提高团队协作效率。
- 灵活性与可配置性:
- 内网穿透解决方案通常提供高度的灵活性和可配置性,允许用户根据需求调整访问权限、端口映射和流量路由。
- 这使得测试人员能够根据需要快速调整测试环境,以适应不同的测试场景和需求。
- 简化部署与管理:
- 在没有内网穿透的情况下,为外部用户提供访问权限可能需要复杂的网络配置和管理工作。
- 内网穿透技术简化了这些过程,使得部署和管理变得更加简单和高效。
- 安全性增强:
- 虽然内网穿透允许外部访问内部资源,但它也可以结合安全措施(如VPN、SSL/TLS加密、访问控制列表等)来增强安全性。
- 通过限制访问权限、加密通信和监控流量,可以确保只有授权用户才能访问内部资源,并降低潜在的安全风险。
- 支持多种协议:
- 内网穿透解决方案通常支持多种协议(如HTTP、HTTPS、TCP、UDP等),使得不同类型的服务都能被外部访问。
- 这为测试人员提供了更大的灵活性,使得他们可以测试各种类型的服务和应用。
综上所述,内网穿透技术为测试环境提供了远程访问、模拟真实环境、团队协作、灵活性、简化部署和管理以及安全性增强等关键优势。这些优势使得测试过程更加高效、准确和安全,从而提高了软件质量和用户满意度。
2. 如何使用内网穿透
2.1 注册登录账号
我们使用natapp这个工具
访问natapp官方网站 https://natapp.cn/
注册你的账号
注册成功之后登录你的账号
2.2 配置隧道
购买隧道–> 选择免费隧道
根据自己的需求配置名称、协议、端口(端口ip后面可以随意修改)就可以了
查看自己的隧道
点击配置进行详情配置
2.3 下载客户端并启动隧道
点击下载,选择适合你的版本(我这里用mac演示,win请往下走)
下载之后解压得到natapp文件
然后对文件赋权,执行 chmod a+x natapp 命令
启动natapp ,执行 ./natapp -authtoken=你的token
authtoken位置
启动成功效果
可以看到已经在线,并且将你的ip映射到了jexm64.natappfree.cc这个域名下
(windows方式)
2.4 启动你的服务并测试
我在服务里写了一个测试接口用来验证,接口地址为: /order/getOrderNoTest 端口为: 9091
然后我们通过上一步得到的域名 jexm64.natappfree.cc 拼接上我们的地址进行访问,完整地址: http://jexm64.natappfree.cc/order/getOrderNoTest
成功获取到数据
观察隧道,记录了这次请求
到这里本篇文章就结束啦,感谢您看到这里~
合作交流:mdx_0422
获取2024大厂面试资料、学习工具、微服务电商项目源码,加入java学习小组的同学可以关注下方公众号~