单位没有公网IP,内网穿透方案与总结(推荐)

很多单位买了ERP软件之后只能在局域网里访问,因为没有公网IP,那么如何解决出差在外也可以访问单位的ERP软件呢,解决方案有3种。

目录

使用内网穿透工具

使用IBCS虚拟专线

使用SDWAN异地组网


方案一:

使用内网穿透工具

内网穿透就是在ERP的服务器主机上安装一个内网穿透客户端,然后将被访问的端口映射到公网上,这样就可以通过公网来访问ERP软件了,使用起来比较方便,非IT人员也可以很快操作。

神卓互联内网穿透私有云可以轻松让外网请求通过各种复杂的路由和防火墙访问到内网的服务。采用自主研发的 WanGooe Tunnel 企业级通信协议,完全由 C 语言实现,覆盖 Windows、Linux、树莓派、openwrt、嵌入式、物联网等主流操作系统,支持百万级并发请求。

 这里推荐安装一下企业级的神卓互联内网穿透,支持99%的主流平台 自研WanGooeTunnel通信连接技术,C语言极致性能。

方案二:

使用IBCS虚拟专线

IBCS虚拟专线是一种IP专线技术,它基于二层网络架构实现给本地服务器主机分配一个独享的固定的IP, 和物理专线一样效果,可用于建设本地数据中心、业务后台。
使用虚拟专线用户省去了每年租用上云所需的昂贵云服务资源(如数据库、带宽、硬盘),完全使用本地的数据中心环境,IBCS虚拟专线给本地服务器提供固定的独享公网IP服务价格较低,而云服务器更适用于提供计算和存储资源的云服务价格较高。

 IBCS虚拟专线 充分利用客户本地现有资源,无需重复付费,即开即用,用户不需要再去额外开通公有云资源(公网IP、带宽、、数据库、硬盘存储空间等),安全可靠、大大节省成本。

 方案三:

使用SDWAN异地组网

神卓互联智能组网可以轻松构建可靠安全的专网,基于SDWAN技术实现多台设备之间跨地域相互连接访问,无需改变原有网络架构,无需租用运营商专线。快速、稳定的连接企业分支、总部、ERP业务系统。支持点对点和转发模式。

在企业的ERP服务器安装神卓互联智能组网客户端,登录控制台给每个员工分配一个访问账号,员工用自己的电脑安装客户端即可访问ERP服务。

 如果使用了内网穿透后,如何获取用户的真实访问IP呢?

在Java中,可以通过获取请求头中的"X-Forwarded-For"字段来获取经过代理服务器传递过来的客户端 IP 地址。该字段常用于反向代理或负载均衡场景中,用于将用户的真实 IP 地址传递给后端服务器。

import javax.servlet.http.HttpServletRequest;

public class IPUtils {
    public static String getClientIP(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");
        
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_CLIENT_IP");
        }
        
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
        }
        
        return ipAddress;
    }
}

可以通过调用getClientIP()方法来获取客户端的真实 IP 地址。该方法会依次尝试从"X-Forwarded-For"、"Proxy-Client-IP"、"WL-Proxy-Client-IP"、"HTTP_CLIENT_IP"、"HTTP_X_FORWARDED_FOR"等请求头字段中获取 IP 地址,如果都没有获取到,最后会使用request.getRemoteAddr()方法获取远程地址。

最近更新

  1. github 下载提速的几种方法

    2024-02-22 05:22:04       0 阅读
  2. 交替打印-GO

    2024-02-22 05:22:04       0 阅读
  3. 秒验 iOS端如何修改授权页背景

    2024-02-22 05:22:04       1 阅读
  4. 探索HTML5的设计原则:引领Web开发的未来方向

    2024-02-22 05:22:04       1 阅读
  5. hive 调优

    2024-02-22 05:22:04       1 阅读
  6. 精通C#编程需要学习哪些常用框架?

    2024-02-22 05:22:04       1 阅读

热门阅读

  1. 大白话解析LevelDB: Block Iterator

    2024-02-22 05:22:04       29 阅读
  2. 谈谈你对Seata的理解

    2024-02-22 05:22:04       33 阅读
  3. linux 测试网络速率

    2024-02-22 05:22:04       30 阅读
  4. mysql:给查询的数据增加序号1,2,3...

    2024-02-22 05:22:04       31 阅读
  5. git学习

    git学习

    2024-02-22 05:22:04      35 阅读
  6. 回溯法去重需要先排序

    2024-02-22 05:22:04       34 阅读
  7. MySQL中varchar 和 char的区别

    2024-02-22 05:22:04       31 阅读
  8. [AIGC] JVM内存结构中的方法区主要存储哪些信息?

    2024-02-22 05:22:04       29 阅读
  9. hbuilder运行不了php文件是什么原因?

    2024-02-22 05:22:04       30 阅读
  10. 设计模式-面试题

    2024-02-22 05:22:04       36 阅读