一个pc192.168.186.118/24 gw 是192.168.186.1,现在环境有个设备的ip是172.16.81.20/24,pc和设备都接在同一傻瓜交换机下,若不用pc直连该访问此设备?

问题如标题:

一个pc192.168.186.118/24 gw 是192.168.186.1,现在环境有个设备的ip是172.16.81.20/24,pc和设备都接在同一傻瓜交换机下,若不用pc直连设备,如何不改变现有网络连接方式访问这个设备?

deepseek后给出三种方法:

1、在pc上添加路由,gw指向本机ip,利用本机ip发出arp查询消息获得设备mac地址,然后二层单播导通后直接访问。

2、若指定设备mac地址,在pc上静态指定设备mac地址,这样实现二层单播导通,实现直接访问。

3、pc上配置设备同网段ip地址,pc上网卡多ip,利用同网段访问arp直接发出获得设备mac地址,进行单播访问。

下面分别验证一下这三种方法是否可行?

1、验证添加路由

原理:添加gw为pc自身ip,就相当于任务该路由条目的网络地址是直连网段,访问可以直接在广播域里发arp查询目的ip的mac地址。

C:\Windows\System32>route add  172.16.100.20/32  192.168.186.118
 操作完成!

C:\Windows\System32>route  print  -4 | findstr  100.20
    172.16.100.20  255.255.255.255            在链路上   192.168.186.118     26

路由添加成功后,wireshark打开抓包,尝试ping一包测试一下网络导通性?

C:\Windows\System32>ping  172.16.100.20  -n 1

正在 Ping 172.16.100.20 具有 32 字节的数据:
请求超时。

172.16.100.20 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),

结果是time out,ping的request发出后超时5秒后没有得到响应!

检查arp  -a是否获取到172.16.100.20的mac地址?

C:\Windows\System32>arp  -a | findstr  100.20
  172.16.100.20         64-a3-41-b2-b3-e1     动态   显然已经获得设备mac

wireshark里抓包里看看

显示过滤(((arp.src.proto_ipv4 == 172.16.100.20) && (arp.dst.proto_ipv4 == 192.168.186.118)) ||  ((arp.src.proto_ipv4 == 192.168.186.118) && (arp.dst.proto_ipv4 == 172.16.100.20))  || icmp) && !(icmp.type == 3)看到如下:

观察wireshark里抓包,可以看到arp携带源ip是192.168.186.118,ping的携带也是这源ip。 

ping的request消息没有响应,超时后,pc打印time out,一般这种情况,对方设备开着防火墙或者没有网段192.168.186.0/24网段回程路由所致,现在没法登录设备,一会登录设备后检查。

2、方法2的验证

C:\Windows\System32>route delete  172.16.100.20
 操作完成!

C:\Windows\System32>route print  -4 |  findstr  100.20

路由清理完成,已知172.16.100.20         64-a3-41-b2-b3-e1     动态

下面进行arp静态绑定

C:\Windows\System32>arp  -d

C:\Windows\System32>arp  -a  | findstr  100.20

C:\Windows\System32>arp  -s  172.16.100.20  64-a3-41-b2-b3-e1

C:\Windows\System32>arp  -a  | findstr  100.20
  172.16.100.20         64-a3-41-b2-b3-e1     静态  静态绑定成功

测试一下ping的导通性?

C:\Windows\System32>ping  -n 1  172.16.100.20

正在 Ping 172.16.100.20 具有 32 字节的数据:
请求超时。

172.16.100.20 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),

同样time out,可以想到,看抓包,就是少了arp的过程,ping的过程一样

看ping的request发出两包,相同的序号seq,这是pc操作系统问题,已知问题。

问题同方法1,暂时搁置,登录上去后检查。

3 方法三的验证过程:

网络连接里网卡添加172.16.100.100/24的ip地址

C:\Windows\System32>route  print  -4 | findstr  172.16.100.
          0.0.0.0          0.0.0.0    192.168.186.1   172.16.100.100    281
     172.16.100.0    255.255.255.0            在链路上    172.16.100.100    281
   172.16.100.100  255.255.255.255            在链路上    172.16.100.100    281
   172.16.100.255  255.255.255.255            在链路上    172.16.100.100    281
    192.168.186.0    255.255.255.0            在链路上    172.16.100.100    281
  192.168.186.118  255.255.255.255            在链路上    172.16.100.100    281

检查发现添加成功

C:\Windows\System32>ping  172.16.100.20  -n 1  && arp  -a | findstr  100.20

正在 Ping 172.16.100.20 具有 32 字节的数据:
来自 172.16.100.20 的回复: 字节=32 时间=2ms TTL=64

172.16.100.20 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 2ms,最长 = 2ms,平均 = 2ms
  172.16.100.20         64-a3-41-b2-b3-e1     动态  发现可以ping通

抓包

ssh登录查看配置

~ # iptables  -nvl
iptables v1.6.2: unknown option "-nvl"
Try `iptables -h' or 'iptables --help' for more information.
~ # iptables  -nvL
Chain INPUT (policy ACCEPT 5296 packets, 432K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x06/0x02 TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT 4975 packets, 414K bytes)
 pkts bytes target     prot opt in     out     source               destination         
~ #   对应对应防火墙拦截配置

~ # ip route
12.100.0.0/24 dev edge0  proto kernel  scope link  src 12.100.0.11 
172.16.100.0/24 dev vlan1.1  proto kernel  scope link  src 172.16.100.20 
~ # 发现根本没有192.168.186.0/24网段的回程路由,只用172.16.81.0/24的直连路由,所以这就是方法1,2ping不通的原因,携带不同网段的icmp包进来,没有回程路由。

验证一下,用ping  -S指定源ip进行访问172.16.100.20,此时arp表里是有设备ip和mac地址对应关系的,ping包可以单播发出。

C:\Windows\System32>arp  -a  | findstr  100.20
  172.16.100.20         64-a3-41-b2-b3-e1     动态

C:\Windows\System32>ping     -S  192.168.186.118  172.16.100.20

正在 Ping 172.16.100.20 从 192.168.186.118 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

172.16.100.20 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

在设备的ssh里tcpdump  -i vlan1.1  -nnev  icmp显示如下:

/etc/config/xos/userspace # tcpdump  -i vlan1.1  -nnev  icmp
tcpdump: listening on vlan1.1, link-type EN10MB (Ethernet), capture size 262144 bytes
13:03:38.181569 cc:96:e5:23:39:3c > 64:a3:41:b2:b3:e1, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 16251, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.186.118 > 172.16.100.20: ICMP echo request, id 1, seq 10017, length 40
13:03:42.728783 cc:96:e5:23:39:3c > 64:a3:41:b2:b3:e1, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 16252, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.186.118 > 172.16.100.20: ICMP echo request, id 1, seq 10018, length 40
13:03:47.726411 cc:96:e5:23:39:3c > 64:a3:41:b2:b3:e1, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 16253, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.186.118 > 172.16.100.20: ICMP echo request, id 1, seq 10019, length 40
13:03:52.734607 cc:96:e5:23:39:3c > 64:a3:41:b2:b3:e1, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 16254, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.186.118 > 172.16.100.20: ICMP echo request, id 1, seq 10020, length 40

wireshark里抓包显示如下:

 

总结:1、对于同一广播域的设备,可用配置同网段ip在广播域里进行访问。

           2、不同子网发出arp请求消息,有的设备会校验源ip是否和接口在同一子网,有的设备不校验,只要arp的request消息携带目的ip是自身地址就响应arp请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值