Configuration Generation
Learn how to generate different types of OPNsense configurations with detailed control over the output.
Generation Types
VLAN Configurations
Generate IEEE 802.1Q compliant VLAN configurations:
# Basic VLAN generation
cargo run --release -- generate vlan --count 25 --output vlans.xml
# With custom parameters
cargo run --release -- generate vlan --count 50 --base-id 100 --output vlans.xml
VLAN Features:
- Valid VLAN IDs (1-4094)
- Realistic network ranges
- Descriptive names and descriptions
- Interface assignments
Interface Configurations
Generate network interface configurations:
# Physical interfaces
cargo run --release -- generate interface --count 10 --type physical --output interfaces.xml
# Virtual interfaces
cargo run --release -- generate interface --count 5 --type virtual --output virtual-interfaces.xml
Firewall Rules
Generate comprehensive firewall rule sets:
# Basic firewall rules
cargo run --release -- generate firewall --rules 50 --output firewall.xml
# Advanced firewall rules
cargo run --release -- generate firewall --rules 100 --complexity advanced --output advanced-firewall.xml
Firewall Rule Types:
- Allow/Deny rules
- Port-based rules
- Protocol-specific rules
- Source/Destination filtering
DHCP Configurations
Generate DHCP server configurations:
# DHCP pools
cargo run --release -- generate dhcp --count 10 --output dhcp.xml
# With custom ranges
cargo run --release -- generate dhcp --count 5 --base-network 192.168.100.0/24 --output dhcp.xml
NAT Rules
Generate Network Address Translation rules:
# NAT rules
cargo run --release -- generate nat --rules 25 --output nat.xml
# Port forwarding rules
cargo run --release -- generate nat --rules 10 --type port-forward --output port-forward.xml
Advanced Generation Options
Combined Configurations
Generate complete OPNsense configurations with multiple components:
# Complete configuration
cargo run --release -- generate --count 20 --format xml --include-firewall-rules --include-dhcp --include-nat --output complete.xml
Custom Network Ranges
Specify custom network ranges for generation:
# Custom base network
cargo run --release -- generate vlan --count 10 --base-network 10.0.0.0/8 --output vlans.xml
# Custom subnet size
cargo run --release -- generate vlan --count 15 --subnet-size 24 --output vlans.xml
Department-Based Generation
Generate configurations based on organizational departments:
# Department-specific VLANs
cargo run --release -- generate vlan --count 8 --departments IT,Engineering,Sales,HR --output dept-vlans.xml
# With department-specific firewall rules
cargo run --release -- generate --count 5 --departments IT,Engineering --include-firewall-rules --output dept-config.xml
Generation Parameters
Count and Scale
Control the number of generated items:
# Small test dataset
cargo run --release -- generate vlan --count 5 --output test.xml
# Medium dataset
cargo run --release -- generate vlan --count 50 --output medium.xml
# Large dataset
cargo run --release -- generate vlan --count 500 --output large.xml
ID Management
Control ID generation for sequential items:
# Custom starting ID
cargo run --release -- generate vlan --count 20 --base-id 100 --output vlans.xml
# Random ID distribution
cargo run --release -- generate vlan --count 25 --random-ids --output vlans.xml
Network Configuration
Customize network parameters:
# Custom network base
cargo run --release -- generate vlan --count 10 --base-network 172.16.0.0/12 --output vlans.xml
# Custom subnet size
cargo run --release -- generate vlan --count 15 --subnet-size 28 --output vlans.xml
Output Customization
Format Options
Choose the appropriate output format:
# XML for OPNsense import
cargo run --release -- generate vlan --count 25 --format xml --output config.xml
# CSV for data processing
cargo run --release -- generate vlan --count 25 --format csv --output data.csv
# JSON for API integration
cargo run --release -- generate vlan --count 25 --format json --output data.json
File Organization
Organize output files systematically:
# Create organized directory structure
mkdir -p output/{vlans,firewalls,dhcp,nat}
# Generate different types
cargo run --release -- generate vlan --count 20 --output output/vlans/vlans.xml
cargo run --release -- generate firewall --rules 30 --output output/firewalls/rules.xml
cargo run --release -- generate dhcp --count 10 --output output/dhcp/dhcp.xml
cargo run --release -- generate nat --rules 15 --output output/nat/nat.xml
Quality Control
Validation During Generation
Enable validation during generation:
# Generate with validation
cargo run --release -- generate vlan --count 25 --validate --output vlans.xml
# Generate with strict validation
cargo run --release -- generate vlan --count 25 --validate --strict --output vlans.xml
Consistency Checks
Ensure generated configurations are consistent:
# Check for conflicts
cargo run --release -- generate vlan --count 50 --check-conflicts --output vlans.xml
# Validate network ranges
cargo run --release -- generate vlan --count 30 --validate-ranges --output vlans.xml
Performance Optimization
Large Dataset Generation
For generating large numbers of configurations:
# Use CSV format for large datasets
cargo run --release -- generate vlan --count 1000 --format csv --output large-dataset.csv
# Stream processing
cargo run --release -- generate vlan --count 5000 --stream --output huge-dataset.csv
Memory Management
Optimize memory usage for large generations:
# Batch processing
cargo run --release -- generate vlan --count 2000 --batch-size 100 --output batched.xml
# Memory-efficient mode
cargo run --release -- generate vlan --count 1000 --memory-efficient --output efficient.xml
Real-World Examples
Lab Environment Setup
# Complete lab configuration
cargo run --release -- generate --count 15 --format xml --include-firewall-rules --include-dhcp --output lab-config.xml
Security Testing
# Complex security testing configuration
cargo run --release -- generate --count 30 --firewall-rule-complexity advanced --include-nat --output security-test.xml
Documentation Examples
# Sample configurations for documentation
cargo run --release -- generate vlan --count 5 --output examples/vlan-examples.xml
cargo run --release -- generate firewall --rules 10 --output examples/firewall-examples.xml
Troubleshooting Generation
Common Issues
VLAN ID conflicts:
# Use custom base ID
cargo run --release -- generate vlan --count 25 --base-id 200 --output vlans.xml
Network range conflicts:
# Use different base network
cargo run --release -- generate vlan --count 20 --base-network 10.0.0.0/8 --output vlans.xml
Memory issues:
# Use CSV format for large datasets
cargo run --release -- generate vlan --count 1000 --format csv --output data.csv
Validation and Testing
Always validate generated configurations:
# Generate test configuration
cargo run --release -- generate vlan --count 5 --output test.xml
# Validate the output
cargo run --release -- validate --input test.xml
# If valid, generate full dataset
cargo run --release -- generate vlan --count 100 --output production.xml
Next Steps
- Explore Output Formats for detailed format specifications
- Check out Examples for real-world scenarios
- Review Performance Optimization for large-scale usage