Adding a range of IPs in Linux

In this short post I will show you how you can quickly add a range of IPs on any RedHat based system. When you have to add many IPs to a system this can be quite handy and save a lot of time. Normally when you add a new IP to a network interface in a RedHat based system you create a file ifcfg-eth0:x in /etc/sysconfig/network-scripts/. For example:

/etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
TYPE=Ethernet

Similar to the above example you can create several aliases. But what if you have to add a lot of IPs that are in a range like this? Let’s say that I want to add 100 IPs this way… this is possible, but not very effective, right? RedHat based systems offer a method to bind a range of IPs in a quick way allowing us to eliminate the need to create a lot of files and saving us time doing this.

Create a file /etc/sysconfig/network-scripts/ifcfg-eth0-range0 if this doesn’t exist, or just add to it if you already have it, the following lines:

/etc/sysconfig/network-scripts/ifcfg-eth0-range0
IPADDR_START=192.168.0.100
IPADDR_END=192.168.0.200
CLONENUM_START=2

where: IPADDR_START is the first IP and IPADDR_END is the last IP in the range. CLONENUM_START is the number that will be assigned to the first IP alias interface (eth0:2 in this example).

If you need to add more ranges of IPs then just use a different file for eg. ifcfg-eth0-range1, for each one of the ranges. You need to be careful and use the proper CLONENUM_START to not overwrite other aliases. Once you have configured the range/s of IPs you just need to restart the network service in order to activate it:

# service network restart

Assigning IP range using ifconfig and shell

This is one of the most inefficient ways to get many IP addresses applied to one network interface. Anyways it allows to create as many aliases for the interface as you like so you should create shell script and execute it every time Linux boots.

# touch /path/to/script.sh
# chmod +x /path/to/script.sh
# vi /path/to/script.sh

Now you should add there shell lines which will apply IP addresses, e.g. the following one applies 50 IP addresses to eth0 interface:

for n in {5..55};  do ifconfig eth0:${n} 10.10.10.${n} netmask 255.255.255.0 up; done

If you decide to delete those IPs you can run the following line as a remedy:

 for n in {5..55};  do ifconfig eth0:${n} 0.0.0.0 &> /dev/null; done



source: https://sysadmincorner.wordpress.com/category/linux/networking/
Attachments
There are no attachments for this article.
Related Articles RSS Feed
O’Reilly’s CD bookshelf
Viewed 13151 times since Wed, Jun 27, 2018
Linux: Repeat Command N Times – Bash FOR Loop
Viewed 3171 times since Mon, Feb 18, 2019
perl podstawy
Viewed 2135 times since Mon, May 21, 2018
Utilities to Tidy Up Your Reports
Viewed 16388 times since Wed, May 30, 2018
Tunneling With SSH to Your Destination
Viewed 4587 times since Wed, May 30, 2018
Convert a human readable date to epoch with a shell script on OpenBSD and Mac OS X
Viewed 15315 times since Fri, May 25, 2018
How to get a password from a shell script without echoing - solutions
Viewed 14048 times since Fri, Feb 22, 2019
30 Handy Bash Shell Aliases For Linux / Unix / MacOS
Viewed 5024 times since Thu, Feb 11, 2021
View Config Files Without Comments
Viewed 2434 times since Mon, May 21, 2018
Time conversion using Bash
Viewed 2833 times since Fri, May 25, 2018