Your Journey Through SNMP Networks Made Simple
OIDyssey is a comprehensive n8n community node package providing two powerful nodes for SNMP (Simple Network Management Protocol) operations. Embark on your journey to monitor and interact with network devices, servers, and infrastructure components using SNMP v1, v2c, and v3 protocols.
OIDyssey provides two specialized nodes for complete SNMP functionality:
- SNMP Node - For active network queries and operations
- SNMP Trap Trigger Node - For passive trap reception (webhook-like behavior)
- π Full SNMP Protocol Support: v1, v2c, and v3 with authentication and privacy
- β‘ Multiple Operations: GET, WALK, BULK-GET operations for all your network discovery needs
- π‘ Real-time Trap Reception: Continuous listening for SNMP traps with advanced filtering
- π Security First: Built-in input validation, CIDR-based IP filtering, SSRF protection, and credential hygiene
- π Performance Optimized: Caching, connection pooling, and intelligent rate limiting
- πͺ Production Ready: Comprehensive error handling, retry logic, and timeout management
- π TypeScript: Fully typed with comprehensive type definitions for better development experience
- π¨ Modern UI: SVG icons for crisp display at any resolution
OIDyssey is currently in a beta state. While the core functionality is implemented and the project is stable, it has not yet undergone the full testing regimen outlined in our PRODUCTION_TESTING_GUIDE.md. We are actively working on increasing test coverage and ensuring the project is robust enough for production use.
We welcome feedback and contributions to help us reach a stable v1.0 release!
Install OIDyssey as a custom node in your n8n instance:
# Navigate to your n8n custom nodes directory
cd ~/.n8n/custom
# Clone the repository
git clone https://github.com/magnetarz/oidyssey.git
# Navigate to the OIDyssey directory
cd oidyssey
# Install dependencies
npm install
# Build the node
npm run buildRestart n8n to load the OIDyssey node!
- n8n version 0.220.0 or higher
- Node.js 18.10.0 or higher
- Network access to SNMP-enabled devices
Create SNMP credentials in n8n:
- Navigate to Settings β Credentials
- Create new SNMP Community credentials
- Configure based on your SNMP version:
Community String: public (or your custom community)
Version: v2c (recommended) or v1
Port: 161 (default SNMP port)
Version: v3
Username: Your SNMP v3 username
Auth Protocol: sha, md5, sha256, sha384, or sha512
Auth Key: Your authentication key
Privacy Protocol: aes, des, or aes256
Privacy Key: Your privacy/encryption key
OIDyssey provides two powerful nodes for complete SNMP network management:
Perfect for scheduled monitoring, on-demand queries, and bulk data collection:
- GET Operation: Retrieve single OID values
- WALK Operation: Explore entire OID trees from a starting point
- BULK-GET: Efficiently collect multiple OIDs in one request
- Multi-Device Support: Query multiple devices in a single workflow
- Template Support: Use pre-defined OID templates for common metrics
Works like a webhook but for SNMP traps - perfect for real-time alerts and events:
- Continuous Listening: Automatically triggers workflows when SNMP traps are received
- Real-time Processing: Immediate response to network events and alerts
- Advanced Filtering:
- CIDR-based IP filtering (e.g.,
192.168.1.0/24,10.0.0.0/8) - Community string filtering
- OID pattern matching
- CIDR-based IP filtering (e.g.,
- Webhook-like Behavior: Start workflows based on network events
- Configurable Port: Default 162 or custom port for non-privileged operation
{
"host": "192.168.1.1",
"oid": "1.3.6.1.2.1.1.1.0",
"credentials": "my_snmp_creds"
}{
"host": "switch.mydomain.com",
"rootOid": "1.3.6.1.2.1.2.2.1.2",
"maxVarbinds": 50
}{
"host": "server.example.com",
"oids": [
"1.3.6.1.2.1.1.1.0",
"1.3.6.1.2.1.1.3.0",
"1.3.6.1.2.1.1.5.0"
]
}{
"port": 162,
"bindAddress": "0.0.0.0",
"options": {
"allowedSources": "192.168.1.0/24,10.0.0.0/8",
"filterCommunity": "public",
"includeRawPdu": true,
"validateSource": true
}
}{
"port": 1162,
"bindAddress": "0.0.0.0",
"options": {
"allowedSources": "192.168.1.100,192.168.1.101,172.16.0.0/12",
"filterOid": "1.3.6.1.4.1.2021",
"filterCommunity": "monitoring",
"includeRawPdu": false
}
}{
"port": 162,
"bindAddress": "0.0.0.0",
"options": {
"allowedSources": "10.0.1.0/24,10.0.2.0/24,192.168.0.0/16",
"filterOid": "1.3.6.1.6.3.1.1.4",
"validateSource": true
}
}| π Treasure | OID Coordinates |
|---|---|
| System Description | 1.3.6.1.2.1.1.1.0 |
| System Uptime | 1.3.6.1.2.1.1.3.0 |
| System Name | 1.3.6.1.2.1.1.5.0 |
| System Location | 1.3.6.1.2.1.1.6.0 |
| Interface Table | 1.3.6.1.2.1.2.2.1 |
| CPU Usage (Linux) | 1.3.6.1.4.1.2021.11.11.0 |
| Memory Usage (Linux) | 1.3.6.1.4.1.2021.4.6.0 |
| Disk Usage (Linux) | 1.3.6.1.4.1.2021.9.1.9.1 |
- π Input Validation: Comprehensive validation of hosts, OIDs, and parameters
- π« SSRF Protection: Prevents requests to internal/private networks
- π Credential Security: Secure handling and storage of SNMP credentials
- β±οΈ Rate Limiting: Prevents overwhelming target devices
- β° Timeout Management: Configurable timeouts with intelligent retry logic
# Clone your OIDyssey
git clone https://github.com/magnetarz/oidyssey.git
cd oidyssey
# Prepare your expedition tools
npm install
# Build your compass
npm run build
# Test your equipment
npm test
# Start exploring in development mode
npm run devFor testing SNMP operations, you can run a test SNMP agent:
# Start a test SNMP target
docker run -d --name snmp-practice -p 161:161/udp polinux/snmpd
# The node can then connect to localhost:161 for testingoidyssey/
βββ src/
β βββ nodes/
β β βββ Snmp/ # SNMP operations node
β β βββ SnmpTrapTrigger/ # SNMP trap trigger node
β βββ credentials/ # SNMP credential definitions
β βββ types/ # TypeScript type definitions
β βββ utils/
β β βββ security/ # Input validation & rate limiting
β β βββ snmp/ # SNMP helpers & caching
β βββ snmp.svg # Shared icon for both nodes
βββ dist/ # Compiled JavaScript output
βββ scripts/
β βββ copy-assets.js # Asset management for build
βββ test/ # Test suite (in development)
βββ docs/ # Documentation
# Build the TypeScript files
npm run build
# Watch mode for development
npm run dev
# Code quality check
npm run lint
# Format code
npm run formatNote: A comprehensive automated test suite (unit + integration) is available. See docs/IMPLEMENTATION_STATUS.md for current status and coverage.
Retrieves a specific OID treasure from your target.
Navigation Parameters:
host(string): Target device coordinates (IP/hostname)oid(string): Treasure location (e.g., "1.3.6.1.2.1.1.1.0")credentials(object): Your access credentials
Treasure Report:
{
"host": "192.168.1.1",
"operation": "get",
"timestamp": 1699123456789,
"varbinds": [{
"oid": "1.3.6.1.2.1.1.1.0",
"type": "OctetString",
"value": "Linux server 5.4.0"
}]
}Explores an entire OID territory from your starting point.
Navigation Parameters:
host(string): Target device coordinatesrootOid(string): Starting exploration pointmaxVarbinds(number): Maximum treasures to collectcredentials(object): Your access credentials
- Verify network path to target device
- Check if SNMP service is active on target
- Confirm correct port (default: 161)
- Validate community string or v3 credentials
- Verify community string for v1/v2c expeditions
- Check username/password for v3 journeys
- Ensure authentication protocol matches device configuration
- Device may not support SNMP protocol
- SNMP service may be disabled or inactive
- Firewall blocking SNMP traffic (UDP 161)
- Incorrect community string or credentials
- Verify devices are configured to send traps to n8n host
- Check firewall allows UDP port 162 (or custom port)
- Ensure trap source IPs match allowed sources (CIDR notation supported)
- Verify community string matches device configuration
- Port 162 requires root/admin privileges
- Use a port > 1024 for non-privileged operation
- Example: Use port 1162 instead of 162
- CIDR notation must be valid (e.g.,
192.168.1.0/24) - OID filters use prefix matching
- Community string filters are case-sensitive
- Multiple filters are AND conditions (all must match)
Enable detailed expedition logging:
export N8N_LOG_LEVEL=debug
n8n startWe welcome fellow network explorers! Please see our Contributing Guidelines for details on joining our expedition.
- Fork the OIDyssey repository
- Create your expedition branch (
git checkout -b expedition/amazing-discovery) - Document your findings (
git commit -m 'Discovered amazing network treasure') - Share your route (
git push origin expedition/amazing-discovery) - Request to join the main expedition (Open a Pull Request)
This project is licensed under the MIT License - see the LICENSE file for details.
- net-snmp - The foundation of our expedition tools
- n8n - The platform that makes our journeys possible
- SNMP Community - The cartographers who mapped these protocols
- π Report Issues: GitHub Issues
- π¬ Community Discussions: GitHub Discussions
- π§ Direct Contact: Send a message to our expedition leaders
πΊοΈ Begin Your OIDyssey Today - Every Network Has Stories to Tell! π
Made with β€οΈ for network explorers and the n8n community
- Implementation status and coverage: docs/IMPLEMENTATION_STATUS.md
- Comprehensive test plan: docs/COMPREHENSIVE_TEST_PLAN.md
- Trap trigger testing: docs/TRAP_TRIGGER_TESTING.md
- Trap trigger summary: docs/TRAP_TRIGGER_SUMMARY.md
- SNMP simulation guide: docs/SNMP_SIMULATION_GUIDE.md
- Production testing guide: docs/PRODUCTION_TESTING_GUIDE.md