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
Display basic information about Physical Volumes
Viewed 3324 times since Sun, Jun 3, 2018
Bash: String Length – How To Find Out
Viewed 2139 times since Mon, Feb 18, 2019
“Yes/No” in Bash Script – Prompt for Confirmation
Viewed 31486 times since Mon, Feb 18, 2019
Tunneling With SSH to Your Destination
Viewed 4208 times since Wed, May 30, 2018
Convert a human readable date to epoch with a shell script on OpenBSD and Mac OS X
Viewed 14977 times since Fri, May 25, 2018
The Ultimate Bash Array Tutorial with 15 Examples
Viewed 13189 times since Sun, Sep 30, 2018
Usuwanie spacji z zmiennych w bash
Viewed 2388 times since Tue, May 22, 2018
Linux / UNIX: Convert Epoch Seconds To the Current Time
Viewed 2971 times since Fri, May 25, 2018
Utilities to Tidy Up Your Reports
Viewed 16187 times since Wed, May 30, 2018
O’Reilly’s CD bookshelf
Viewed 12343 times since Wed, Jun 27, 2018