客户反馈在内网通过公网IP不能访问其中一个虚拟服务,但是在外网或通过服务器的内网IP访问都正常。
设备网关部署于互联网出口,下联办公区和服务器区。
问题分析:
1、首先检查了虚拟服务的配置,并通过外网进行访问测试,外网访问正常;
2、客户在内网通过tracert后发现在办公区内网防火墙上有回显,该防火墙透明部署,客户在该防火墙上也做了any到any的策略放通,没有做拦截动作;
3、暂时排除防火墙问题,再次回来排除AD,检查AD是否存在nat配置,并未发现此类配置;
4、无奈之下发现可以使用webConsole的tcpdump命令进行抓包排查,发现内网的数据并未达到AD的lan口;
5、最后发现在办公区的防火墙上存nat配置导致用户请求提前被转换;
tcpdump命令详解:
linux下的一款开源工具软件,AD的webconsole上可以支持该命令,通过这个命令可以帮助我们做一些复杂的排错,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
tcpdump是通过一些表达式来进行筛选报文,符合条件的报文将会被抓取下来并显示在界面上。
下面介绍一些我们可以用到的一些表达式
抓取来自eth2接口含有192.168.1.1的地址的icmp包,可以用来确定报文是否经过设备并且是否从接口送出:
tcpdump -i eth2 host 192.168.1.1 and icmp
抓取指定端口的报文,通过下面的命令可以抓取来自eth2口含有192.168.1.1且是80端口的包:
tcpdump -i eth2 host 192.168.1.1 and tcp port 80
抓取一定数量的包,在上面的表达式中加入-c 10即可抓取10个符合条件的包:
tcpdump -i eth2 host 192.168.1.1 and tcp port 80 -c 10
host前加入src表示抓取10个192.168.1.1发送的80端口的包:
tcpdump -i eth2 src host 192.168.1.1 and tcp port 80 -c 10
host前加入dst表示抓取10个192.168.1.1接收的80端口的包:
tcpdump -i eth2 src host 192.168.1.1 and tcp port 80 -c 10
抓取10个来自eth2上含有192.168.1.1和udp53端口的包:
tcpdump -i eth2 host 192.168.1.1 and udp port 53 -c 10
跟多详细的命令大家可以去百度下,网上还有跟多丰富的命令帮助。