Dynamic DNS no longer working with Google Domains DNS
-
This was working previously, but no longer.
Error in the logs indicate anunknown response from GDNS:
/services_dyndns_edit.php: phpDynDNS (myhost.example.com): (Unknown Response)
Logs show that it's getting the correct IP address prior to trying to update the DNS record:
/services_dyndns_edit.php: Dynamic DNS googledomains (myhost.example.com): 111.112.113.114 extracted from Check IP Service
I looked at the code in /etc/inc/dyndns.class and it appears that the result should match the expected return of "good 111.112.113.114" or "nochg 111.112.113.114", but it always results in the Unknown Response error.
case 'googledomains': if (preg_match('/notfqdn/i', $data)) { $status = $status_intro . $error_str . gettext("Not A FQDN"); } else if (preg_match('/nochg/i', $data)) { $status = $status_intro . $success_str . gettext("No Change In IP Address"); $successful_update = true; } else if (preg_match('/good/i', $data)) { $status = $status_intro . $success_str . gettext("IP Address Changed Successfully!") . " (" . $this->_dnsIP . ")"; $successful_update = true; } else if (preg_match('/badauth/i', $data)) { $status = $status_intro . $error_str . gettext("User Authorization Failed"); } else if (preg_match('/nohost/i', $data)) { $status = $status_intro . $error_str . gettext("Hostname does not exist or DynDNS not enabled"); } else if (preg_match('/badagent/i', $data)) { $status = $status_intro . $error_str . gettext("Bad request"); } else if (preg_match('/abuse/i', $data)) { $status = $status_intro . $error_str . gettext("Dynamic DNS access has been blocked!"); } else if (preg_match('/911/i', $data)) { $status = $status_intro . $error_str . gettext("Error on Google's end, retry in 5 minutes"); } else { $status = $status_intro . "(" . gettext("Unknown Response") . ")"; log_error($status_intro . gettext("PAYLOAD:") . " " . $data); $this->_debug($data); } break;
As a work-around, I created a custom dynamic DNS client entry and it works fine with the same credentials, so I know it's set up correctly in the domain records @ Google.
I used this URL in the custom entry:
https://thishostGDNSuser:thishostGDNSpw@domains.google.com/nic/update?hostname=myhost.example.com&myip=%IP%
Result match is set to: good %IP%|nochg %IP%
Any known problems with dynamic DNS using Google Domains in 2.5.2?
-
I believe this is an already reported bug. The Redmine Issue is here: https://redmine.pfsense.org/issues/12754.
However, according to the most recent update for that issue, it is slated to be fixed in the 2nd quarterly pfSense Plus update and in 2.7.0 for CE. So it might be awhile unless the fix is pulled into the upcoming 22.01 pfSense Plus and 2.6.0 CE releases.
-
Thank you both! Infotactix for the question and bmeeks for the response, that link you provided was spot on!
I was about to loose my mind, thinking it was something I did. While this is a home setup and not crucial, it greatly adds convenience. I didn't notice it until I swapped out my cable modem and logged in to check my links and noticed that Dynamic DNS was returning 0.0.0.0 instead of my new IP.
I tailed -f /var/log/system.log and saved and forced update and saw php-fpm[85765]: /services_dyndns_edit.php: phpDynDNS and a text output of an html file. Within this output, "That@M-^Ys an error.</ins><p>The server cannot process the request because it is malformed" followed by php-fpm[85765]: /services_dyndns_edit.php: phpDynDNS (): (Unknown Response).
It took a bit of digging but I should have checked here first. But as my dad always said, "No matter how long you look for something, it's always in the last place you check."