Due to the fact that my previous VPS was well out of date (Ubuntu Intrepid!!!) – I’m currently in the process of moving everything to a new server.
I’ve had lots of fun re-setting up my email – and it’s now very shiny and easy for me to use (I’ll be writing a tutorial at some point in the near future)
For all those who can, I’d urge you to pick up a copy of Linux Format tomorrow.
A couple of months ago, I pitched an article to the editor of Linux Format and it was accepted. Tomorrow, the magazine will be on the shelf. While I’ve already seen the PDF for the article, I’m going to be up early to make sure I can get my hands on the physical copy. For some reason, it won’t seem real until I can run the paper through my fingers and smell the ink.
Here’s a sneak preview:-
Way back in the early days of dial-up, the internet mostly contained library catalogues, military secrets, and students’ Dungeons and Dragons spec sheets. Now there are websites for people, their pets, their friends and family, and their businesses. However, while most people are happy to use a free hosting provider, or to pay a company to host their websites for them, the more dedicated web master tends to plump up for a dedicated server, or a Virtual Private Server (VPS).
Running your own server means that you have to be aware of the multitude of potential security issues you’re exposed to on the internet, though. These days, most home computers have a firewall in place, or connect through a router that can protect them from the dangers lurking on the web. If you own a server, you’ll still need a firewall, but there’s much more you can do to be safe online and we’ll show you how.
I hope that anyone who reads the article in full will find it useful, and please, do send me feedback if you’ve read it!
The big question now is, what do I pitch for my next article?
Ok, by popular demand (aka ompaul) I’ve decided to do a mini-howto on setting up networking on an ubuntu server, for those who are new to it.
In Ubuntu itself, when you install the desktop version, you get a nifty little tool called “Network Manager” (you may have noticed the icon, espescially if you have wireless) which pretty much does everything for you. However, if you’re using the server, without a GUI then this isn’t generaly available.
So, where to start?
It really depends on your network setup, you need to know a few things about your network before you start this.
The first and most important question you need to find out is whether there is a DHCP server on your network that will assign you an IP address. If so, your networking setup is very very simple, so I’ll start off with that.
Networking with an available DHCP server
When you have a DHCP server available on your network, things are made a lot simpler. Cut short, a DHCP server sits on your network and hands out configurations to the different computers that ask for them. I won’t go into detail, but, generally you’ll find these on small home networks (your router will generally work as a DHCP server, which is why you (usually) magically find your way onto the internet when you plug yourself into a network with a router on it)
First of all, find out whether you actually already have an internet connection. I’ll assume for now that you have a keyboard and monitor hooked up to the computer you’re setting up as a server, and have logged in as a user with sudo rights.
Type in the command “ifconfig” (without the quotes) and you should hopefully see something like this:-
mez@stupor:~$ ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:7F:AC:B2 inet addr:184.108.40.206 Bcast:220.127.116.11 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3576458 errors:0 dropped:0 overruns:0 frame:0 TX packets:1886783 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:836607596 (797.8 MB) TX bytes:291514569 (278.0 MB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 RX packets:73611 errors:0 dropped:0 overruns:0 frame:0 TX packets:73611 errors:0 dropped:0 overruns:0 carrier:0 UP LOOPBACK RUNNING MTU:16436 Metric:1 collisions:0 txqueuelen:0 RX bytes:15252378 (14.5 MB) TX bytes:15252378 (14.5 MB)
The important bit we see here is the block of text starting with “eth0″ and espescially the line
inet addr:18.104.22.168 Bcast:22.214.171.124 Mask:255.255.255.0
This generally means that the computer already has an IP address! yay!
Next, try the command
Hopefully, you’ll get back a response saying something along the lines of
PING google.com (126.96.36.199) 56(84) bytes of data 64 bytes from jc-in-f99.google.com (188.8.131.52): icmp_seq=1 ttl=245 time=100 ms
If so, you have a working internet connection! Go you! you can now start using your computer on the internet (though the IP address given above might only be accessible from an internal network, depending on your setup – going into howto get this IP available on the internet proper is beyond the scope of this blog post)
If not, you’ll get one of two errors, either a “no route to host” or a “cannot resolve google.com”.
The first issue is a complex one, which again, is beyond the scope of this article (though feel free to email me to ask questions – or catch me on IRC – I will *try* to answer them)
The second one generally means that you do not have a nameserver setup.
Open DNS is a project that provides Accessible DNS resolvers for the whole world to use. More information can be found out about OpenDNS here
For now however, lets open up your DNS resolver settings
sudo nano /etc/resolv.conf
This file should be edited to contain the following lines only
nameserver 184.108.40.206 nameserver 220.127.116.11
Hit Ctrl + O then enter, then Ctrl + X to get back to your command prompt.
Try pinging google again, and hopefully it should work. If not, something went wrong somewhere, again, try emailing me or poking me on IRC.
So, what if you don’t have an IP address?
Well, assuming that you DO have a DHCP server running on your network, lets first of all check that we have a working interface on our system
You should hopefully see a couple of lines here, one starting with “lo” and another starting with “eth0″ (or similar) – remember this name
Now, open up your /etc/network/interfaces file (sudo nano /etc/network/interfaces) and make sure it contains the following
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Assuming that it does, we should be able to do the following
sudo ifup eth0
Which will (hopefully) bring the interface up. Go back a step if you cannot resolve google.com when trying to ping it. You might have to setup a resolver (though your DHCP server should provide these details for you!)
Voila! hopefully you now have a working network interface
Networking without an available DHCP server
Now, here is where things get more interesting. To be able to setup a network without having a DHCP server readily available, you need to know the following
- The IP address that will be assigned to your host
- The netmask for the IP addresses being used
- The default gateway’s IP address (usually the IP address of your router)
It may differ how you get this information, however, I cannot tell you how to do so, I’d ask your network administrator if I were you (or your hosting provider)
So, I’m assuming here that you have the above details, are logged in at your machine and ready to go
I’ll only be brief about this setup, as a lot of the details are covered above.
First of all, make sure that your interface is down
sudo ifdown eth0
next, edit your /etc/network interfaces, replacing the information between < and > with
the information from above
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address <IP Address> netmask <Network Mask> gateway <Default Gateway>
So, you should have something like this
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 18.104.22.168 netmask 255.255.252.0 gateway 22.214.171.124
Now head back to your console, and try
sudo ifup eth0
To bring your interface up. Hopefully, now, everything should be working (if not, go have a look at the DNS stuff above)
If you have any questions, feel free to leave me a comment here, or email me (martin AT sourceguru DOT net) and I will try and answer, though I make no guarantees!
Thus concludes Mez’s basic guide to server networking on ubuntu – I’ll try and add some more interesting stuff in a later blog post (IPv6, IP Aliases, etc etc)