linux跨网段ip设置,Linux中跨网段ping问题

0818b9ca8b590ca3270a3433284dd417.png

问题是这样的,如图,pc的ip是192.168.1.2,设备是linux内核2.6.35,有两个网卡,一个是带外管理口192.168.1.1

一个是192.168.2.1。pc与设备的带外口也就是192.168.1.1相连

将pc的gateway设置为192.168.1.1

pc ping 192.168.2.1是通的

因为pc上没有2网段的地址,所以pc会向网管发送2.1mac 的arp请求

1.1收到后会通过路由查找2.1,于是发送arp reply,链路是通的

0818b9ca8b590ca3270a3433284dd417.png

当保持其他配置不变,在pc上添加192.168.2.2

此时ping 2.1时,不通

因为pc上存在2网段的ip,因此会发送源地址为2.2的arp请求

当1.1收到来自于2.2的arp时,由于1.1跟2.2不在一个网段中,1.1会丢弃arp(arp不能跨网段)

而实际情况pc收到了带有2.1 ip和1.1 mac 的arp reply

0818b9ca8b590ca3270a3433284dd417.png

图ip不准确 因此怀疑linux 2.6.35 arp处理有问题,从抓包来看,iCMP没有回应,应该是1.1丢弃了,因此ICMP处理应该没问题

不知linux内核中是不是有其他考虑没有丢弃跨网段的arp

将内核中arp处理了一下,将不在一个网段的arp丢弃

在 net/ipv4/arp.c中

arp_process函数中

if (arp->ar_op == htons(ARPOP_REQUEST) &&

ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {

//add here

if(in_dev->ifa_list)

{

if((sip & in_dev->ifa_list->ifa_mask) != (in_dev->ifa_list->ifa_address & in_dev->ifa_list->ifa_mask))

goto out;

}

//add end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值