During a default install of CentOS it will try to either automatically obtain an IP address using DHCP, or it wont even set up the network interface automatically. While that may be fine for most desktop users, if you are wanting to set up a server, the chances are you will be wanting it to always have the same IP address.
There are two options for ensuring you get/use the same IP address at every boot. You could set up a IP address reservation on the DHCP server based on the hardware/mac address of the network interface, or alternativly, set the operating system to use a static IP address. If for whatever reason you dont want to go down the path of setting a DHCP reservation (you may not have access to the DHCP server; unsure how to set it up; etc), the only option is to set a static IP address on the PC itself.
The following steps will guide you through setting up your computer to use a static IP address on CentOS.
Assuming the network interface is supported and detected under CentOS, you will find that the configuration files required to set the IP address can be found under /etc/sysconfig/network-scripts.
The files to look for are ifcfg-eth# where # is the network interface number, starting from 0.
This example will assume that you want to set up the static IP address on the first network interface.
Open up the /etc/sysconfig/network-scripts/ifcfg-eth0 file in your favorite editor. This guide will be using the “vi” editor, but you can use “nano” or another editor.
Make sure you are logged in as “root”, or a user with root privileges.
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
You should see the lines similar to the following in the editor.
DEVICE="eth0" HWADDR="00:AA:BB:CC:DD:EE" NM_CONTROLLED="yes" ONBOOT="no"
Most of the lines in this file will be changing, so your best option is to remove all the lines except the first one, and copy the example format from the example below.
If you dont want to delete the lines, simply comment them out. This allows you to change it back easily at a later date if you want to. The # character at the beginning of the line indicates that it is commented out, and will be ignored.
Make sure you change the relevant settings to suit your network.
DEVICE="eth0" #HWADDR="00:AA:BB:CC:DD:EE" #NM_CONTROLLED="yes" #ONBOOT="no" NM_CONTROLLED="no" ONBOOT="yes" BOOTPROTO="static" IPADDR=192.168.0.10 NETMASK=255.255.255.0 GATEWAY=192.168.0.1
If you are unsure what settings should go in this file, you can always run the ‘ifconfig’ command, which will output the current IP address settings obtained via DHCP (if DHCP is set up). The default gateway address can be obtained by using the ‘route’ command.
Once you have finished with the changes to the file, save and quit the editor.
You will also need to set up the DNS nameserver settings manually. These are stored in the /etc/resolv.conf file.
Open this file in your editor.
# vi /etc/resolv.conf
you will want at least 1 nameserver set up in this file. If one already exists, and is valid, great. If not, add one or more nameserver records in the format below.
nameserver 192.168.0.1
Depending on your setup, this could be your router’s IP, your ISP’s DNS server IP, or a 3rd party’s DNS server, such as Google’s (8.8.8.8 and 8.8.4.4), or OpenDNS.
Save and exit the editor.
To activate the changes you will need to reboot the PC, or simply restart networking (recommended).
# /etc/init.d/network restart
or
# service network restart
Sample output:
# /etc/init.d/network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ]
Your PC should now retain its IP address across reboots, or even when a DHCP server is not working. Use the ‘ifconfig’ command to confirm the IP address has been updated successfully.