公司内网IP地址资源有限,同时又存在很多分配后的IP长期不使用的情况。为提高IP地址资源的利用效率,需要监控IP的使用情况,统计IP的活动情况,收回长期不上线的IP地址资源,以便重新利用。需要解决的技术难点主要有三个方面:
- 扫描网络存活主机的方法。
- 每日定时扫描网络存活主机的方法。
- 统计IP活动情况的方法。
扫描网络存活主机
扫描网络存活主机可使用以下nmap命令:
1 | nmap -P0 192.168.1.1/24 |
-P0 (无ping) 该选项可解决主机防火墙开启了禁Ping选项而无法被发现的问题,缺点是主机发现的速度将很慢。
1 | nmap -sn -PS135 172.16.1.128 -vvv -n --disable-arp-ping |
注意nmap扫局域网存活主机都会预先进行arp扫描,在这里禁用了端口扫描,意味着nmap只会进行存活扫描,当nmap进行arp扫描后发现主机存活就不会进行后续操作,wireshark也就抓不到包,所以使用–disable-arp-ping禁用arp扫描。
被扫描主机可能开启防火墙,如何绕过防火墙判断主机是否存活,请参考:
定时扫描网络存活主机
目前倾向于使用Python在代码中定时调用nmap命令扫描存活主机。一日之内可扫描三次:上午、下午、晚上各一次。
可参考以下链接:
目前倾向于利用调度模块schedule实现定时任务。
统计IP活动情况
主要统计IP地址的未上线的天数。
设置Python脚本开机自启动
1 | d: #如果需要开机自启动的python程序在c盘,不需要这一行程序;如果需要自启动的python程序在d盘(或其他盘),需要先切换到d盘(或其他盘) |
具体实现
参考链接
- Nmap扫描结果保存到本地并提取ip,by ~Echo.
- nmap命令扫描存活主机,by qingfenghaha.
- Nmap,by wikipedia.
- nmap用法解析,by wikipeida.
- Python中匹配IP的正则表达式,by bro.
- 让 Python 程序定时执行的 8 种姿势~,by 随风.
- Python 定时任务最佳实践,by guoweikuang.
- Windows 设置 Python 脚本开机自启的一些心得,by Hsinyan.
- 设置python程序开机自启动,by ego782140379.
- Nmap抓包分析与绕过Windows防火墙扫内网存活主机,by 合天网安实验室.
- Nmap Ping 扫描(防火墙 Bypass),by 一叶知安.