linux下利用tcpdump抓包工具排查nginx获取客户端真实IP实例
一、nginx后端负载服务器的API在获取客户端IP时始终只能获取nginx的代理服务器IP,排查nginx配置如下
upstream sms-resp {
server 192.168.5.216:;
server 192.168.5.217:;
}
server {
listen ;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://sms-resp;
proxy_set_header host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
}
nginx配置项已经配置了转换真实客户端IP的参数设置,那么需要抓包来看看是否是真正的转换了客户端IP。
二、安装tcpdump抓包工具
在nginx和后端API服务器上分别安装tcpdump
[root@push-- ~]# yum install -y tcpdump
三、使用tcpdump抓包
在172.28.146.109上浏览器调用172.28.5.215的nginx代理的HTTP接口,nginx将请求分发到172.28.5.216上,这里nginx和后端API均配置双网卡(172.28.5.215\182.168.5.215\172.28.5.216\192.168.5.216),他们之间走的192.168网段。
在172.28.5.215的80端口上抓取从172.28.146.109过来的TCP包,同时nginx会将请求转发到192.168.5.216的8501端口上,同时也在172.28.5.216的8501端口上上抓取从192.168.5.215上过来的tcp包
在172.28.5.215上执行
[root@push-- ~]# tcpdump -i em1 tcp port and host 172.28.146.109 -c -n -vvv -w /opt/nginx-215.cap
tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size bytes
Got
-i:监听哪个网卡
tcp:监听哪个协议包(tcp\udp\ssh\)
port:监听端口
and host:监听指定IP地址进入的数据包(入)
dst host :监听发给指定IP地址的数据包(出)
-c:监听多少个数据包
-n:显示IP地址
-vvv:显示详细信息
-w:将监听信息输出到文件
在172.28.5.216上执行
[root@push-- ~]# tcpdump -i em2 port and host 192.168.5.215 -c -n -vvv -w /opt/nginx-216.cap
tcpdump: listening on em2, link-type EN10MB (Ethernet), capture size bytes
Got
然后在172.28.146.109上调用测试接口:http://172.28.5.215/sms-report?xxxxxxx=xxxxxx&xxx=xxxxxxx, 此时,在抓包的两台服务器上均显示有数据包捕获
[root@push-- ~]# tcpdump -i em1 tcp port and host 172.28.146.109 -c -n -vvv -w /opt/nginx-.cap
tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size bytes
Got
[root@push-- ~]# tcpdump -i em2 port and host 192.168.5.215 -c -n -vvv -w /opt/nginx-.cap
tcpdump: listening on em2, link-type EN10MB (Ethernet), capture size bytes
Got
此时按ctrl+c中断监听,sz下载nginx-215.cap和nginx-216.cap文件到本地
四、利用wireshark工具分析数据包日志文件
打开nginx-215.cap

显示调用接口的数据包
再打开nginx-216.cap

这条数据包即为nginx转发到216的请求数据,双击打开详细信息窗口

在data字段里可以看到转发的请求数据,在下面的详细信息中开始部分即为http请求头,可以看到里面有X-real-ip和X-forwarded-for两个字段这是在nginx配置文件里配置的参数,里面存放客户端调用真实IP,显示为172.28.146.109即为真实调用http接口的客户端IP。
linux下利用tcpdump抓包工具排查nginx获取客户端真实IP实例的更多相关文章
- Linux下通过tcpdump抓包工具获取信息
介绍 tcpdump是网络数据包截获分析工具.支持针对网络层.协议.主机.网络或端口的过滤.并提供and.or.not等逻辑语句帮助去除无用的信息. tcpdump - dump traffic on ...
- linux下使用tcpdump抓包分析tcp的三次握手
首先贴上tcp 三次握手的原理图服务器开启ftp服务并执行tcpdump抓包服务器:192.168.3.14 ftp服务客户端:192.168.3.100 服务器执行以下命令,客户端访问服务器ftp: ...
- 利用tcpdump抓包工具监控TCP连接的三次握手和断开连接的四次挥手
TCP传输控制协议是面向连接的可靠的传输层协议,在进行数据传输之前,需要在传输数据的两端(客户端和服务器端)创建一个连接,这个连接由一对插口地址唯一标识,即是在IP报文首部的源IP地址.目的IP地址, ...
- 【转载】linux下的usb抓包方法
1 linux下的usb抓包方法 1.配置内核使能usb monitor: make menuconfig Device Drivers --> ...
- linux下的usb抓包方法
1 linux下的usb抓包方法1.配置内核使能usb monitor: make menuconfig Device Drivers --> ...
- [转] Android利用tcpdump抓包
原文链接:http://mysuperbaby.iteye.com/blog/902201 Android利用tcpdump抓包 博客分类: Android AndroidAccessGoHTML ...
- Android利用tcpdump抓包,用wireshark分析包。
1.前言 主要介绍在android手机上如何利用tcpdump抓包,用wireshark分析包. android tcpdump官网: http://www.androidtcpdump.com/ t ...
- tcpdump抓包工具
tcpdump抓包工具 一:TCPDump介绍 TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and ...
- Mac 下安装Fiddler抓包工具
需求 我们都知道在Mac电脑下面有一个非常好的抓包工具:Charles.但是这个只能抓代理的数据包.但是有时候想要调试本地网卡的数据库 Charles 就没办法了.就想到了在windows下面的一个F ...
随机推荐
- flutter dialog
flutter Dialog import 'dart:math'; import 'package:flutter/material.dart'; import 'test.dart'; impor ...
- Linq之旅:Linq入门详解(Linq to Objects)(转)
http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html 示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细 ...
- Redis 入门 3.2.4 命令拾遗
Redis 入门 3.2 字符串类型 3.2.4 命令拾遗 1. 增加指定的整数 INCRBY key increment INCRBY命令与INCR命令基本一样,只不过前者可以通过increme ...
- Redis 入门 3.2.2 命令
Redis 入门 3.2 字符串类型 3.2.2 命令 1. 获得符合规则的键名列表 SET key value GET key SET和GET是Redis中最简单的两个命令,他们实现的功能和编程 ...
- 快速安装pycharm,最详细的pycharm安装图文教程
大家都知道python的开发工具Pycharm吧,它是由JetBrains打造的一款Python IDE,它功能强大,已经是python开发者使用最多的编辑工具.首先,它支持多平台(Linux.WIn ...
- python学习之网络基础
七 网络编程 7.1 C/S B/S架构 7.1.1 认识 Client : 客户端 Browser :浏览器 Server :服务器端 C/S:客户端与服务器之间的构架 B/S:浏览器与服务器之间的 ...
- P2951 【[USACO09OPEN]捉迷藏Hide and Seek】
典型的最短路,而且只要再加一点点操作,就能得到答案 所以可以直接套模板 具体看程序:: #include<cstdio> #include<queue>//队列专属头文件 #i ...
- Centos7的引导顺序
1.UEFI或BIOS初始化,运行POST开机自检(Power On Self Test) 2.选择启动设备 3.引导装载程序grub2 4.加载装载程序的配置文件:/etc/grub.d/ ...
- 【Qt开发】qt中涉及到空格包含路径的解决办法
qt中涉及到空格路径,qmake是无法正确编译的. 需要在空格路径前面加上$$quote INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Ser ...
- 在SQL Server 中创建外键
建外键的前提是此外键必须是另外一个表的主键. 建外键的步骤: 第一步打开要建外键表的设计器,右击选择“关系”. 然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮, 就会弹 ...