美文网首页
网络请求错误排查

网络请求错误排查

作者: 追梦小蜗牛 | 来源:发表于2020-11-19 20:20 被阅读0次
pexels-song-kaiyue-5835215.jpg

介绍:

在某些场景下,会莫名其妙的碰到一些陌生的请求访问我们的服务,对我们造成一定的困扰,我们需要想办法去定位这些请求的原始信息。

解决方案:

  • 利用IpUtil工具类获取源IP地址:
public static String getIpAddr(HttpServletRequest request) {
    String ipAddress = null;
    try {
        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.getRemoteAddr();
            if (ipAddress.equals("127.0.0.1")) {
                // 根据网卡取本机配置的IP
                InetAddress inet = null;
                try {
                    inet = InetAddress.getLocalHost();
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                }
                ipAddress = inet.getHostAddress();
            }
        }
        // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
        if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
            // = 15
            if (ipAddress.indexOf(",") > 0) {
                ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
            }
        }
    } catch (Exception e) {
        ipAddress = "";
    }
    // ipAddress = this.getRequest().getRemoteAddr();

    return ipAddress;
}

先看看这些IP是不是自己公司运维在做一些监控、心跳等操作导致的。

  • 如果是外来攻击或者其他,可以利用tcpdump命令+Wireshark:
    例子:tcpdump -tttt -s0 -X -vv tcp port 8080 -w captcha.cap
-tttt 输出最大程度可读的时间戳
-s0 指定每一个包捕获的长度,单位是byte,使用-s0可以捕获整个包的内容
-X 以hex和ASCII两种形式显示包的内容
-vv 显示更加多的包信息
tcp 指我们只捕获tcp流量
port 8080 指我们只捕获端口8080的流量
-w captcha.cap 指定捕获的流量结果输出到captcha.cap文件,便于分析使用

在这个过程中,所有访问 8080 端口的 TCP 流量都会被捕获。当请求结束之后,我们可以使用 Ctrl+C 中断该命令的执行,这时候在当前目录下就可以看到生成了一个名为 captcha.cap 的文件。

接下来我们从服务器上下载这个captcha.cap文件到自己电脑上,使用 Wireshark 打开。
scp account@ip:/path/to/captcha.cap
过滤条件:http and ip.src == 192.168.0.65
右键 Follow - HTTP Stream

参考:
https://segmentfault.com/a/1190000015648433</u>
https://github.com/mylxsw/growing-up/blob/master/doc/tcpdump%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B.md</u>

相关文章

  • 网络请求错误排查

    介绍: 在某些场景下,会莫名其妙的碰到一些陌生的请求访问我们的服务,对我们造成一定的困扰,我们需要想办法去定位这些...

  • 网络请求错误

    1、Retrofit网络请求Post错误:连接关闭了 原因:connectTimeout时间过短超时关闭了

  • RxJava实际应用--->网络请求出错重连

    1.需求场景 发送网络请求过程中,会出现某些错误,从而导致这次网络请求不成功,当发生错误是的网络请求不成功时,自动...

  • 各种网络错误

    1、网络错误[ 0 ] Network Error 异常的网络错误,首先查看后端请求接口,如果请求列表出现了该接口...

  • unacceptable content-type: text/

    网络请求的错误:AFNetworking在发送请求时出现的错误 这种错误是由于AFNetworking不支持tex...

  • HTTP 请求

    Code=-999 错误400 ------参数错误网络请求出现Code=-1022

  • 为 HTTP API 接口增加统一请求日志

    概述 增加请求日志,便于在开发阶段,追查错误,在将来上线后,进行线上问题的排查。 统一请求日志要完成以下功能: 记...

  • 05RxSwift中的driver老司机

    driver主要解决: 1.网络请求数据被多次使用时,多出订阅会进行多出网络请求。2.得到错误的data时的错误处...

  • 详解TIME_WAIT过多,引起的请求502的问题。

    最近线上出现请求调用502的问题,A服务调用B服务偶然抛502错误,出现的频率也比较低。排查问题发现是请求的TIM...

  • kubelet签署证书到期解决

    现象harbor镜像平台服务器出现内部错误,请求无法完成 排查登陆dashboard发现node节点状态都为not...

网友评论

      本文标题:网络请求错误排查

      本文链接:https://www.haomeiwen.com/subject/wjgliktx.html