# home grown no-ip/dyndns setup wanted



## paulfrottawa (Feb 15, 2012)

Hey all
I hope I describe this right.

I have access to a VPS server that I would like to set up like no-ip server. and at home have my computer connect to it so my home IP will be known. It seems I can keep my VPS server up longer than a host redirect company will hold a CNAME. When you need what you set up "it's gone".

Anyway I'm not sure if the ports tree already has tools for this. I just don't know where to start right now. 

Any pointers anyone?


----------



## da1 (Feb 17, 2012)

Hmm, not sure I got this right ... you want a VPN between your VPS and your home network?



			
				paulfrottawa said:
			
		

> have my computer connect to it so my home IP will be known


This is where I get lost but I suspect you are talking about a VPN of sorts ... or?



> It seems I can keep my VPS server up longer than a host redirect company will hold a CNAME. When you need what you set up "it's gone".


 Are you referring to a DNS A/CNAME update?



> Anyway I'm not sure if the ports tree already has tools for this. I just don't know where to start right now.


OpenVPN or Racoon with IPSEC and gif interfaces or any other home-brewed recipe.


----------



## tingo (Feb 19, 2012)

Question: why don't you simply install a dyndns client on your home computer? This way your home computer will always have the assigned name (example.dyndns.org, another.no-ip.org, something.else.xxx). Then you use that dynamic dns name wherever you like.
The ports collection has a few dyndns clients. I use dns/ddclient, it is quite simple, but it does require perl.


----------



## jem (Feb 19, 2012)

I've implemented something like this for my Dad's home DSL connection, which has a dynamic IP.  It works like this:

I have a hosted server which is also the master DNS server for my Dad's domain.  I've configured the domain to accept dynamic DNS updates from localhost only.

I've set up a FreeBSD host at my Dad's home, which periodically makes an ssh connection to my server and runs a simple perl script.  The script invokes the nsupdate() program, providing the name of the record to update and the source IP address of the ssh connection from my Dad's host, which is given in the $SSH_CLIENT environment variable.  Here's the relevant part:


```
sub nsupdate {
  my ($hostname, $ip) = @_;

  open(NSUPDATE, "| $nsupdate") || die "Unable to execute: $!";
  local $SIG{PIPE} = sub { die "nsupdate pipe burst" };

  print NSUPDATE "server 127.0.0.1\n";
  print NSUPDATE "update delete $hostname A\n";
  print NSUPDATE "update add $hostname 600 A $ip\n";
  print NSUPDATE "\n";

  close NSUPDATE || die "bad nsupdate: $! $?";
}
```

The ssh connection is made every 10 minutes, so any change to my Dad's home IP should be reflected in the DNS record within that time.


----------

