关于机器访问自己内网IP的问题讨论

来源:互联网 发布:卖韩国女装的淘宝店 编辑:程序博客网 时间:2024/05/21 23:32

对于一台机器来说,他在访问自己的内网地址的时候究竟是怎么样一个原理呢?我们通过几个小实验来探究一下。

 

这个实验里面有3台机器,机器A,地址是172.31.100.107,机器B用于辅助测试,地址是172.31.100.170,还有一台Linux机器C用于做scapy的测试,IP172.31.100.222

 

实验1

在机器A上面psping它自己的内网地址和端口,进行抓包:

查看AIP地址为172.31.100.107


在机器A上面psping自己的3389端口:


A上面抓包发现没有数据包:


B机器psping机器A3389端口,仍然是在A上面抓包发现可以抓到报文:


 

实验2

我们在机器A上添加一条防火墙规则,block掉所有的3389入站:



然后我们依然在A上面psping自己的3389端口,仍然可以连通:


但在B机器上测试psping机器A3389就不通了:


 

实验3

这个实验我们需要借助机器C上面安装的scapy工具,机器CIP


我们目标机器这回是用机器B。我们在机器B上开始进行抓包,过滤条件为"ipv4.Address==172.31.100.170and tcp.Port==3389",在机器C上面也进行抓包(tcpdump -i eth0 -w server.cap),然后再机器C上面用scapy模拟两种不同的报文:


然后我们发送两种报文各4次:


停止抓包,我们查看一下在机器C上面的抓包的情况(这里面HANXU3-D-1这个是172.31.100.170的主机名):


可以看到在C机器上面8个报文都发出了。

但是我们在B上面查看一下抓包情况:


可以看到,在B上面没有收到我们伪造的源地址和目的地址都是172.31.100.170的包。

 

综合以上三个实验,我们不难得出下面两个结论:

  1. 当机器的网卡收到一个报文,报文中源地址和目的地址都是自己的时候,网卡会丢弃这个报文。
  2. 当机器在自己本地进行本机端口测试或者网络连通性测试的时候,不会产生报文(与测试127.0.0.1环回地址原理相同)。