Domů > Užitečné bash příkazy a scripty > Převod rozsahu IP adres na parametr IP adresy

Převod rozsahu IP adres na parametr IP adresy

Řešil jsem problém jak na serveru globálně zakázat např. traffik z Číny.
Narazil jsem ovšem na problém kde vzít aktuální seznam všech IP adres které má Čína přidělené. Dosud jsem používal tento seznam. Ovšem nastal problém že tento seznam již nebyl dlouho aktualizován, proto jsem hledal jiné řešení a nalezl ho.

Na této adrese si mohu vygenerovat celé aktuální rozsahy IP adres pro jakýkoliv stát ve formátu např.:

58.14.0.0 - 58.25.255.255
58.30.0.0 - 58.63.255.255
58.66.0.0 - 58.67.255.255
58.68.128.0 - 58.68.255.255
.. atd.

Do Firewallu však potřebuji IP adresu ve zkráceném formátu např.: 58.14.0.0/15.
Vytvořil jsem si tedy script který převede hromadně všechny rozsahy IP adres na jejich zkrácený tvar.

mkdir -p /home/src/; cd /home/src/
wget http://jodies.de/ipcalc-archive/ipcalc-0.41.tar.gz
tar xzvf ipcalc-0.41.tar.gz
cd /home/src/ipcalc-0.41
touch prevod ips
chmod +x prevod

Do souboru prevod jsem vložil:

#!/bin/bash

clear
replace ' - ' '-' -- ips > /dev/null
LINES=`cat ips`
for LINE in ${LINES[@]}; do
pos=`expr index "$LINE" '-'`
ip2="${LINE:pos-1}"
ip1=${LINE/$ip2/}
ip2=${ip2/\-/}
./ipcalc -r ${ip1} ${ip2} | grep '/'
done

Nyní jsem už jen vložil IP rozsahy vygenerované na této adrese do souboru ips a spustil script:

./prevod

Voilá.. dostal jsem seznam IP rozsahů ve zkrácené formě, které jsem následně vložil do firewallu:

/sbin/iptables -A INPUT -s 58.186.0.0/15 -j DROP

admin Užitečné bash příkazy a scripty

  1. Kykina
    | #1

    Fajn skriptík, akorát proč znovu vynalézat kolo… na stránce je možnost nechat si adresy vygenerovat rovnou ve formatu A.B.C.D/NM

    viz:
    The IP address ranges can be displayed in two formats i.e. :

    46.36.198.121 – 46.36.198.125

    or CIDR format
    46.36.198.121/32
    46.36.198.122/31
    46.36.198.124/31

  1. Žádné zpětné odkazy