在目标主机禁 ping 的情况下,怎么判断 ip 是否被占用

2020 年 2 月 29 日
 yubai9366

背景: 产品界面提供 ip 修改功能,并且在保存的时候会去测试该 ip 是否被占用(原理:ping 得通表示被占用,ping 不通则表示可以使用)

问题: 如果目标 ip 在 ping 测试的时候没有被 ping 通,但该 ip 实际已经已经被其他主机占用,且该主机开启禁 ping 选项,则会出现误判导致产品的 network 服务起报错不来( CentOS 7 )

尝试: 我有尝试用 nmap 来扫描指定 ip,但是耗时较长且效果不好

不知道各位有什么解决方案没

4531 次点击
所在节点    问与答
15 条回复
lhx2008
2020 年 2 月 29 日
没看懂这个是什么骚操作
BingoXuan
2020 年 2 月 29 日
要不试一下 arp ?
xratzh
2020 年 2 月 29 日
没看懂意思,猜一下答案:
ssh 试试? ip 没被占用和 ip 占用后,ssh 的回传信息不一样
ThirdFlame
2020 年 2 月 29 日
nc 一下这个 ip 某个端口(端口开不开放都无所谓,开放更好,就直接连上了)。如果不开放次端口, 你会发现存活的 和 不存活的错误代码不同。端口开不开放都无所谓。

但是如果主机或者网络设备专门设置的有 drop 规则,那么此方法无效。
singerll
2020 年 2 月 29 日
云平台分资源时用的吗?。。。。个人感觉没啥办法,考虑极端下别人防火墙全开,只出不进的情况。
话说没有元数据库吗?
villivateur
2020 年 2 月 29 日
tcping 试试
binux
2020 年 2 月 29 日
既然 IP 修改功能是你产品提供的,用没有你自己不知道?
zmj1316
2020 年 2 月 29 日
同网段的话,能不能用 arp 扫一下?
gamexg
2020 年 2 月 29 日
看意思是同网段,那么 arp 就行
yubai9366
2020 年 2 月 29 日
@ThirdFlame 这个方法有效,测了十几台机器都可以用,不过还是得加个异常判断回滚机制,虽然我这边主机群应该都是常规配置,但是还是得上个保险
yubai9366
2020 年 2 月 29 日
@singerll 防火墙全开的情况有考虑,所以加了一层回滚机制,至少保证原来的 ip 能还原
billlee
2020 年 2 月 29 日
arping
trepwq
2020 年 2 月 29 日
@ThirdFlame 都禁 ping 了,肯定有防火墙规则了,估计不行
ThirdFlame
2020 年 2 月 29 日
@trepwq 你试试就知道了。 防火墙好多是 deny 规则,而不是 drop 规则。nc 连过去 错误代码是不一样的。
trepwq
2020 年 2 月 29 日
@ThirdFlame 我知道不一样,我一般都是用 drop,哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/648629

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX