Setting up a Fedora Linux server

Router Configuration

To check or change the router DHCP settings open the router LAN configuration page...

Router LAN configuration

Router LAN configuration

The router acts as a firewall and so HTTP access must be specifically allowed to the web server. This is done through the router's Virtual Server settings...

Allowing HTTP access

Allowing HTTP access

Dynamic IPs and DNS

The problem with using a dynamic IP address is that every time your ISP issues you a new IP address then the DNS servers have to be updated. If you use a service like GoDaddy, that doesn't allow you to remotely change the IP address, then you have to log into your account and do it manually.

There are sites around that cope much better with dynamic IPs. The one I use is EveryDNS The use of this service requires that you go to your registrars site (in my case GoDaddy) and change the default DNS servers to EveryDNS's, which are NS1.EVERYDNS.NET, NS2.EVERYDNS.NET, NS3.EVERYDNS.NET and NS4.EVERYDNS.NET.

Once that is done download eDNS.pl or you can copy the code as eDNS.pl to your computer. Once downloaded there are a number of ways to use this file to update the DNS servers.

As this is a Perl program you need Perl to run it. The general command in terminal to check if a program is installed is rpm -qa | grep program_name, so in terminal type...

rpm -qa | grep perl

Perl should be installed by default but if it isn't then use yum to install it...

yum install perl*

Suppose you put eDNS in a directory, in the example below it's in "downloads",  then you can run it through Perl, which is, by typing...

perl /downloads/eDNS.pl -u your_everyDNS_username -p your_everyDNS_password

Perl is installed in the "path" and so the path to it isn't necessary in the command line. The "path" aredirectories that are automatically searched when a command is run. You find find which directories these are by typing...

echo $PATH

By changing the permissions for eDNS.pl you do not have to put "perl" on the command line. The permissions need to be set to "execute". To do this you can type...

chmod 755 /downloads/eDNS.pl

Another way of doing it is to browse to the file and right click on it and choose properties. In the "Permissions" tab, check all three execute boxes...

Changing file permissions

Changing file permissions

Once the permissions have been changed you can run eDNS.pl by typing...

/downloads/eDNS.pl -u your_everyDNS_username -p your_everyDNS_password

By placing eDNS.pl in the "path", usually usr/bin then the file can be run by typing...

eDNS.pl -u your_everyDNS_username -p your_everyDNS_password

If you run eDNS.pl at less than around three minute intervals you'll receive an error message...

Received Exit Code 5, probably failed

It did in fact fail, the server rejects updates made at less than around three minute intervals.

When Fedora starts it runs a program called crontab. This program calls a script in the /etc directory also named crontab. What the program does is to run the commands in the script file automatically at set times. When I first opened my etc/crontab file it looked like this...

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

The file isn't that hard to understand. In the run-parts section the first column is minutes past the hour (0-59), then the hour of the day (0-23), then day of month (1-31), then month (1-12) and finally day of week (1 - 7, Monday=1)

For example, the last entry in the file means at 42 minutes past 4 on the first day of each month run the jobs in the file /etc/cron_monthy

Using this information we can automate the running of eDNS.pl

To run eDNS.pl hourly at 4 minutes past the hour add the line...

04 * * * * root eDNS.pl -u your_everyDNS_username -p your_everyDNS_password

To run eDNS.pl every 10 minutes add the line...

03,13,23,33,43,53 * * * * root eDNS.pl -u your_everyDNS_username -p your_everyDNS_password

If you're behind a router there is nothing special to do, the IP address given to everyDNS is the one of the WAN site of the router.

DtDNS also provides a dynamic DNS service. The Perl and Python DNS updaters they provide can be treated the same way as eDNS from EveryDNS. Obviously you have to have Python installed to run the Python scripts.

DNS Records

When using GoDaddy the site used to be available from http://www.brisray.com or http://brisray.com but when I changed to the EveryDNS service I found that http://www.brisray.com was no longer available. I added a CNAME record to the main A Record and the site can now be accessed by both addresses again.

An A (address) record is a DNS database entry that points the domain to the IP address of the server it is run from.

A CNAME (Canonical Name) record is a DNS database entry that points an alias, usually a sub-domain, to the domain listed in the A Record. A sub-domain is simply a part of a larger domain and can be addressed as mysub.brisray.com. The sub-domain may actually be part of the directory structure of the website, using the previous example, website/mysub/.

The A and CNAME records for my site

The A and CNAME records for my site

DNS Primer gives a nice explanation of some of these concepts.

There are lists of both static and dynamic DNS servers to be found at ...

Free Country
Free WebSpace
Google Directory
Oth.net

Fedora Server page 1

This page created 7th May 2005, last modified 26th August 2005


GoStats stats counter