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

2020-02-29 16:06:19 +08:00
 yubai9366

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX