Simple Network Management Protocol

From DD-WRT Wiki

Revision as of 18:37, 12 June 2007 by Jory (Talk | contribs)
Jump to: navigation, search

The Simple Network Management Protocol (SNMP) is a protocol for monitoring of network-attached devices for any conditions that warrant administrative attention.

Contents

Wireless Rate Via SNMP

This particular setup is for creating new SNMP values that monitor the Rate setting of the wireless and the RSSI values of specific clients/WDS. I borrowed some of this code and modified it to work with v23. Someone said this came from the Sveasoft forums. Assumes use of DD-WRT v23.


Tools: Getif (SNMP MIB browser)

1) Turn on SNMP in DD-WRT (Administration->Services)

2) Turn on JFFS and clean it (Administration->Management)

3) Log in via SSH and create the following scripts:


/jffs/snmpd/wlrate:

#!/bin/sh
/usr/sbin/wl rate |/usr/bin/cut -b 9-10


/jffs/snmpd/wlrssi1:

#!/bin/sh
/usr/sbin/wl rssi <mac_address_of_client_or_wds> | /usr/bin/cut -b 10-11


You can repeat wlrssi1 multiple times for each client or WDS you want to monitor. Just increment the number.

Make the scripts executable:

chmod a+rx /jffs/snmpd/wl*

Next, type the following into the command-line:

nvram set snmpd_conf="syslocation <your_location>
syscontact <your_email>
sysname <your_system_name>
rocommunity <your_password>
rwcommunity <your_other_password>
exec Rate /jffs/snmpd/wlrate
exec RSSI-CLIENT1 /jffs/snmpd/wlrssi1
"
nvram commit
reboot


Again, repeat the "RSSI-CLIENT1" line if you have more than 1 client to monitor (incrementing the number, of course).


Test the settings with Getif. You will need to look for .1.3.6.1.4.1.2021.8.1 in the "MBrowser" screen.


Steps:


In "Parameters", type in the IP of the router and the read and write community passwords. Press "Start" and you should see the bottom status say something like "Sysinfo variables OK". Next, go to the "MBrowser" tab and put ".1.3.6.1.4.1.2021.8.1" in the second entry box (it probably says ".1"). Press "Start" and you should see a list of values pop into the lower output screen. You will see your configuration variables, then a list of numbers in the values side. The first 3 numbers will be "0", then your values will show up. First is your "Rate", then each of your RSSI values that you entered above.

Known OID´s via SNMP

This should get important available OIDS for SNMP requst against DD-WRT V23 SP1

