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
How to sort IP addresses in Linux
Viewed 3424 times since Thu, May 24, 2018
Linux / UNIX: Convert Epoch Seconds To the Current Time
Viewed 2736 times since Fri, May 25, 2018
30 Examples for Awk Command in Text Processing
Viewed 14177 times since Sat, Nov 24, 2018
Convert a human readable date to epoch with a shell script on OpenBSD and Mac OS X
Viewed 14420 times since Fri, May 25, 2018
Script HW/SW AIX
Viewed 8710 times since Mon, Jun 4, 2018
Epoch & Unix Timestamp Conversion Tools
Viewed 45531 times since Fri, Jun 22, 2018
HowTo: Clear BASH History
Viewed 1661 times since Mon, Feb 18, 2019
perl podstawy
Viewed 1779 times since Mon, May 21, 2018
awk printf
Viewed 14347 times since Wed, Aug 19, 2020
Linux: Repeat Command N Times – Bash FOR Loop
Viewed 2606 times since Mon, Feb 18, 2019