Adamm
Part of the Furniture
The largest upgrade in Skynet’s 11-year history
Built exclusively for ASUSWRT-Merlin, Skynet v8 delivers a fully modernised codebase with major performance, reliability, and maintainability improvements - while keeping the familiar interface users already know.
What’s New in v8 (full list of changes available on GitHub)
Firewall, DNS, and IPSet improvements
- Unified IPSet handling through new IPSet_Wrapper()
- Converted core ipset code to wrapper (rollout ongoing)
- Domain lookup timeout control - prevents long stalls
- CIDR attribution accuracy improved in stats
- Country lookup only when enabled, with safer handling of malformed data
Race condition & concurrency fixes
- New lock management using flock
- Runtime/age of locks shown in logs for easier diagnosis
- Safe stale lock cleanup with ownership checks
- Trap-based cleanup on exit to prevent orphaned locks
- Race conditions reduced in parallel execution paths
Stability & network hardening
- Refactored Check_Connection() and DNS lookups
- Reduced IPTables workload (no more process flooding)
- Improved NTP sync validation
Menu system modernisation (in active development)
- Show_Menu() - easier, more consistent menu creation
- Prompt_Input() / Prompt_Typed() - validated user input
- Unified navigation and clearer error handling
- Reduced nesting for simpler, more readable flow
Stats & event logging enhancements
- New Run_Stats() system for cleaner statistics
- Added Show_Associated_Domains()
- Improved block reasons, including CIDR correlation
- Startup banners preserved (last 3) instead of being purged immediately
- Custom log size support:
Code:sh /jffs/scripts/firewall settings logsize 20
Code quality & compatibility
- ShellCheck compliance improvements across the script
- Shorter curl paths and safer download logic
- VSCode formatting / phrasing issues resolved
- "debug run xxx" now supports arguments for easier testing
- Improved internal documentation and function comments
Swap + storage handling
- Simplified swap detection logic
- Detect and repair dnsmasq additional config permissions
- New find_install_dir() helper for locating the install path
------------------------------------------------------------
------------------------------------------------------------
How To Install
SSH:
Code:
/usr/sbin/curl -fsL "https://raw.githubusercontent.com/Adamm00/IPSet_ASUS/master/firewall.sh" -o "/jffs/scripts/firewall" && chmod 755 /jffs/scripts/firewall && sh /jffs/scripts/firewall install
Or install from AMTM:
Code:
amtm
Example startup output:
Code:
Nov 15 10:26:54 Skynet: [i] Startup Initiated... ( skynetloc=/tmp/mnt/USB/skynet )
Nov 15 10:27:15 Skynet: [#] 33467 IPs (+0) -- 2365 Ranges Banned (+0) || 0 Inbound -- 0 Outbound Connections Blocked! [start] [20s]
------------------------------------------------------------
Support & issue tracking
For reproducible issues, enhancement requests, or deeper technical investigation:
Please use the GitHub Issue Tracker where development is active and changes are tracked.
General questions and discussion are welcome in this thread.
------------------------------------------------------------
Open Source - Free Forever
Skynet is hosted on GitHub.
If you'd like to support ongoing development:
Every contribution helps - from funding test hardware to covering development time.
------------------------------------------------------------
Looking ahead
- Full IPv6 Support
- Continued menu modernisation
- Improved WebUI (Community assistance required)
Last edited:
