Hi there,

For more than 7 years now, OPNsense is driving innovation through modularising and hardening the open source firewall, with simple and reliable firmware upgrades, multi-language support, fast adoption of upstream software updates as well as clear and stable 2-Clause BSD licensing.

We thank all of you for helping test, shape and contribute to the project! We know it would not be the same without you. <3

Download links, an installation guide[1] and the checksums for the images can be found below as well.

- Europe: https://opnsense.c0urier.net/releases/22.1/
- US East Coast: https://mirror.wdc1.us.leaseweb.net/opnsense/releases/22.1/
- US West Coast: https://mirror.sfo12.us.leaseweb.net/opnsense/releases/22.1/
- South America: http://mirror.ueb.edu.ec/opnsense/releases/22.1/
- East Asia: https://mirror.ntct.edu.tw/opnsense/releases/22.1/
- Full mirror list: https://opnsense.org/download/

Here are the full patch notes against 21.7.7:

- system: improved visibility and flexibility of tunables
- system: create latest.log links for easier log consumption
- system: added opnsense-log utility to inspect logs on the console
- system: removed circular logging support
- system: background all cron backend command invokes
- system: unified cron start between legacy and MVC components
- system: improve the fallback after failing to look up specific IPv4 address match for dpinger
- system: default net.inet6.ip6.intr_queue_maxlen to 1000 like its IPv4 counterpart
- system: default net.inet6.ip6.redirect to off like its IPv4 counterpart
- system: fix potential issues with "search" syntax in resolv.conf
- system: make /var MFS work when /var directories are mount points, e.g. on ZFS
- system: optionally disconnect PPP interfaces when going into CARP backup mode
- system: add severity to syslog output and allow to filter for it
- system: no longer display duplicated mounted partitions on the dashboard
- interfaces: LAGG support in console port assignment (contributed by sarthurdev)
- interfaces: aligned the name and use of special /tmp files for internal interface handling
- interfaces: removed opportunistic functions find_interface_ip(), find_interface_ipv6() and find_interface_ipv6_ll()
- interfaces: get_interface_ip() and get_interface_ipv6() now return a valid IP address if one was given to support VIP aliases
- interfaces: interfaces_addresses() can now map a configuration interface to returned addresses to track its origin
- interfaces: VIPs now support the "no bind" option to exclude them from automatic service use when configured
- interfaces: interfaces_primary_address() is now being used like its IPv6 equivalent throughout the code
- interfaces: interfaces_primary_address6() is now considering addresses from tracking interfaces when needed
- interfaces: interfaces_scoped_address6() is now being used throughout the code
- interfaces: "tentative" state now leads to the address being ignored during configuration like "deprecated"
- interfaces: removed unmaintained 3G statistics gathering for Huawei modems that could lock up other modems
- interfaces: reworked interface creation on boot up
- interfaces: spoof MAC now only applies to actual interface and not all of its VLAN siblings or parent
- interfaces: added permanent promiscuous mode setting
- interfaces: add the interface description via ifconfig to its respective device
- interfaces: stop special treatment of bridge interfaces on linkup
- interfaces: correctly write nameserverv6 and searchdomainv6 information on dhcp6c lease acquire
- interfaces: background all interface reconfiguration script hooks
- interfaces: refactored linkup event handler to avoid unnecessary recursion in the code
- interfaces: make cache IP files exclusive to rc.newwan and rc.newwanv6 scripts to avoid missing IP changes
- interfaces: no longer allow and apply media configuration for non-parent devices
- interfaces: removed restriction from interfaces without configuration to not being able to hold VIPs
- firewall: properly kill all connections from and to a WAN IPv4 on an address change
- firewall: skip rule ID for NAT type log entries (contributed by kulikov-a)
- firewall: display interface descriptions on normalisation rules (contributed by vnxme)
- firewall: dynamic IPv6 host alias support (contributed by Team Rebellion)
- firewall: removed obsolete kill states option on gateway failure
- firewall: removed the $aliastable cache
- dhcp: allow for ARM architectures in network boot options (contributed by Keith Cirkel)
- dhcp: allow router advertisements to use a specific link-local VIP alias
- dhcp: refactor the IPv4 and IPv6 configuration pages and add minimal subnet size requirement hints
- dnsmasq: fix all-server overwriting strict-order configuration directive (contributed by Christian Tramnitz)
- firmware: add a "status_reboot" variable to API return data to make clear it belongs to the offered minor update or major upgrade
- firmware: add random delays to existing firmware cron jobs to avoid update server load spikes
- firmware: added an automatic cron job to fetch changelog daily to use it as a lightweight check for updates on the dashboard
- firmware: return product info for status endpoint even when no firmware check was done
- firmware: removed obsolete business repository fingerprints and added 22.1 fingerprint
- firmware: implement cross-ABI reinstall of all packages for future use
- installer: fix installation of rc.conf keymap setting selected earlier during installation
- installer: improve disk and ZFS pool scan and display
- installer: increase EFI partition size to 260 MB
- installer: add EFI partition as a default mount point
- ipsec: update security of default settings when creating new phase 1 and 2
- ipsec: remove hashes and algorithms no longer supported by FreeBSD 13
- ipsec: migrated tunnel settings page to MVC
- lang: update translations for Chinese, French, German, Italian, Japanese, Norwegian, Spanish, and Turkish
- lang: demote Italian to development-only language due to lowered translation ratio
- monit: move logging to own target
- network time: add iburst option and stop using it by default (contributed by Patrick M. Hausen)
- openvpn: kill by common name when kill by address does not work
- unbound: disable do-not-query-localhost on local address server use
- unbound: update DNS with hostname-only static entries (contributed by Gareth Owen)
- update: opnsense-bootstrap: -z snapshot mode
- update: opnsense-bootstrap: improved type detection
- update: opnsense-code: -r for repository removal
- update: opnsense-fetch: emit error message of failed download
- update: opnsense-update: handle kernel debug directory like /boot/kernel
- update: opnsense-update: removed "firmware-upgrade" file support
- update: opnsense-verify: synced shared code with FreeBSD 13
- backend: unify use of configctl utility
- images: removed deprecated os-dyndns plugin from default installation
- mvc: emulation versioning empty nodes for the legacy configuration sections
- mvc: add getInterfaceConfig endpoint to interface API (contributed by Paolo Asperti)
- mvc: add hint support for text fields (contributed by agh1467)
- ui: add support for terabytes, and petabytes to format_bytes() (contributed by agh1467)
- ui: universal striping adjustment for MVC components (contributed by kulikov-a)
- src: FreeBSD 13-STABLE as of 4ee9fbcd853
- src: reworked shared forwarding
- src: migrated to LUA boot loader (contributed by Kyle Evans)
- plugins: os-acme-client 3.8[2]
- plugins: os-bind 1.20[3]
- plugins: os-frr 1.25[4]
- plugins: os-haproxy 3.9[5]
- plugins: os-nginx 1.25[6]
- plugins: os-openconnect 1.4.2[7]
- plugins: os-postfix 1.21[8]
- plugins: os-telegraf 1.12.4[9]
- plugins: os-zabbix-proxy 1.7[10]
- ports: expat 2.4.2[11]
- ports: filterlog 0.6[12]
- ports: flock 2.37.2
- ports: lighttpd 1.4.63[13]
- ports: nss 3.73.1[14]
- ports: openssl 1.1.1m[15]
- ports: openvpn 2.5.5[16]
- ports: phalcon 4.1.3[17]
- ports: php 7.4.27[18]
- ports: sqlite 3.37.1[19]
- ports: unbound 1.14.0[20]

