NetAdminTools.com
 
SignalQ Sites:
NetAdminTools - Coprolite - SpotBridge - NAW
RoboCoop - AreWeDown - SolarPower - SysAdminTools
Xfig - Gold Loaf - GeekPapa - FixGMC - FixRambler
Categories:
GNU/Linux | Homebrew designs | Perl | Ruby | Administration | Backup/Recovery | Bugs/Fixes | Certification | Database | Email | File/Print | Hardware | Information Grab Bag | Interoperability | GNU/Linux ABCs | Monitoring | Name Resolution | Network Services | Networking | Remote Control | Security | Desktop | Web | BSD | Solaris | GIAGD | ERP | REALbasic

Last 30 Days | Last 60 Days | Last 90 Days | All Articles | GNU/Linux Reference OS Build | MCJ How-to | MCJ Presentation Config | Keywords | RSS



Categories:
·GNU/Linux
·Homebrew designs
·Perl
·Ruby
·Administration
·Backup/Recovery
·Bugs/Fixes
·Certification
·Database
·Email
·File/Print
·Hardware
·Information Grab Bag
·Interoperability
·GNU/Linux ABCs
·Monitoring
·Name Resolution
·Network Services
·Networking
·Remote Control
·Security
·Desktop
·Web
·BSD
·Solaris
·GIAGD
·ERP
·REALbasic
·All Categories


Adding an IP Address to an Interface With Red Hat and CentOS
Topic:Networking   Date: 2006-01-11
Printer Friendly: Print

spacerspacer
<<  <   >  >>

Subject

There is some apparent voodoo on what, exactly, is needed to add an IP address to an interface using Red Hat style scripts. We have tested this on Red Hat Enterprise 3 and CentOS 4, and it appears that the convention is quite forgiving. This makes sense, really, since if you hose up these interfaces, well, you can't administer the machine remotely. Let's look at our current interfaces on eth0:

 
[root@srv-1 usr-1]# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.1  Bcast:10.50.100.255  Mask:255.255.255.0
inet6 addr: fe80::260:97ff:fe94:5269/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:381439 errors:0 dropped:0 overruns:0 frame:0
TX packets:454464 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:233910853 (223.0 MiB)  TX bytes:303099507 (289.0 MiB)
Interrupt:5 Base address:0xd400 
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:1977 errors:0 dropped:0 overruns:0 frame:0
TX packets:1977 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:107244 (104.7 KiB)  TX bytes:107244 (104.7 KiB)

We have one IP address on eth0. This is configured in /etc/sysconfig/network-scripts:

[root@srv-1 usr-1]# cd /etc/sysconfig/network-scripts
[root@srv-1 network-scripts]# ls ifcfg-eth0*
ifcfg-eth0
[root@srv-1 network-scripts]# cat ifcfg-eth0*
DEVICE=eth0
BOOTPROTO=static
BROADCAST=10.50.100.255
HWADDR=00:60:97:94:52:69
IPADDR=10.50.100.1
NETMASK=255.255.255.0
NETWORK=10.50.100.0
ONBOOT=yes
TYPE=Ethernet

Now, the hardware address will vary, certainly, and other entries may or may not be on your system. There is a lot of variation here. The safest way is to copy the config file for the interface you want to add the IP address to, and then edit that file. It really doesn't matter what you call the file. We will standardize on ifcfg-eth0:1 later in the article, and believe this is a good naming scheme; however, we can also call it ifcfg-eth0-blahsecond:

[root@srv-1 network-scripts]# cp ifcfg-eth0* ifcfg-eth0-blahsecond
[root@srv-1 network-scripts]# vi ifcfg-eth0-blahsecond
[root@srv-1 network-scripts]# cat ifcfg-eth0-blahsecond
DEVICE=eth0:blahsecond
BOOTPROTO=static
BROADCAST=10.50.100.255
HWADDR=00:60:97:94:52:69
IPADDR=10.50.100.2
NETMASK=255.255.255.0
NETWORK=10.50.100.0
ONBOOT=yes
TYPE=Ethernet
[root@srv-1 network-scripts]# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Setting network parameters:                                [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface eth0-blahsecond:                     [  OK  ]
[root@srv-1 network-scripts]# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.1  Bcast:10.50.100.255  Mask:255.255.255.0
inet6 addr: fe80::260:97ff:fe94:5269/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:383046 errors:0 dropped:0 overruns:0 frame:0
TX packets:456302 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:234100139 (223.2 MiB)  TX bytes:304511869 (290.4 MiB)
Interrupt:5 Base address:0xd400 
eth0:blah Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.2  Bcast:10.50.100.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Interrupt:5 Base address:0xd400 
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:1977 errors:0 dropped:0 overruns:0 frame:0
TX packets:1977 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:107244 (104.7 KiB)  TX bytes:107244 (104.7 KiB)
[root@srv-1 network-scripts]#

