Upgrade 22.05 to 23.01 fails on FreeRADIUS XMLRPC Sync
-
Hello,
We have four Netgate 7100's with PFSense Plus which we mainly use for OpenVPN user access. First three of them we upgraded from 22.05 to 23.01 without any issues, worked like a charm. But on the fourth I ran into trouble.
This fourth is used a bit differently than the other three. On this one we maintain the users in freeradius, which it syncs to the other three using the FreeRADIUS XMLRPC Sync.
After the upgrade the system booted, but the freeradius daemon didn't start. In the GUI there was a crash report:
Crash report begins. Anonymous machine information:
amd64
14.0-CURRENT
FreeBSD 14.0-CURRENT #0 plus-RELENG_23_01-n256037-6e914874a5e: Fri Feb 10 20:30:29 UTC 2023 root@freebsd:/var/jenkins/workspace/pfSense-Plus-snapshots-23_01-main/obj/amd64/VDZvZksF/var/jenkins/workspace/pfSense-Plus-snapshots-23_01-main/sources/FreeBSCrash report details:
PHP Errors:
[26-Mar-2023 10:34:52 Europe/Amsterdam] PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /etc/inc/xmlrpc_client.inc:47
Stack trace:
#0 /usr/local/pkg/freeradius.inc(2505): pfsense_xmlrpc_client->__construct()
#1 /usr/local/pkg/freeradius.inc(2453): freeradius_do_xmlrpc_sync('10.20.66.18', 'admin', 'qTEDrc5HiLsE9zF', '443', 'https', '150')
#2 /usr/local/pkg/freeradius.inc(794): freeradius_sync_on_changes()
#3 /etc/inc/pkg-utils.inc(715) : eval()'d code(2): freeradius_users_resync()
#4 /etc/inc/pkg-utils.inc(715): eval()
#5 /etc/rc.start_packages(66): sync_package('freeradius3')
#6 {main}
thrown in /etc/inc/xmlrpc_client.inc on line 47No FreeBSD crash data found.
After some investigation I found that the xmlrpc sync-config seems to be the problem:
PHP ERROR: Type: 1, File: /etc/inc/xmlrpc_client.inc, Line: 47, Message: Uncaught TypeError: Cannot access offset of type string on string in /etc/inc/xmlrpc_client.inc:47
Stack trace:
#0 /usr/local/pkg/freeradius.inc(2505): pfsense_xmlrpc_client->__construct()
#1 /usr/local/pkg/freeradius.inc(2453): freeradius_do_xmlrpc_sync('1.2.3.4', 'admin', '*******', '443', 'https', '150')
#2 /usr/local/pkg/freeradius.inc(794): freeradius_sync_on_changes()
#3 /etc/inc/pkg-utils.inc(715) : eval()'d code(2): freeradius_users_resync()
#4 /etc/inc/pkg-utils.inc(715): eval()
#5 /etc/rc.start_packages(66): sync_package('freeradius3')
#6 {main}
thrown @ 2023-03-26 10:34:52
When I remove that piece from a saved config.xml and import that config, the freeradius daemon starts, and seems OK.
Then I tried to add the sync configuration, thinking it might help to make a fresh configuration. Adding seemed to work, but when I tried to enable the sync (tick enable, en save) another PHP error appeared in the GUI (3 of these):
Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /etc/inc/xmlrpc_client.inc:47 Stack trace: #0 /usr/local/pkg/freeradius.inc(2505): pfsense_xmlrpc_client->__construct() #1 /usr/local/pkg/freeradius.inc(2453): freeradius_do_xmlrpc_sync('1.2.3.4', 'admin', '********', '443', 'https', '150')
Uninstalling freeradius package and installing it again doesn't help.
Also extra reboots won't help.So it looks freeradius seems to work for me on the three boxes which don't use the FreeRADIUS XMLRPC Sync, but it's broken on the one which uses the Sync.
Luckily I could rollback easily using Boot Environments (hurray for ZFS!!!). I can out of time and had to roll back to 22.05, we have a working setup again.
Is this a known issue? Any solution availabled for this?
Kind regards,
Jos Andel -
@jos-andel
Bug filed by Netgate Support : https://redmine.pfsense.org/issues/14182 -
-
The filed bug gave a good hint about not having an empty HA-Sync configuration under 'System'. I've put a username and password in that configuration to make sure it's not empty.
This results in a working upgrade, and working Freeradius after upgrade. XMLRPC also works fine after the upgrade.