gate42 2.0: NGFW, protection and web filtering
The second gate42 release. Every network is protected from the first boot, and each network can block categories of websites and apps, with safe search, all built from open-source parts and set up the gate42 way. Released 2026-11-10, based on OPNsense® 26.7.8_2 on FreeBSD 15.1-RELEASE-p6.
- Release
- gate42 2.0, build 77 (the newest)
- Upstream
- OPNsense 26.7.8_2 (series 26.7): upstream release notes
- System version
- The firewall reports OPNsense's version, 26.7.8_2, so updates and plugins work as upstream's; the console banner shows gate42 2.0 and its build.
| File | Size | SHA-256 |
|---|---|---|
| gate42-2.0-b77-amd64.iso | 2.2 GB | a4ce33dc1106efd306c4a48b7c704807fd07bb7afc4e6d0758a5b92c0ed73d7f |
| gate42-2.0-b77-amd64.iso.sha256 | 91 bytes | checksum file |
| gate42-2.0-b77-amd64.manifest.txt | 5.4 KB | 6a6d2465a5e001e190f84db306ca850e166f8862278c837d503f62b9210678f1 |
| gate42-2.0-b77-amd64.qcow2 | 858.5 MB | 8afef2904aeab8bd8006c5dd0025e53a6aa42a69e9282c9c06baf28d3ee07151 |
| gate42-2.0-b77-amd64.qcow2.sha256 | 93 bytes | checksum file |
| SHA256SUMS, SHA256SUMS.asc | signed checksum list (verify) |
What is new
Protection from the first boot
Every gate42 2.0 protects its networks with no setup at all:
- Malicious sites are blocked for every network: gate42's DNS answers
0.0.0.0for about 190,000 names of malware, phishing, scam and command-and-control sites (Hagezi's threat intelligence list), updated every day. - Intrusion detection watches the LAN: Suricata with about 40,000 rules (Proofpoint's Emerging Threats Open and abuse.ch) raises an alert for attacks, exploits and infected devices, naming the device on your network.
- The firewall downloads the rules and lists itself after its first boot, retries every hour until it has them, and then updates them daily, each firewall at its own time of day.
Web filtering for each network
A new page, Services › Web filtering. For each network (LAN, guest, office …) choose a policy:
| Policy | Blocks |
|---|---|
| Office | adult content, gambling, social networks, and services that get around filters (DNS over HTTPS, VPN, proxies) |
| Strict | Office, plus scams, piracy, dynamic DNS, badware hosts and search engines without safe search |
- Stop DNS bypass: devices must use gate42 for DNS; a device with its own DNS server gets gate42's answer anyway, and DNS over TLS and public DNS-over-HTTPS servers are refused.
- Force safe search: Google, Bing and DuckDuckGo show only safe results, and YouTube runs in its moderate Restricted Mode.
- Always allow: domains a network may always reach, such as a social network your marketing team uses.
Intrusion prevention and application control, step by step
Turn detection into blocking, and block applications such as WhatsApp, Telegram or TikTok: two new guides walk through upstream's intrusion prevention and application detection on gate42, tested on this release.
Guide: block attacks (IPS) · Guide: block applications · Guide: see what gate42 blocked
Also new
- Installer ISO for VMware, Hyper-V, VirtualBox and physical machines, with the same system as the cloud image (guide).
- MTU from DHCP: the WAN takes the MTU its network offers, such as 1442 on OpenStack, so large packets are no longer lost there.
- gate42's own release numbers: this is gate42 2.0, the second release. The console and SSH banner shows the release and its build; the system version stays OPNsense's, so updates and plugins work as upstream's.
- The browser tab says gate42 on every page.
System requirements
| Use | vCPU | Memory | Disk |
|---|---|---|---|
| Firewall, VPN, protection on | 2 | 2 GB | 10 GB |
| Plus web filtering (Office or Strict) | 2 | 4 GB | 20 GB |
| Plus intrusion prevention and application control on busy links | 4 | 8 GB | 40 GB |
- Protection on uses about 650 MB of memory; Office's lists about 600,000 more names. On a firewall with less than 3.5 GB, web filtering uses Hagezi's smaller gambling list.
- The cloud image boots with BIOS or UEFI (without Secure Boot) on virtio-blk or virtio-scsi disks and virtio network cards: host42, OpenStack, Proxmox VE, KVM. The ISO installs on VMware, Hyper-V, VirtualBox and physical machines.
- Internet access from the WAN, for updates and for the daily rules and lists.
Moving from 1.8.2
Like every gate42 release, 2.0 is an image for new firewalls. A 1.8.2 firewall keeps installing OPNsense's updates from the official mirror, but gate42's own features come with the image. To move: back up the configuration (System › Configuration › Backups), start a 2.0 firewall, and restore it there. A restored 1.8.2 configuration has no protection settings: switch them on as the protection guide shows, or ask Padmini Systems to do it.
Known limits
- Web filtering works on names (DNS), as most firewalls do without decrypting traffic: it does not see page content, and a blocked site shows as "can't be reached", with no block page.
- A site opened by its IP address, or through a VPN the lists do not know, is not filtered by DNS; the intrusion detection still watches it.
- Intrusion detection alerts but does not block until you switch on prevention (guide).
- Forced safe search works for IPv4.
Open-source credits
gate42 is Padmini Systems' build of OPNsense® (BSD 2-Clause, © Deciso B.V.), which runs on FreeBSD. gate42 2.0 adds no closed parts. Its NGFW features come from these open-source projects and open data:
| Part | What it does in gate42 | Licence |
|---|---|---|
| Suricata (in OPNsense) | intrusion detection and prevention | GPL-2.0 |
| Unbound (in OPNsense) | DNS, with OPNsense's blocklist policies | BSD |
| Emerging Threats Open rules, by Proofpoint | attacks, exploits, malware, command and control | BSD, older rules GPL-2.0 |
| abuse.ch Feodo Tracker and SSL Blacklist | botnet servers and malicious certificates | CC0 |
| OPNsense application detection rules | applications by name, for the application-control guide | BSD 2-Clause |
| Hagezi DNS blocklists | threat intelligence, gambling, social networks, filter bypass, the Strict lists, DNS-over-HTTPS server addresses | GPL-3.0 |
| OISD NSFW list | adult content | GPL-3.0 |
| Google's list of search domains, and the safe-search addresses Google, Bing, DuckDuckGo and YouTube publish | forced safe search | published by those companies for this use |
The firewall downloads the rules and lists from their publishers; none of them ships in the image. Every package in the image, with its licence, is listed below; the open-source notices say where the source is.
Packages and licences
171 packages in the image
| Package | Version | Licences |
|---|---|---|
| beep | 1.0_2 | BSD4CLAUSE |
| boost-libs | 1.92.0 | BSL |
| brotli | 1.2.1,1 | MIT |
| ca_root_nss | 3.132 | MPL20 |
| choparp | 20150613_1 | BSD3CLAUSE |
| colordiff | 1.0.22 | GPLv2+ |
| cpdup | 1.22_1 | BSD2CLAUSE |
| cpustats | 0.1 | |
| curl | 8.23.0 | MIT |
| cyrus-sasl | 2.1.28_6 | BSD4CLAUSE |
| cyrus-sasl-gssapi | 2.1.28 | BSD4CLAUSE |
| dhcp6c | 20260122_1 | BSD3CLAUSE |
| dhcrelay | 1.0 | BSD3CLAUSE |
| dnsmasq | 2.93,1 | GPLv2 |
| dpinger | 3.7 | BSD2CLAUSE |
| easy-rsa | 3.2.6,1 | GPLv2 |
| expat | 2.9.0 | MIT |
| filterlog | 0.9 | BSD3CLAUSE |
| flock | 2.37.2_1 | GPLv2 |
| flowd | 0.9.1_5 | BSD2CLAUSE, BSD3CLAUSE, MIT |
| gettext-runtime | 1.0_1 | GPLv3+, LGPL21+ |
| glib | 2.88.3,2 | LGPL20 |
| gmp | 6.3.0 | LGPL3 |
| hostapd | 2.12_2 | BSD3CLAUSE |
| hostwatch | 1.0.13 | BSD2CLAUSE |
| hyperscan | 5.4.2 | BSD3CLAUSE |
| icu | 76.1,1 | ICU |
| ifinfo | 13.0_1 | MIT |
| iftop | 1.0.p4_1 | GPLv2 |
| indexinfo | 0.3.1_1 | BSD2CLAUSE |
| ivykis | 0.43.2_1 | LGPL21 |
| jansson | 2.15.1_1 | MIT |
| jq | 1.8.2 | MIT |
| json-c | 0.19_1 | MIT |
| kea | 3.0.4 | MPL20 |
| krb5 | 1.22.2_4 | MIT |
| ldns | 1.9.2 | BSD3CLAUSE |
| libcbor | 0.14.0 | MIT |
| libedit | 3.1.20260512,1 | BSD2CLAUSE |
| libevent | 2.1.13 | BSD3CLAUSE |
| libffi | 3.8.0 | MIT |
| libfido2 | 1.17.0 | BSD2CLAUSE |
| libiconv | 1.18_1 | GPLv3 |
| libidn2 | 2.3.8 | GPLv3 |
| libltdl | 2.6.2 | LGPL21 |
| liblz4 | 1.10.0_2,1 | BSD2CLAUSE, GPLv2 |
| libmcrypt | 2.5.8_4 | LGPL21+ |
| libnet | 1.3,1 | BSD2CLAUSE |
| libnghttp2 | 1.70.0 | MIT |
| libpfctl | 0.17 | BSD2CLAUSE |
| libpsl | 0.23.3 | MIT |
| libsodium | 1.0.22 | ISCL |
| libucl | 0.9.4 | BSD2CLAUSE |
| libunistring | 1.4.2 | GFDL, GPLv2, LGPL3+ |
| libuuid | 2.42.4 | BSD3CLAUSE |
| libxml2 | 2.15.4 | MIT |
| libyaml | 0.2.5 | MIT |
| lighttpd | 1.4.85 | BSD3CLAUSE |
| log4cplus | 2.2.1 | APACHE20 |
| lua54 | 5.4.8 | MIT |
| lzo2 | 2.10_2 | GPLv2 |
| monit | 6.0.0 | AGPLv3 |
| mpd5 | 5.9_20 | BSD3CLAUSE |
| mpdecimal | 4.0.1 | BSD2CLAUSE |
| nettle | 3.10.2 | LGPL3, GPLv2+ |
| nspr | 4.39 | MPL20 |
| nss | 3.132 | MPL20 |
| ntp | 4.2.8p18_6 | |
| oniguruma | 6.9.10 | BSD2CLAUSE |
| openldap26-client | 2.6.16 | OPENLDAP |
| openssh-portable | 10.6.p1,1 | OPENSSH |
| openssl35 | 3.5.9 | APACHE20 |
| openvpn | 2.7.8 | GPLv2 |
| opnsense | 26.7.8_2 | BSD2CLAUSE |
| opnsense-installer | 26.7 | BSD2CLAUSE |
| opnsense-lang | 26.1.7 | BSD2CLAUSE |
| opnsense-update | 26.7.8 | BSD2CLAUSE |
| os-qemu-guest-agent | 1.3 | BSD2CLAUSE |
| pam_opnsense | 24.1 | BSD2CLAUSE |
| pcre2 | 10.49 | BSD3CLAUSE |
| perl5 | 5.42.3 | ART10, GPLv1+ |
| pftop | 0.13 | BSD2CLAUSE |
| php85 | 8.5.12_2 | PHP301 |
| php85-ctype | 8.5.12_2 | PHP301 |
| php85-curl | 8.5.12_2 | PHP301 |
| php85-dom | 8.5.12_2 | PHP301 |
| php85-filter | 8.5.12_2 | PHP301 |
| php85-gettext | 8.5.12_2 | PHP301 |
| php85-ldap | 8.5.12_2 | PHP301 |
| php85-mbstring | 8.5.12_2 | PHP301 |
| php85-pcntl | 8.5.12_2 | PHP301 |
| php85-pdo | 8.5.12_2 | PHP301 |
| php85-pear | 1.10.18 | PHP301 |
| php85-pear-Crypt_CHAP | 1.5.0_1 | BSD3CLAUSE |
| php85-pecl-mcrypt | 1.0.9 | PHP301 |
| php85-pecl-radius | 1.4.0b1_4 | BSD3CLAUSE |
| php85-phalcon | 5.23.0 | BSD3CLAUSE |
| php85-phpseclib | 3.0.57 | MIT |
| php85-session | 8.5.12_2 | PHP301 |
| php85-simplexml | 8.5.12_2 | PHP301 |
| php85-sockets | 8.5.12_2 | PHP301 |
| php85-sqlite3 | 8.5.12_2 | PHP301 |
| php85-xml | 8.5.12_2 | PHP301 |
| php85-zlib | 8.5.12_2 | PHP301 |
| pkcs11-helper | 1.31.0 | BSD3CLAUSE, GPLv2 |
| pkg | 2.8.4_1 | BSD2CLAUSE |
| py313-Babel | 2.18.0 | BSD3CLAUSE |
| py313-Jinja2 | 3.1.6 | BSD3CLAUSE |
| py313-aioquic | 1.3.0_1 | BSD3CLAUSE |
| py313-anyio | 4.15.1 | MIT |
| py313-async_generator | 1.10_1 | MIT, APACHE20 |
| py313-attrs | 26.1.0 | MIT |
| py313-bottleneck | 1.6.0_2 | BSD2CLAUSE |
| py313-certifi | 2026.7.22 | MPL20 |
| py313-cffi | 2.1.1 | MIT |
| py313-charset-normalizer | 3.5.1 | MIT |
| py313-cryptography | 50.0.1_1,1 | APACHE20, BSD3CLAUSE |
| py313-dnspython | 2.9.0,1 | ISCL |
| py313-duckdb | 1.5.6 | MIT |
| py313-h11 | 0.16.0 | MIT |
| py313-h2 | 4.4.1 | MIT |
| py313-hpack | 4.2.0 | MIT |
| py313-httpcore | 1.0.9 | BSD3CLAUSE |
| py313-httpx | 0.28.1_2 | BSD3CLAUSE |
| py313-hyperframe | 6.1.0 | MIT |
| py313-idna | 3.20 | BSD3CLAUSE |
| py313-jq | 1.11.0 | BSD2CLAUSE |
| py313-ldap3 | 2.9.1_1 | LGPL3 |
| py313-markupsafe | 3.0.3 | BSD3CLAUSE |
| py313-numexpr | 2.14.2 | MIT |
| py313-numpy | 2.4.6_1,1 | BSD3CLAUSE |
| py313-outcome | 1.3.0_2 | MIT, APACHE20 |
| py313-packaging | 26.3 | BSD2CLAUSE, APACHE20 |
| py313-pandas | 2.3.3_4,1 | BSD3CLAUSE |
| py313-pyasn1 | 0.6.4 | BSD2CLAUSE |
| py313-pycparser | 3.0 | BSD3CLAUSE |
| py313-pylsqpack | 0.3.24 | BSD3CLAUSE |
| py313-pyopenssl | 26.4.0,1 | APACHE20 |
| py313-pysocks | 1.7.1_1 | BSD3CLAUSE |
| py313-python-dateutil | 2.9.0 | BSD3CLAUSE |
| py313-pytz | 2026.5,1 | MIT |
| py313-pyyaml | 6.0.3_1 | MIT |
| py313-requests | 2.34.2 | APACHE20 |
| py313-service-identity | 26.1.0 | MIT |
| py313-six | 1.17.0 | MIT |
| py313-sniffio | 1.3.1 | MIT, APACHE20 |
| py313-socksio | 1.0.0_1 | MIT |
| py313-sortedcontainers | 2.4.0_1 | APACHE20 |
| py313-sqlite3 | 3.13.16_10 | PSFL |
| py313-trio | 0.34.0 | MIT, APACHE20 |
| py313-truststore | 0.10.4_1 | MIT |
| py313-typing-extensions | 4.16.0 | PSFL |
| py313-tzdata | 2026.5 | APACHE20 |
| py313-ujson | 6.0.0 | BSD3CLAUSE, TclTk |
| py313-urllib3 | 2.8.0,1 | MIT |
| py313-vici | 6.0.3 | MIT |
| python313 | 3.13.16 | PSFL |
| qemu-guest-agent | 11.1.2_1 | GPLv2 |
| radvd | 2.20 | RADVD |
| readline | 8.3.6 | GPLv3 |
| rrdtool | 1.11.0 | GPLv2 |
| samplicator | 1.3.8.r1_1 | GPLv2 |
| sqlite3 | 3.53.4,1 | PD |
| strongswan | 6.1.0 | GPLv2 |
| sudo | 1.9.17p2_2 | sudo |
| suricata | 8.0.8 | GPLv2 |
| syslog-ng | 4.12.0_5 | GPLv2+, LGPL21+ |
| unbound | 1.26.2 | BSD3CLAUSE |
| wpa_supplicant | 2.12_1 | BSD3CLAUSE |
| zip | 3.0_6 | BSD3CLAUSE |
| zstd | 1.5.7_2 | BSD3CLAUSE, GPLv2 |
The same list is in the release's manifest. Where the source comes from: open-source notices.