背景

工作中经常接触配置ip地址,发现网关的设置总是同网段的第一个或者第二个ip地址,于是就有一个疑问,ip地址的网段和网关地址的网段是否可以不在同一网段,百度搜索答案,有说不可以的,有说可以的,还有高傲的认为这么简单的问题就不要发出来问的。如此,便只能自己实践了。

搞个实验环境

说明:一个路由器接了两台笔记本,期望结果:PC5可以ping通PC6

网关和用户共用redis 不同网段共用网关_ip地址

开机后直接ping, 发现ping不通,这是什么情况呢

网关和用户共用redis 不同网段共用网关_ip地址_02

原因分析

  1. 对路由器连接PC6的接口ge0/0/1 进行抓包,发现端口根本没有收到任何包
  2. 对路由器连接PC5的接口ge0/0/0 进行抓包,这个端口先收到ARP包获取MAC地址,然后收到ICMP包做了连通确认,但是ICMP包没有响应(no response found),因为我们对ge0/0/1进行了抓包,发现没有收到任何端口包,说明路由器ge0/0/0端口并没有把包给到ge0/0/1。 (此刻我猜测是因为路由器没有到192.168.20.1/24的路由,所以端口ge0/0/0收到包后根本不知道要给哪个端口发送,配置路由应该能解决)
  3. 网关和用户共用redis 不同网段共用网关_路由表_03

  4. 我想看一下PC6 ping 一下网关192.168.30.1 ,看是否能ping通,于是对ge0/0/1进行抓包,然后再PC6上执行ping 192.168.30.1 命令。发现也是ping不通,抓包情况显示,ARP包能发送到ge0/0/1 口 ,但是收不到回复的包。原因是路由器能接收到PC6的包,但是想给PC6回复信息的时候发现,不知道从哪个端口出(再一次印证我的猜测,路由器没有到192.168.20.1/24的路由)
  5. 网关和用户共用redis 不同网段共用网关_ip地址_04


  6. 网关和用户共用redis 不同网段共用网关_ip地址_05

  7. 查看路由器的路由表,发现有到10网段的路由,30网段的路由,但是没有到20网段的路由,有30/10网段的路由是因为我给路由器ge0/0/0,ge0/0/1 两个端口设置了这两个ip,所以路由表自动添加了到这两个网段的路由
  8. 网关和用户共用redis 不同网段共用网关_抓包_06

  9. 添加一条20网段的路由,通过ge0/0/1端口走,发现此时PC5可以ping通PC6了
  10. 网关和用户共用redis 不同网段共用网关_路由表_07


  11. 网关和用户共用redis 不同网段共用网关_ip地址_08

其他

在PC测的arp 缓存消失之后,就再也ping不通了,无法获得路由器的MAC地址,搞不懂为什么不能动态获取了,手动添加一条arp表项之后(arp -s 网关id 网关mac),可以正常ping通

网关和用户共用redis 不同网段共用网关_网关和用户共用redis_09

金钱和自由相比,不值一提