OID [dottedt & text format] MEANING RANGE of VALUES CONTENT (example)
1.3.6.1.2.1.1.1.0 router description string "Linux WRT54G 2.4.20 #2 Thu Sep 9"
1.3.6.1.2.1.1.3.0 uptime (in hundredths of a second) timeticks "0:9:58:43.95"
1.3.6.1.2.1.1.6.0 location entry of this node string "Sundhausen"
1.3.6.1.2.1.25.1.1.0 uptime string "212 hours 35 minutes 19 seconds"
1.3.6.1.2.1.25.1.2.0 unknown hex string "0x07 0xb2 0x01 0x09 0x14 0x23 0x0f 0x00 0x2b 0x00 0x00"
1.3.6.1.2.1.25.1.3.0 unknown integer "1536"
1.3.6.1.2.1.25.1.4.0 unknown string "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0, 115200
1.3.6.1.2.1.25.2.3.1.5.101 total available memory kByte/sec "14072"
1.3.6.1.2.1.25.2.3.1.6.101 used memory kByte/sec "12428"
1.3.6.1.2.1.25.4.2.1.1.* running pids pid "505"
1.3.6.1.2.1.25.4.2.1.2.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
names of running processes string "snmpd"
1.3.6.1.2.1.25.4.2.1.3.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
CPU utilization of process % usage "0.0"
1.3.6.1.2.1.25.4.2.1.4.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
processes as listed by unix ps command string "/usr/sbin/snmpd"
1.3.6.1.2.1.25.4.2.1.5.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
configuration of running processes string "-c /var/snmp/snmpd.conf"
1.3.6.1.2.1.25.4.2.1.6.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
some kind of process data integer "4"
1.3.6.1.2.1.25.4.2.1.7.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
some kind of process data integer "1"
1.3.6.1.2.1.25.5.1.1.1.*
* equates to pid in 1.3.6.1.2.1.25.4.2.1.1.*
RSS entry in the unix top command's results integer "1512"
1.3.6.1.4.1.2021.10.1.3.1
iso.org.dod.internet.private.enterprises.2021.10.1.3.1
CPU-load-1 (1-min average) fixed-point number [0.00 .. 1.00] "0.08"
1.3.6.1.4.1.2021.10.1.3.2
iso.org.dod.internet.private.enterprises.2021.10.1.3.2
CPU-load-5 (5-min average) fixed-point number [0.00 .. 1.00] "0.04"
1.3.6.1.4.1.2021.10.1.3.3
iso.org.dod.internet.private.enterprises.2021.10.1.3.3
CPU-load-15 (15-min average) fixed-point number [0.00 .. 1.00] "0.08"
1.3.6.1.4.1.2021.10.1.5.1
iso.org.dod.internet.private.enterprises.2021.10.1.5.1
CPU-load-1 (1-min average) integer [0...100] "8"
1.3.6.1.4.1.2021.10.1.5.2
iso.org.dod.internet.private.enterprises.2021.10.1.5.2
CPU-load-5 (5-min average) integer [0...100] "4"
1.3.6.1.4.1.2021.10.1.5.3
iso.org.dod.internet.private.enterprises.2021.10.1.5.3
CPU-load-15 (15-min average) integer [0...100] "2"
1.3.6.1.2.1.2.1.0 number of network interfaces
iso.org.dod.internet.mgmt.mib-2.interfaces.ifNumber.0
integer "11"
1.3.6.1.2.1.2.2.1.2.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr.*
names of all networkinterfaces string (replace the .* with a numer from 1 to max interfaces) "eth1" "imq0" "lo"
1.3.6.1.2.1.2.2.1.4.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifMtu
size of the largest datagram which can be sent/received on the interface octets (replace the .* with specific interface from 1 to max interfaces) "1500" "1454"
1.3.6.1.2.1.2.2.1.5.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifSpeed.*
interface's current bandwidth bits per second (replace the .* with specific interface from 1 to max interfaces) "10000000"
1.3.6.1.2.1.2.2.1.6.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.*
interface's physical MAC address octet-string (replace the .* with specific interface from 1 to max interfaces) "000625D7D203"
1.3.6.1.2.1.2.2.1.10.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifInOctets.*
total number of octets received on the interface, including framing characters. integer (replace the .* with specific interface from 1 to max interfaces) "3869059965"
1.3.6.1.2.1.2.2.1.16.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOutOctets.*
total number of octets transmitted out of the interface, including framing characters. integer (replace the .* with specific interface from 1 to max interfaces) "3195287514"
1.3.6.1.2.1.2.2.1.20.*
iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifOutErrors.*
number of outbound packets that could not be transmitted because of errors integer (replace the .* with specific interface from 1 to max interfaces) "95332"
1.3.6.1.2.1.6.6.0
iso.org.dod.internet.mgmt.mib-2.tcp.tcpPassiveOpens.0
number of passive TCP connections integer "2234"
1.3.6.1.4.1.2021.100.4.0 current syteme date & time (set in the firmware) time string "Wed Jul 12 01:07:03 2006"

Bandwidth Monitoring via SNMP

You can also use SNMP for bandwith monitoring by using programs like Cacti, MRTG or PRTG Traffic Graphers.

The routers SNMP traffic layout:

                   (___br0___) 
                    / | \ \_ \____ 
                   /  |  \  \__   \_____ 
                  /   |   \    \        \ 
       | [0]    [1]  [2]  [3]  [4] | | [wlan] | 
       |vlan1    ---- vlan0 -----  | |        | 
       | WAN           LAN         | |  WLAN  | 
       |                           | |        | 
       |Internet 1    2    3    4  | |  WLAN  | <-- label 
       +---------------------------+ +--------+ 
             ethernet switch          wireless 
            eth0 (cpu port 5)           eth1

Remote Collection of SNMP data via WAN PORT

from DICONS on the forum go to the administration/diagnostics tab, paste in this command and do a "save firewall", then reboot

 /usr/sbin/iptables -I INPUT 1 -p udp --dport 161 -j logaccept

it would sure be nice to have this automatically be applied if SNMP was on and remote admin was enabled, but I suppose it's easy anough to do thru the command....


- For enhanced security use the following command:

/usr/sbin/iptables -I INPUT 1 -p udp --dport 161 -s 1.2.3.4 -j logaccept
  • Make sure to replace 1.2.3.4 with the IP address of the device that will be performing the SNMP request TO your router across the Internet. This only allows the IP address specified using the -s command to access the SNMP protocol on your router.

See also

External Links