当前位置 : 主页 > 操作系统 > centos >

快速寻找某IP地址所在的网络交换机端口 - Netdisco

来源:互联网 收集:自由互联 发布时间:2022-06-20
这个占用了大量带宽的IP到底在哪?谁在用?我真想直接封了它! 不管是公司内部网络之间的WAN连接,还是共享NAT/Proxy上网,带宽被占满是最烦人的一件事情。轻则上不去网,重则影响

这个占用了大量带宽的IP到底在哪?谁在用?我真想直接封了它!

不管是公司内部网络之间的WAN连接,还是共享NAT/Proxy上网,带宽被占满是最烦人的一件事情。轻则上不去网,重则影响公司业务,而所有这些最终都会指向公司网管。虽然可以通过cisco上的ip accounting / netflow,Linux上的iftop/bandwidthd或者抓包等找到那个可恶的IP,可这IP到底在哪???谁在用???甚至当你花费半天力气找到始作俑者时,往往面对一张装作无知的脸孔:我什么都没干啊。艹。。。


现在有办法快速找到这个可恶的家伙,而且,需要他乖乖的跑到你这里来问:我怎么上不了网了?你可以骄傲的问:哼哼,你干坏事了吧。。。   我们所需要做的,就是安装Netdisco

 

快速寻找某IP地址所在的网络交换机端口 -  Netdisco_netdisco

如上图,Netdisco可以清晰的显示 IP地址 - MAC地址 - 机器名 - 工作组 - 用户名 之间的对应关系,包括连到公司网络的时间等。   注:Netdisco适应绝大多数网络环境,而且客户端越多越能凸显出Netdisco的便利性

硬件环境:


1台3层网络交换机(只有2层的也可以,步骤相同,但客户机设置上有个不入流的小技巧),我用的是Cisco设备
1台Linux主机,我用的是Fedora 14


Cisco上配置管理IP地址、开启SNMP

conf t interface Vlan1  ip address ip_addr netmask  no shut
conf t
snmp-server community "community名称" RO (或者RW)    

Linux上安装Netdisco

yum install netdisco  

Netdisco的配置

/usr/sbin/netdisco_config - 这是1个自动配置脚本   这行时间比较长,特别是Populating the OUI database for netdisco这步   会有些提问,输入密码等   提示give admin port control? 输入y   提示give admin admin rights?输入y    提示Full user name?输入y   如果上面没有输入,最后访问   http://linux_ip_address/netdisco时会没有administration panel,解决办法是   /usr/share/netdisco/netdisco -u    提示输入核心设备IP地址;    提示输入snmp community字符串(网内全部网络设备设备最好使用相同的snmp community,简单;当然也可直接编辑配置文件添加不同的snmp community),电脑等在NetDisco里算作node   安装完成后运行netdisco -r “核心交换机ip” (注:这步好像配置脚本会自动做,记不清楚了)   对大型网络,可能要1~几个小时才能完成。    最后会报告哪些不成功,一般是由于SNMP community名称不同或者没配置SNMP。对于不同community的,可以运行vi /etc/netdisco.conf,在community一行加入这些community名称,然后运行命令netdisco -d  设备ip 即可。   最后,访问http://ip_addr/netdisco,输入前面自己定义的用户名和密码就可以了。(Netdisco号称可以直接关闭交换机端口,不过还是建议大家登录到交换机上去关闭。)     现在,当你发现某个IP在干坏事的时候,直接上交换机关了这个端口就可以了,千万注意别错关了老板的;-)

常见问题

  1,如果出现这个错误:   Starting netdisco admin daemon:Can't locate netdisco.pm in @INC (@INC contains: /usr/sbin /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5 /usr/share/perl5 /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi /usr/local/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl .) at /usr/sbin/netdisco line 27. BEGIN failed--compilation aborted at /usr/sbin/netdisco line 27.   解决办法:   copy 1份netdisco.pm到/usr/local/lib/perl5或者/usr/local/share/perl5目录   用netdisco_config script 的时候,提示输入netdisco database密码的时候输入"netdisco"或者root的密码;   脚本运行后在手动重启httpd 1次。   2,前面说到如果没有3层交换机只有2层交换机怎么办?其实也能办,就是在客户端设置DNS的时候,把第1个DNS设置为2层交换机的IP地址。这个办法真不太入流,但是也真奏效。   3,Netdisco用的是pgsql数据库,如果对数据库熟悉,可以抓取其中的数据并实现更多的功能,比如,实现802.1x的接入控制等。   -sh-4.1$ psql netdisco
psql (8.4.9)
Type "help" for help.   netdisco=> \d -- 查看表
                   List of relations
Schema |          Name          |   Type   |  Owner
--------+------------------------+----------+----------
public | admin                  | table    | netdisco
public | admin_job_seq          | sequence | netdisco
public | device                 | table    | netdisco
public | device_ip              | table    | netdisco
public | device_module          | table    | netdisco
public | device_port            | table    | netdisco
public | device_port_log        | table    | netdisco
public | device_port_log_id_seq | sequence | netdisco
public | device_port_power      | table    | netdisco
public | device_port_ssid       | table    | netdisco
public | device_port_vlan       | table    | netdisco
public | device_port_wireless   | table    | netdisco
public | device_power           | table    | netdisco
public | device_vlan            | table    | netdisco
public | log                    | table    | netdisco
public | log_id_seq             | sequence | netdisco
public | node                   | table    | netdisco
public | node_ip                | table    | netdisco
public | node_monitor           | table    | netdisco
public | node_nbt               | table    | netdisco
public | node_wireless          | table    | netdisco
public | oui                    | table    | netdisco
public | process                | table    | netdisco
public | sessions               | table    | netdisco
public | subnets                | table    | netdisco
public | user_log               | table    | netdisco
public | user_log_entry_seq     | sequence | netdisco
public | users                  | table    | netdisco
(28 rows)   netdisco=> select * from device_ip;   等等等等。。。              

 

 

网友评论