TCP/IP Networking in Linux without a GUI

There are a few major Linux distributions these days, Centos/RHES, Ubuntu, and Debian. They all differ slightly in how they natively handle IP configuration.

For starters, lets first understand the universal way to IP config ANY Linux OS (this also applies to BSD Unix and Solaris). This is done with the ifconfig and route command. ifconfig places an IP address on an interface and route places the default gateway in the routing table. When using ifconfig you just need to know the interface name, if you dont know the interface name, simple type the command:

ifconfig -a

This will display all the connected interfaces, so if you have two NICs on your server it may list an eth0 and eth1. For our example, lets assume we are connecting a Cat5 cable to eth0 and we want to configure the following network setup:

IP Address: 200.50.100.5
Netmask: 255.255.255.0
Default Gateway: 200.50.100.1

The IP configuration is handled by the following command:

ifconfig eth0 200.50.100.5 netmask 255.255.255.0 up

To add the default gateway, we use the following command:

route add default gw 200.50.100.1

Obviously, if you reboot the system these settings will be lost. So now lets look at how to manually config the IP settings for bootup. Both Debian and Ubuntu use the same setup, it involves editing the interfaces file. CentOS/RHES is a bit different, we’ll cover that one last.

For Ubuntu/Debian, edit the file /etc/network/interfaces and add the following lines:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 200.50.100.5
netmask 255.255.255.0
network 200.50.100.0
broadcast 200.50.100.255
gateway 200.50.100.1

The broadcast and network entries are technically not needed, but you might as well add them. After you save this file, use the ifup command to activate and bring up the eth0 interface:

ifup eth0

Finally, make sure you edit /etc/resolv.conf and add your DNS resolvers, the syntax is as follows:

nameserver 8.8.8.8
nameserver 4.4.4.2

Lets take a look at Centos/RHES and how they configure IP networking. Instead of using a singular config file, each interface has its own file located in /etc/sysconfig/network-scripts and the file name format is ifcfg-INT where INT is the name of your interface. In our example, our interface is eth0, so the file we will be editing is /etc/sysconfig/network-scripts/ifcfg-eth0 and the contents of that file is as below:

DEVICE=eth0
BOOTPROTO=static
BROADCAST=200.5.100.255
HWADDR=00:13:72:65:B0:AD
IPADDR=200.50.100.5
NETMASK=255.255.255.0
NETWORK=200.50.100.0
ONBOOT=yes

Again, some of the above lines are not required, HWADDR, NETWORK, and BROADCAST are not required but definitely add them if you know them. The HWADDR is the interfaces MAC Address, which you can find out by typing “ifconfig eth0″. The default gateway setting in CentOS/RHES is handled in a separate file. Edit the file /etc/sysconfig/network and add the following lines:

NETWORKING=yes
HOSTNAME=foobar.domain.com
GATEWAY=200.50.100.1

Once the files are edited, you again run the command “ifup eth0″ to bring up the interface. The default gateway and hostname settings will be active on reboot, otherwise you have to restart networking for those changes to take effect, this is done by running:

/etc/init.d/network restart

Total Views: 1840 ,