The colon after eth0 on the interface name does seem to be required with this CentOS 4 box. Without it, the startup script seems to hang. Also, notice how the stuff after the : is truncated to 4 characters. Let's change the device name to something more standard:

 
[root@srv-1 network-scripts]# vi ifcfg-eth0-blahsecond
[root@srv-1 network-scripts]# cat ifcfg-eth0-blahsecond
DEVICE=eth0:1
BOOTPROTO=static
BROADCAST=10.50.100.255
HWADDR=00:60:97:94:52:69
IPADDR=10.50.100.2
NETMASK=255.255.255.0
NETWORK=10.50.100.0
ONBOOT=yes
TYPE=Ethernet
[root@srv-1 network-scripts]# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Setting network parameters:                                [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface eth0-blahsecond:                     [  OK  ]
[root@srv-1 network-scripts]# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.1  Bcast:10.50.100.255  Mask:255.255.255.0
inet6 addr: fe80::260:97ff:fe94:5269/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:384060 errors:0 dropped:0 overruns:0 frame:0
TX packets:457491 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:234243015 (223.3 MiB)  TX bytes:305215295 (291.0 MiB)
Interrupt:5 Base address:0xd400 
eth0:1    Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.2  Bcast:10.50.100.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Interrupt:5 Base address:0xd400 
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:1977 errors:0 dropped:0 overruns:0 frame:0
TX packets:1977 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:107244 (104.7 KiB)  TX bytes:107244 (104.7 KiB)
[root@srv-1 network-scripts]# 

That looks more standard, and will avoid possible problems in the future because this is how everybody does it for the most part. Notice how it is not true that the file name has to match the interface name? Let's make it match, though:

[root@srv-1 network-scripts]# mv  ifcfg-eth0-blahsecond ifcfg-eth0:1
[root@srv-1 network-scripts]# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Setting network parameters:                                [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
[root@srv-1 network-scripts]# /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.1  Bcast:10.50.100.255  Mask:255.255.255.0
inet6 addr: fe80::260:97ff:fe94:5269/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:384676 errors:0 dropped:0 overruns:0 frame:0
TX packets:458326 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:234326065 (223.4 MiB)  TX bytes:305924137 (291.7 MiB)
Interrupt:5 Base address:0xd400 
eth0:1    Link encap:Ethernet  HWaddr 00:60:97:94:52:69  
inet addr:10.50.100.2  Bcast:10.50.100.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
Interrupt:5 Base address:0xd400 
lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:1977 errors:0 dropped:0 overruns:0 frame:0
TX packets:1977 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:107244 (104.7 KiB)  TX bytes:107244 (104.7 KiB)
[root@srv-1 network-scripts]#

Now we have the typical config, it works fine, and most anybody will know what you are doing and how. In summary, to add an IP, find the highest device number on the interface using ifconfig, and add another IP using that device name in a file named in the same way. Fairly easy. Do make a copy of anything you change, of course, and do be very careful you don't make the machine unavailable over the network. If at all possible, do this from a console or serial terminal.


People:
Places:
Things:
Times:





Please read our Terms of Use and our Privacy Policy
Microsoft, Windows, Windows XP, Windows 2003, Windows 2000, and NT are either trademarks or registered trademarks of Microsoft Corporation. NetAdminTools.com is not affiliated with Microsoft Corporation. Linux is a registered trademark of Linus Torvalds, and refers to the Linux kernel. The operating system of most distributions that contain the Linux kernel is GNU/Linux. All logos and trademarks in this site are property of their respective owner. Copyright 1997-2010 NetAdminTools.com