Dynamic DNS updates do not update properly when behind an improperly configured proxy server
|Affected version:||2.0.x||Affected Architecture:|
I'm not sure if this should be considered a bug report, feature request, or both. I've done most of the legwork already (as outlined below) and am happy to continue working on the full solution.
We're behind a proxy server on one of our WANs that is improperly configured and causes us many problems day to day, among them the updating of Dynamic DNS entries for OpenDNS and our DNS system since we do not have static IPs. I've found a solution to our problem and I think it could easily be integrated into the mainstream pfSense releases. I'm just wanting to report the immediate issue and the workaround I came up with, but I'm working on a solution in the web configurator to switch between the two choices I'll outline below.
The core of the issue is that the IP detector used in pfSense goes over normal HTTP transport to http://checkip.dyndns.org via port 80. DynDNS offer this same check option on port 8245 at http://checkip.dyndns.org:8245, which circumvents most proxy server implementations.
Since I'm always behind a bad proxy and not in a situation where port 8245 is blocked, I've added a new line in /usr/local/www/services_dyndns.php and in /etc/inc/dyndns.class.
I insert a cURL option to transport over port 8245:
[code]curl_setopt($ip_ch, CURLOPT_PORT, 8245);[/code]
after line 63 in /usr/local/www/services_dyndns.php and after line 925 in /etc/inc/dyndns.class.
I've been able to complete the GUI side of things to choose what port is used (and i should note that it properly updates the green/red color on Services->Dynamic DNS) but i've had trouble getting it to actually transport over port 8245 due to something being weird with the function passing from /etc/inc/services.inc to /etc/inc/dyndns.class. I'll continue to work on this and submit those file changes for review when complete.