2026-01-05 16:35:11 +00:00
|
|
|
# Netifyd 5.2.1 SecuBox Integration Guide
|
|
|
|
|
|
|
|
|
|
## Quick Integration Steps
|
|
|
|
|
|
|
|
|
|
### 1. Build Both Packages
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# From SecuBox OpenWrt root
|
|
|
|
|
cd /path/to/secubox-openwrt
|
|
|
|
|
|
|
|
|
|
# Build netifyd
|
2026-01-06 08:54:41 +00:00
|
|
|
make package/secubox/secubox-app-netifyd/compile V=s
|
2026-01-05 16:35:11 +00:00
|
|
|
|
|
|
|
|
# Build LuCI app
|
|
|
|
|
make package/secubox/luci-app-secubox-netifyd/compile V=s
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. Install on Device
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Copy packages to device
|
|
|
|
|
scp bin/packages/*/secubox/netifyd_5.2.1-*.ipk root@192.168.1.1:/tmp/
|
|
|
|
|
scp bin/packages/*/secubox/luci-app-secubox-netifyd_*.ipk root@192.168.1.1:/tmp/
|
|
|
|
|
|
|
|
|
|
# On device
|
|
|
|
|
opkg update
|
|
|
|
|
opkg install /tmp/netifyd_5.2.1-*.ipk
|
|
|
|
|
opkg install /tmp/luci-app-secubox-netifyd_*.ipk
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. Configure and Start
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# On device
|
|
|
|
|
# Start netifyd
|
|
|
|
|
/etc/init.d/netifyd start
|
|
|
|
|
/etc/init.d/netifyd enable
|
|
|
|
|
|
|
|
|
|
# Reload LuCI RPCD
|
|
|
|
|
/etc/init.d/rpcd reload
|
|
|
|
|
|
|
|
|
|
# Clear browser cache and access web interface
|
|
|
|
|
# Navigate to: Services > Netifyd Dashboard
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Integration Points
|
|
|
|
|
|
|
|
|
|
### 1. LuCI App Integration
|
|
|
|
|
|
|
|
|
|
The `luci-app-secubox-netifyd` package integrates with netifyd through:
|
|
|
|
|
|
|
|
|
|
- **RPCD Backend:** `/usr/libexec/rpcd/luci.secubox-netifyd`
|
|
|
|
|
- Reads from `/var/run/netifyd/status.json`
|
|
|
|
|
- Provides API for dashboard data
|
|
|
|
|
|
|
|
|
|
- **Web Interface:** `/usr/share/luci/menu.d/`
|
|
|
|
|
- Dashboard, flows, devices, applications views
|
|
|
|
|
- Real-time statistics
|
|
|
|
|
- Service control
|
|
|
|
|
|
|
|
|
|
### 2. Data Flow
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
netifyd service
|
|
|
|
|
↓
|
|
|
|
|
/var/run/netifyd/status.json (status data)
|
|
|
|
|
/var/run/netifyd/netifyd.sock (Unix socket)
|
|
|
|
|
↓
|
|
|
|
|
RPCD Backend (luci.secubox-netifyd)
|
|
|
|
|
↓
|
|
|
|
|
LuCI Web Interface
|
|
|
|
|
↓
|
|
|
|
|
User Browser
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. Configuration Files
|
|
|
|
|
|
|
|
|
|
**Netifyd:**
|
|
|
|
|
- `/etc/config/netifyd` - UCI configuration
|
|
|
|
|
- `/etc/netifyd.conf` - Netifyd native config
|
|
|
|
|
- `/etc/netify.d/` - Persistent data directory
|
|
|
|
|
|
|
|
|
|
**LuCI App:**
|
|
|
|
|
- `/etc/config/secubox-netifyd` - Dashboard settings
|
|
|
|
|
- Socket configuration (TCP/Unix)
|
|
|
|
|
- Analytics settings
|
|
|
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
|
|
### Required by netifyd
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
+libcurl +libmnl +libnetfilter-conntrack +libpcap
|
|
|
|
|
+zlib +libpthread +libstdcpp +libjson-c +ca-bundle
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Required by luci-app-secubox-netifyd
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
+luci-base +rpcd +netifyd +jq +secubox-core
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Testing Integration
|
|
|
|
|
|
|
|
|
|
### 1. Verify Netifyd is Running
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Check service status
|
|
|
|
|
/etc/init.d/netifyd status
|
|
|
|
|
|
|
|
|
|
# Check netifyd process
|
|
|
|
|
ps | grep netifyd
|
|
|
|
|
|
|
|
|
|
# View netifyd status
|
|
|
|
|
netifyd -s
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. Verify Data Files
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Check status file
|
|
|
|
|
cat /var/run/netifyd/status.json | jq .
|
|
|
|
|
|
|
|
|
|
# Check socket
|
|
|
|
|
ls -la /var/run/netifyd/netifyd.sock
|
|
|
|
|
|
|
|
|
|
# Check PID file
|
|
|
|
|
cat /var/run/netifyd/netifyd.pid
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. Test RPCD Backend
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Test RPC calls
|
|
|
|
|
ubus list | grep netifyd
|
|
|
|
|
|
|
|
|
|
# Get service status
|
|
|
|
|
ubus call luci.secubox-netifyd get_service_status
|
|
|
|
|
|
|
|
|
|
# Get dashboard data
|
|
|
|
|
ubus call luci.secubox-netifyd get_dashboard
|
|
|
|
|
|
|
|
|
|
# Get detected devices
|
|
|
|
|
ubus call luci.secubox-netifyd get_detected_devices
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 4. Test Web Interface
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Access LuCI
|
|
|
|
|
http://192.168.1.1/cgi-bin/luci/admin/secubox/netifyd/dashboard
|
|
|
|
|
|
|
|
|
|
# Check for JavaScript errors in browser console
|
|
|
|
|
# Verify data is loading
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Troubleshooting Integration
|
|
|
|
|
|
|
|
|
|
### Issue: LuCI Dashboard Shows No Data
|
|
|
|
|
|
|
|
|
|
**Cause:** Netifyd not running or no status file
|
|
|
|
|
|
|
|
|
|
**Solution:**
|
|
|
|
|
```bash
|
|
|
|
|
# Start netifyd
|
|
|
|
|
/etc/init.d/netifyd start
|
|
|
|
|
|
|
|
|
|
# Wait a few seconds
|
|
|
|
|
sleep 5
|
|
|
|
|
|
|
|
|
|
# Check status file
|
|
|
|
|
cat /var/run/netifyd/status.json
|
|
|
|
|
|
|
|
|
|
# Reload page
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Issue: RPCD Calls Fail
|
|
|
|
|
|
|
|
|
|
**Cause:** ACL permissions not set
|
|
|
|
|
|
|
|
|
|
**Solution:**
|
|
|
|
|
```bash
|
|
|
|
|
# Reload RPCD
|
|
|
|
|
/etc/init.d/rpcd reload
|
|
|
|
|
|
|
|
|
|
# Check ACL file
|
|
|
|
|
cat /usr/share/rpcd/acl.d/luci-app-secubox-netifyd.json
|
|
|
|
|
|
|
|
|
|
# Clear browser cache
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Issue: Service Won't Start
|
|
|
|
|
|
|
|
|
|
**Cause:** Interface configuration issues
|
|
|
|
|
|
|
|
|
|
**Solution:**
|
|
|
|
|
```bash
|
|
|
|
|
# Enable auto-detection
|
|
|
|
|
uci set netifyd.default.autoconfig='1'
|
|
|
|
|
uci commit netifyd
|
|
|
|
|
|
|
|
|
|
# Or configure manually
|
|
|
|
|
uci add_list netifyd.default.internal_if='br-lan'
|
|
|
|
|
uci add_list netifyd.default.external_if='br-wan'
|
|
|
|
|
uci commit netifyd
|
|
|
|
|
|
|
|
|
|
# Restart
|
|
|
|
|
/etc/init.d/netifyd restart
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Advanced Integration
|
|
|
|
|
|
|
|
|
|
### Custom Data Export
|
|
|
|
|
|
|
|
|
|
To export flow data for custom processing:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Enable local JSON export in netifyd
|
|
|
|
|
uci add_list netifyd.default.options='-j /tmp/netifyd-flows.json'
|
|
|
|
|
uci commit netifyd
|
|
|
|
|
/etc/init.d/netifyd restart
|
|
|
|
|
|
|
|
|
|
# Configure LuCI app to read from file
|
|
|
|
|
uci set secubox-netifyd.settings.flow_export='/tmp/netifyd-flows.json'
|
|
|
|
|
uci commit secubox-netifyd
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Cloud Integration
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Enable cloud sink
|
|
|
|
|
netifyd --enable-sink
|
|
|
|
|
|
|
|
|
|
# Check sink status
|
|
|
|
|
netifyd -s | grep sink
|
|
|
|
|
|
|
|
|
|
# Agent UUID (for cloud dashboard)
|
|
|
|
|
netifyd -p
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### API Integration
|
|
|
|
|
|
|
|
|
|
Example: Read data from RPCD backend in custom script:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
#!/bin/sh
|
|
|
|
|
# Get dashboard data
|
|
|
|
|
DATA=$(ubus call luci.secubox-netifyd get_dashboard)
|
|
|
|
|
|
|
|
|
|
# Parse with jq
|
|
|
|
|
FLOWS=$(echo "$DATA" | jq -r '.stats.active_flows')
|
|
|
|
|
DEVICES=$(echo "$DATA" | jq -r '.stats.unique_devices')
|
|
|
|
|
|
|
|
|
|
echo "Active Flows: $FLOWS"
|
|
|
|
|
echo "Devices: $DEVICES"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Upgrade Path
|
|
|
|
|
|
|
|
|
|
### Upgrading Netifyd
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Build new version
|
2026-01-06 08:54:41 +00:00
|
|
|
make package/secubox/secubox-app-netifyd/clean
|
|
|
|
|
make package/secubox/secubox-app-netifyd/compile V=s
|
2026-01-05 16:35:11 +00:00
|
|
|
|
|
|
|
|
# Install on device
|
|
|
|
|
opkg remove netifyd
|
|
|
|
|
opkg install /tmp/netifyd_*.ipk
|
|
|
|
|
|
|
|
|
|
# Configuration is preserved
|
|
|
|
|
/etc/init.d/netifyd start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Upgrading LuCI App
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Build new version
|
|
|
|
|
make package/secubox/luci-app-secubox-netifyd/clean
|
|
|
|
|
make package/secubox/luci-app-secubox-netifyd/compile V=s
|
|
|
|
|
|
|
|
|
|
# Install on device
|
|
|
|
|
opkg upgrade /tmp/luci-app-secubox-netifyd_*.ipk
|
|
|
|
|
|
|
|
|
|
# Reload services
|
|
|
|
|
/etc/init.d/rpcd reload
|
|
|
|
|
/etc/init.d/uhttpd reload
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Performance Considerations
|
|
|
|
|
|
|
|
|
|
### Resource Usage
|
|
|
|
|
|
|
|
|
|
Typical resource usage on embedded device:
|
|
|
|
|
|
|
|
|
|
- **CPU:** 0.5-2% (idle), 5-10% (active traffic)
|
|
|
|
|
- **Memory:** 20-40 MB RSS
|
|
|
|
|
- **Disk:** < 1 MB for package, ~2-5 MB for runtime data
|
|
|
|
|
|
|
|
|
|
### Tuning for Low-End Devices
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Reduce threads
|
|
|
|
|
uci add_list netifyd.default.options='--thread-detection-cores=1'
|
|
|
|
|
uci add_list netifyd.default.options='-t'
|
|
|
|
|
|
|
|
|
|
# Lower limits in /etc/netifyd.conf:
|
|
|
|
|
# flow-max = 5000
|
|
|
|
|
# flow-expiry = 60
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Tuning for High-Traffic Networks
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Increase threads
|
|
|
|
|
uci add_list netifyd.default.options='--thread-detection-cores=4'
|
|
|
|
|
|
|
|
|
|
# Higher limits in /etc/netifyd.conf:
|
|
|
|
|
# flow-max = 65536
|
|
|
|
|
# flow-expiry = 300
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Security Considerations
|
|
|
|
|
|
|
|
|
|
1. **Packet Capture:** Netifyd requires root privileges for packet capture
|
|
|
|
|
2. **Data Privacy:** Flow metadata includes IP addresses, ports, protocols
|
|
|
|
|
3. **Cloud Sync:** Optional - can be disabled if data privacy is a concern
|
|
|
|
|
4. **Local Access:** Unix socket is accessible by root only
|
|
|
|
|
5. **Web Interface:** Protected by LuCI authentication
|
|
|
|
|
|
|
|
|
|
## Support and Documentation
|
|
|
|
|
|
|
|
|
|
- **Package Issues:** https://github.com/your-repo/issues
|
|
|
|
|
- **Netifyd Upstream:** https://github.com/eglooca/netifyd
|
|
|
|
|
- **Netify.ai Docs:** https://www.netify.ai/resources
|
|
|
|
|
- **OpenWrt Wiki:** https://openwrt.org/
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
- Netifyd: GPL-3.0-or-later
|
|
|
|
|
- LuCI App: MIT
|
|
|
|
|
- Integration Code: MIT
|