mrkeyoor.com_
Wed 07 Oct 14:58 UTC
Self-Hostedevaluationupdated 07 Oct 2026

OpenGFW review

OpenGFW is a Linux traffic-analysis and filtering engine that reassembles network flows, identifies protocols, and applies expression-based rules. It gives researchers and network operators a programmable NFQueue firewall, but the maintainers explicitly say they do not plan to develop it actively.

Verdict

Our OpenGFW run installed 119 packages, built in 37 seconds, and passed all 10 tests, so the code is easy to verify even though the product is not easy to deploy. Use it as a compact Linux filtering engine when you can write the missing configuration and own its operation. Choose a packaged firewall or monitoring system if documentation and an active maintainer roadmap are part of the requirement.

We ran it

Lab card: what happened when we ran OpenGFWScreenshot of OpenGFW (github.com/HyNetworks/OpenGFW)
Install✓ · 29s119 packages
Build✓ · 37s
Tests✓ · 18s10 passed · 0 failed of 10 (go test)
Repo74 files~8,345 lines of source · 0.3 MB · 2 CI workflows

Answers from our run

Does OpenGFW build from source?

Dependencies installed in 29 seconds (119 packages), and the build succeeded in 37 seconds. We cloned commit 5815180 into a clean Debian container with 3 CPUs and no project-specific setup.

Do OpenGFW's tests pass?

Yes: 10 of 10 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use OpenGFW?

Teams needing a documented turnkey firewall: the README contains no build, run, configuration, or rule examples.

What are the alternatives to OpenGFW?

AdGuard Home, Zeek, nDPI. Our OpenGFW run installed 119 packages, built in 37 seconds, and passed all 10 tests, so the code is easy to verify even though the product is not easy to deploy.

Setup2/5Build is clean, but runtime setup and example configs are absent
Docs2/5Feature list is clear; deployment and rule guidance are missing
Community2/5278 stars, one open issue, and maintainers stepping back
Maturity3/5Tests pass, but the README still calls the project early stage

Who it’s for

Linux network researchers who want readable Go code for flow inspection.
Home or lab operators building custom ad, malware, or parental-control rules.
VPN operators who need protocol-aware abuse controls and can manage NFQueue routing.
Contributors willing to own configuration, deployment, and future maintenance.

Who it’s NOT for

Teams needing a documented turnkey firewall: the README contains no build, run, configuration, or rule examples.
Operators needing a supported product roadmap: the maintainers say they do not plan to continue active development themselves.
Deployments that require packet backends other than NFQueue: the README says NFQueue is the only I/O implementation.
Buyers counting on the advertised web interface or machine-learning classifier: both are labeled work in progress.
Anyone unwilling to accept an early-stage network control in the traffic path: the README says to use it at your own risk.

Setup reality

Our sandbox installed commit 5815180 in 29 seconds with 119 packages. The build succeeded in 37 seconds, and go test finished in 18 seconds with 10 passed and 0 failed. The checkout held 74 files, about 8,345 source lines, and occupied 0.3 MB.

Running OpenGFW requires Linux, a YAML configuration, a YAML rules file, and traffic directed through NFQueue. The CLI looks for config in the current directory, $HOME/.opengfw, or /etc/opengfw; the README does not provide a working example.

The measured commit built under the Go 1.24 Bookworm image. The current go.mod declares Go 1.27, so builders using today's branch should follow that file rather than assuming our older harness image still applies. There is no Dockerfile.

OpenGFW filters flows with expressions instead of fixed rule tables

OpenGFW sits in a Linux packet path, rebuilds TCP and IP traffic into flows, identifies protocols, and evaluates rules written with the Expr language. The analyzer list covers HTTP, TLS, QUIC, DNS, SSH, SOCKS4 and SOCKS5, WireGuard, OpenVPN, Trojan, and detection of some fully encrypted traffic. Rules can log, permit, block, or modify supported traffic, and a SIGHUP reloads them without replacing the running process. That combination makes the project interesting as a small policy engine rather than a traditional port-and-address firewall.

The repository is compact enough to inspect. Our measured checkout had 74 files, about 8,345 lines of source, and used 0.3 MB. Its current command code registers 10 analyzers and 1 DNS modifier. Multicore flow distribution, connection offloading, IPv4, and IPv6 are part of the stated design. Yet the README labels both machine-learning traffic classification and the web interface as work in progress. You should expect to operate a command-line network component, not click through a finished appliance.

