Dynamic DNS with a double NAT?



  • Comcast is my provider, and the way I had to setup pfsense was the WAN ip is 10.1.10.2 with the comcast router being 10.1.10.1.

    Is there a way to get the dynDNS updater to get a correct IP? Or maybe I could have set pfsense up differently with the Comcast modem. It is indeed business class, but not a static ip.


  • LAYER 8 Global Moderator

    so you can not put the comcast gateway into bridge mode so pfsense gets a public IP?  This would be first choice.

    As to second option.. You prob need to run a client somewhere that actually goes to the internet and IP used to connect is what is used to update the dns record.  Vs pfsense taking its wan IP and sending that to the dyndns provider.



  • Tom my knowledge, the ability to bridge so that pfsense could pull the ip is reserved for static ips, and they won't do that for dynamic ones.

    I was kinda thinking I may have to run a client elsewhere from pfsense, but wanted to keep it on pfsense if at all possible.



  • The pfSense Dynamic DNS updater code goes to http://checkip.dyndns.org/ to find its public IP address. That will see the piublic IP of the ComCast modem that the request ends up coming from, and return it to pfSense. So Dynamic DNS updating should work OK. The problem will be that the ComCast might get a new public IP given, and pfSense will not be aware of it. To get around that, I use the Cron package to modify the daily job "/usr/bin/nice -n20 /etc/rc.dyndns.update" so I runs frequently (e.g. every 5 or 10 minutes).
    Then also, any ports that you want accessible from the public internet you will have to forward from ComCast through to pfSense WAN IP.



  • Ok, with that last bit of information I got to digging deeper, and discovered it was a secondary issue.

    pfSense can deal with my situation perfectly, however, I use namecheap and was updating a @ record. Based on http://forum.pfsense.org/index.php?topic=67013.0 it seems that handling of those type of records has changed. I removed @.example.net and just used example.net, and it worked perfectly.


Log in to reply