我需要一些正确的方向,因为在过去的几天里,我尝试了很多不同的事情,但都没有成功。我对于一般使用bash和linux还是很陌生的。
我试图检测网关何时更改(仅在启动时),并更新静态ip配置。部分原因是,在第一次引导时,/etc/dhcpcd.conf中没有静态IP配置。在第一次引导时,我可以简单地ping一个ip地址,如果成功的话,可以根据ip r的输出更新配置。这是没有任何问题的。
第二部分是检测(仅在引导时)网关已经改变(例如,用户已经改变了他们的路由器IP或改变了使用不同配置的ISP )。相同的概念-平一个外部地址,但在这种情况下,ping失败,因为网关信息(和静态ip)是不正确的。
例如。
静态IP配置为192.168.1.110
配置为192.168.1.254的路由器
用户改变他们的网络,他们的路由器现在是192.168.0.1。
Raspberry PI启动并具有静态配置.1.110和网关.1.254。
失败时,脚本尝试添加一个新的网关和IP地址(从文件中用于网关的通用IP地址列表)和ping外部地址。如果成功,则更新/etc/dhcpcd.conf中的静态配置并重新启动。如果不成功,请尝试列表中的下一个IP地址,直到找到有效的网关为止。
就我的计算结果而言,我需要添加一个新的路由和新的默认网关以及ping。添加这些工作,但是ping仍然失败(即使它通过正确的IP地址)。添加新路由、网关和IP地址后,将输出以下几个命令。
ip r
default via 192.168.0.1 dev eth0
192.168.0.1 dev eth0 scope link
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.110 metric 202
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
ping -q -w 10 -c 1 -I 192.168.0.1 -r 1.1.1.1
Tue 25 Sep 14:07:00 UTC 2018 Testing new gateway...192.168.0.1
PING 1.1.1.1 (1.1.1.1) from 192.168.0.110 : 56(84) bytes of data.
--- 1.1.1.1 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9330ms任何帮助或指向正确方向的人都会感激。
发布于 2018-09-25 16:36:07
首先,我想你可能想解决一个不存在的问题.
你说..。
用户改变他们的网络,他们的路由器现在是192.168.0.1
这不是经常发生的事情,绝大多数人(根据“汤姆指南”的调查>80%的人甚至不更改密码!)
但是,您想要做的事情在dhcp中会得到更好的服务,至少这样您只需要在dhcp服务器上重新配置一次东西,并且所有设备都将学习新的网络布局。
然而,如果你坚决反对dhcp,解决方案虽然不简单,但你可以用逻辑摆脱它.
许多年前,我负责在网络连接存储设备上配置网络。我最初尝试使用DHCP,如果由于没有服务器响应而失败,它将自己配置为IP地址0.0.0.0,并使用tcpdump获取几秒钟(5 IIRC)的网络流量。然后进行一些统计分析来计算本地地址空间(如果您查看ip报头中的src和dst,本地空间中的地址将更常见),然后通过使用ping,在该空间中发现一个未使用的IP地址。路由器的IP地址也是通过使用arp请求统计得到的。它在贩运良好的网络上非常有效,但在流量低的网络上效果不佳。由于网络交换机变得越来越普遍,低集线器在路边掉落,它就停止工作,因为交换机过滤掉了不指定给您的MAC地址的通信量。
哦,一个有趣的项目的记忆。
https://unix.stackexchange.com/questions/471355
复制相似问题