A clean 37-second build does not provide a runnable configuration

Installation at commit 5815180 completed in 29 seconds and resolved 119 packages. The Go build then succeeded in 37 seconds. That is an encouraging result for anyone auditing or extending the engine: there was no compile repair or dependency chase in our fresh Debian container. The repository also has 2 CI workflow files. It does not include a Dockerfile, so there is no official container path to copy into a deployment.

Runtime setup is the harder half. OpenGFW accepts one rules file argument and reads a separate YAML configuration. The command searches the working directory, $HOME/.opengfw, and /etc/opengfw, or accepts a path through --config. Traffic must reach its NFQueue backend, which means the host's packet-routing policy and permissions are part of the installation. The README gives no sample config, sample rules, build command, or NFQueue wiring instructions. You have source-level clues where an operator needs a worked deployment.

What happened when we ran it

Our sandbox installed commit 5815180 in 29 seconds, built it in 37 seconds, and completed go test in 18 seconds. The test result was 10 passed and 0 failed. We ran those checks with 3 CPUs, 8 GB of RAM, the Go 1.24 Bookworm image, no secrets, and no elevated privileges. Our measurement method verifies the checkout's dependency, compilation, and test paths. It does not prove that packets can be captured or filtered on a configured router.

The repository has no top-level tests directory, although the Go test command found and passed 10 tests in package files. That distinction matters when scanning the tree: absence of a dedicated directory did not mean absence of tests. We did not load an NFQueue, exercise live traffic, or judge detection accuracy. No timing or throughput figure should be inferred from the 18-second test duration. It measures the suite on our box, not packets per second.

NFQueue is the only packet backend today

The README calls the analyzer and modifier framework extensible, but it also says NFQueue is the only current I/O implementation. That narrows the practical audience to Linux operators comfortable placing a user-space process in the traffic path. The engine's config exposes queue and socket buffers, worker count, TCP buffering limits, UDP stream limits, and optional GeoIP and GeoSite files. Those controls are useful once you understand the workload, but the repository offers no sizing advice or example values.

Version drift deserves one check before building current master. Our lab commit compiled inside a Go 1.24 image on October 6, 2026. The go.mod now declares Go 1.27, while the repository was pushed on October 4. Use the declaration in the revision you deploy rather than treating the older lab environment as a promise about today's branch. The project is small, yet its operating boundary includes the kernel queue, routing rules, configuration files, and policy expressions.

The maintainers publish fixes without promising active development

The README opens with an unusual and useful disclosure. The maintainers temporarily removed OpenGFW after finding its code used in commercial censorship products. They restored the repository for research, ad blocking, parental control, malware protection, VPN abuse prevention, and traffic analysis, but say they do not plan to continue active development themselves. They will keep it available, accept pull requests, and publish releases when appropriate. That is maintenance by invitation, not a staffed roadmap.

Recent activity prevents a simple abandonment label. Release v0.4.3 shipped on October 4, 2026, fixing QUIC ClientHello detection when a handshake spans multiple packets, and the repository was pushed the same day. GitHub showed 278 stars and 1 open issue, with no open pull request in the first 100 open items. The sole issue asks about moving from MPL-2.0 to AGPLv3, while the repository remains MPL-2.0. OpenGFW is credible source code for a specialist who will own it. It is a poor substitute for a supported firewall product.

Alternatives

ProjectWhat it isPick it when
AdGuard Home gh↗A self-hosted DNS filter with packaged setup and an administrative interface.pick this instead when ad blocking and parental controls are the goal and DNS-level decisions are enough.
ZeekA mature network analysis platform built around event-rich traffic logs and scripts.pick this instead when passive monitoring and investigation matter more than inline packet blocking.
nDPIA deep-packet-inspection library for identifying protocols inside other network products.pick this instead when you need a classification library to embed rather than a complete rule engine.

What people are saying

  1. [velocity-scout] HyNetworks/OpenGFW

Sources

  1. OpenGFW README
  2. OpenGFW v0.4.3 release
  3. OpenGFW command configuration source
  4. OpenGFW license discussion

More self-hosted reviews

sparkDash · workbuddy2api-panel · jeff · splash · quivr · bindery · the whole board →