Known issues and limitations:

- This release contains a new major operating system version and should be carried out with the necessary care. Despite extended test coverage changes made by FreeBSD may still affect operation without our knowledge.
- MAC spoofing now only pertains to the configured interface and not the VLAN siblings or parent interface. This can introduces unwanted configuration due to previous side effects in the code. Make sure to assign and set the spoofed MAC for all interfaces that require a spoofed MAC.
- Media settings are no longer shown for non-parent interfaces and need to be set individually to take effect. This can introduce unwanted configuration due to previous side effects in the code. If the parent interface was not previously assigned please assign it to reapply the required media settings.
- Router advertisement static mode option is still subject to change in this release candidate series.
- IPsec hash and cipher removals in FreeBSD 13 can affect existing setups as insecure cryptographic options have been removed upstream. For more information see the FreeBSD commit in question[21]. We will be adding an explicit configuration check to 21.7 before its end of life.
- Circular logging support has been removed. No user interaction is required.
- The migration notes are subject to change and will be extended as needed in the upcoming weeks.

The public key for the 22.1 series is:

    -----BEGIN PUBLIC KEY-----
    MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1o1Bk31AcX5xsqgVAoWQ
    1fTDznz22ojsK+qCkhW7MKSWlCyEZYEueUtq7hOt/gqttc3qT0WgHjhjI/WE2RQ4
    53yfSw/2DDdt3v2WRoupaMzu2Px6I0A+dzo/DM0UWHHsjUaa1HnTvrC14W2vy9wY
    rdotDpp6vSA3WoBmpz+6cpAOlOMTboJouaZy2gSAAcFUmnmP6KDE+lQEqudENTpr
    wb/tIILTE3s6HMBrnmyTNz3Oyy77qH0Xq4mU0r+GS3If0LN+zIr3evt/hhS80otG
    4WA2ifFeoZVUC//ArAqRiuOJKWvDe5455W1tOuoLkVKVwWMUd1YjaLq8/SRNtTVT
    jRWO6znUHJa7LKtwY7SJvJ8bl8kR8QnrEBRLqT3IA+FcRH+8RaeCivPV7oS1tMiV
    7hUmu4yXkiMU9c/RrUj7UGZfPKa6K1yP2p3pRvHwCpMclhlVdaiAGNQ8X1GmUAmg
    3hsoay1ximpj0Yzs+ynDdT1WPkjx8+mDWI08qTuVX+KN3xiohzjxUyD6kBbw2N4z
    EkKTu36KLxo+Hs2iHh4iPWV+EZ5pBn/BseUeHha+V76xM/fPU3H2htwF6/lAz3KH
    J6cevsMenCaYBAqpUsQMBjxhDgMmpCcjiZRPijFpe5zsNSUD1NJ8QMpecBZCE6Vt
    YHWiWxZTN13z4mPqA4uebakCAwEAAQ==
    -----END PUBLIC KEY-----

Please let us know about your experience!

Stay safe,
Your OPNsense team

    SHA256 (OPNsense-22.1.r1-OpenSSL-dvd-amd64.iso.bz2) = c6388b7960ec8e65a89dd8baf0a118410340f94b260bfea64faf3008c525376e
    SHA256 (OPNsense-22.1.r1-OpenSSL-nano-amd64.img.bz2) = 10aa979b754c8d4b0ffdad4c8befa1ab3b0bb146981333d5731ffa5c7b99b9b3
    SHA256 (OPNsense-22.1.r1-OpenSSL-serial-amd64.img.bz2) = e09addbab2a479cd5155926373c2bbe141d3f6aa057f044b43d9ad11fcc75e85
    SHA256 (OPNsense-22.1.r1-OpenSSL-vga-amd64.img.bz2) = 7f02135fdddf6227fd1ef4bb3012ce83b622bf7ec18baadaf03105792a38576c