Setting up networking on an ubuntu server
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:212.13.30.94 Bcast:212.13.30.255 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:212.13.30.94 Bcast:212.13.30.255 Mask:255.255.255.0
This generally means that the computer already has an IP address! yay!
Next, try the command
ping google.com
Hopefully, you’ll get back a response saying something along the lines of
PING google.com (64.233.187.99) 56(84) bytes of data 64 bytes from jc-in-f99.google.com (64.233.187.99): 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 208.67.222.222 nameserver 208.67.220.220
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
ifconfig -a
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 212.13.30.94 netmask 255.255.252.0 gateway 212.13.30.1
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)
Tags: eth0, interfaces, networking, server, Ubuntu
April 14th, 2008 at 9:09 pm
[…] post: Setting up networking on an ubuntu server Posted in Web Hosting on Apr 14th, 2008, 2:44 […]
April 14th, 2008 at 9:39 pm
ipconfig is for windows, ifconfig is for Linux. You might want to update that typo on your post
April 15th, 2008 at 12:04 am
resolv.conf is an extremely transient file, especially if you are using DHCP. As described here in the second step, you’d want to add:
prepend domain-name-servers 208.67.222.222,208.67.220.220;
To your /etc/dhcp3/dhclient.conf . Your resolv.conf will get wiped out every time you connect through dhcp, and replaced with the dhcp server’s recommendation. Adding a prepend will put the OpenDNS servers first in your generated resolv.conf . More conveniently, instead of changing all your servers to Open DNS, if you have control of your router, change it to use OpenDNS.
The changes to resolv.conf are necessary for a static IP setup; for DHCP, while you need to make those changes to make the DNS change right away, they need to change dhclient.conf (or your router) to make them permanent.
Overall, good post. Did you see if similar instructions were on help.ubuntu.com, and add/merge your instructions?
April 15th, 2008 at 1:35 am
If you’re not familiar enough with vi to use it instead of nano, you probably shouldn’t attempt this on your own.
April 15th, 2008 at 8:10 am
Typo fix:
nameserver : 208.67.222.222
note: the 3rd block is 222
April 15th, 2008 at 8:59 am
Thanks for the pointers. For some reason wordpress decided to cut the last digit off of the end of a few lines
and iponfig - meh - how I didn’t spot that I don’t know.
With regards to /etc/resolv.conf. while I do understand that this is transient, reading my instructions,you’ll find that I only suggest editing it when it doesn’t auto-configure - though its a good point.
tucker. nano comes installed by default in ubuntu. I was trying to write this tutorial to make it easy for people.
Anyway, real programmers use cat