首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Ubuntu发送到不同子网的ARP请求

问从Ubuntu发送到不同子网的ARP请求
EN

Server Fault用户
提问于 2015-11-26 04:51:02
回答 1查看 2K关注 0票数 1

这个问题和这个问题很相似:

Linux正在向其他子网中的主机发送ARP请求吗?

主要问题- Ubuntu服务器发送ARP请求,请求在不同子网上的主机的MAC地址。

一个路由器有四个不同的C类网络物理连接。没有VLAN或任何其他分离。

路由器在四个C类子网的每个子网中都有一个IP地址。这就是允许在这四个子网之间进行路由的原因。

Ubuntu服务器具有IP地址x.x.250.2。

当对一个不同的子网(x.x.249.x)执行ping时,有些请求是成功的,而另一些则不成功。如果不是,Wireshark (在Ubuntu服务器上运行的数据包嗅探器)显示它正在发送ARP数据包(“谁有IP x.x.249.x?")

为什么会发生这种事?不应该从服务器发送ARP数据包,这些数据包的目的地不是同一子网上的某个东西。

服务器上的网络配置是x.x.250.2。子网掩码为255.255.255.0。网关是x.x.250.1。静态设置。

路由表没有被修改,这只是默认的:

代码语言:javascript
复制
    Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         x.x.250.1   0.0.0.0         UG    0      0        0 eth0
x.x.250.0   0.0.0.0         255.255.255.0 U     0      0        0 eth0

Linux服务器上的arp缓存显示x.x.249.x和x.x.250.x网络中系统的许多MAC地址。同样,这种情况不应该发生。

现在-一台Windows计算机被用于测试目的。放入与Linux服务器相同的子网中。它可以在x.x.249.x子网中平那些Linux服务器不能的地址。

Ubuntu/Linux的TCP堆栈中肯定存在某种潜在的错误。向其他网络/子网发送ARP数据包不应该发生。

EN

回答 1

Server Fault用户

发布于 2015-11-26 05:56:43

这个问题已经解决了。

很明显,Linux并不像Windows机器那样完全按照TCP堆栈的规则进行操作。

我重新启动了Linux服务器。对有问题的IP地址执行ping操作(x.x.249.76)。

从路由器(x.x.250.1)收到一个ICMP重定向,它说:“嘿,你可以直接和x.x.249.76交谈,你不需要通过我)。一旦收到,ping响应就会超时并退出。

路由器是一个MicroTik路由器,我打赌它也是基于Linux的。

因为这四个子网都在同一个路由器上,所以MikroTik设备认为它不需要转发消息。不对。

解决方案是更新/etc/sysctl.d/10-network-security.conf文件,并添加了以下行:

代码语言:javascript
复制
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

这告诉我的Linux服务器完全忽略任何ICMP重定向。

服务器重新启动。启动pingx.249.76和重定向通知仍被接收,但被忽略,服务器继续成功地平分IP地址。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/739065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档