Newsgroup: it.comp.os.linux.sys
Titolo: problemino con una subnetmask

Come li blocco sti chinesi?
    inetnum:      61.140.0.0 - 61.143.255.255
    netname:      CHINANET-GD
    descr:        CHINANET Guangdong province network
    descr:        Data Communication Division
    descr:        China Telecom
ovvero come faccio a calcolare la subnet mask avendo il network e il
broad cast addrress?

--> "AG" == Antonio Gallo <a...@ItalianLinuxSociety.it> writes:
AG> inetnum:      61.140.0.0 - 61.143.255.255
AG> ovvero come faccio a calcolare la subnet mask avendo il network e il
AG> broad cast addrress?
61.140.0.0/18
 (aka 255.255.192.0)
Saluti,
Luca Polo.
-- 
Luca...@gest.unipd.it
 --- 
http://www.gest.unipd.it/~jake
----------------------------------------------------------
One Ping to rule them all. One Ping to find them.
One Ping to bring down them all.
And in the darkness crash them.         [The Lord of the Pings]

 Luca Polo.
Ciao prof! ;-)
Ma come si calcola? Il problema non me lo sono mai posto in quanto di
solito il nr di host con cui si ha a che fare e conosciuto :-)
Non si deve fare uno xor tra i due?

 solito il nr di host con cui si ha a che fare e conosciuto :-)
In realtà anche in questo caso...
hai 8 bit dell'ultimo ottetto, 8 bit del terzo ottetto e 2 bit del 
secondo ottetto, tutti assegnati alla stessa subnet.
fanno 8+8+2=18
Quindi la rete è, in CIDR
61.140.0.0/14
ove quel 14=32(bit totali) - 18 (bit degli host)
equivalente a 255.252.0.0
Hola...

Innanzitutto, scusa ma ho  sbagliato la netmask: 
61.140.0.0/14
 (non /18:
avevo  contato i  bit da  destra anziche'  da sinistra...)  e  quindi la
netmask e` 255.252.0.0. Sorry.
--> "AG" == Antonio Gallo <a...@ItalianLinuxSociety.it> writes:
AG> Ma come si calcola? Il problema non me lo sono mai posto in quanto
AG> di solito il nr di host con cui si ha a che fare e conosciuto :-)
Be', basta ragionare in binario e vedere qual e` il prefisso piu` lungo
in comune tra i due estremi:
61.140.  0.  0 = 00111101 10001100 00000000 00000000
61.143.255.255 = 00111101 10001111 11111111 11111111
Si vede che "00111101 100011" e` il "longest prefix match".


 writes:
S> Ahi ahi, prof...
Dagli con 'sto prof... guardate che mi offendo :-).
S> Mi sbagli i conti? :-)
Eh, tutta colpa dell'attuale situazione politica destrorsa italiana che
mi ha fatto contare da destra anziche' da sinistra... :-).


 Si vede che "00111101 100011" e` il "longest prefix match".
Ok, siamo alle solita guerra tra informatici e matematici :-)
In quanto informatico non mi interessa come, voglio sapere se c'e' un
algoritmo che posso implementare per avere un risultato significativo
:-)
Ovviamente scherzo!
Con stima, Antonio



antonio, è una xnor bit a bit!
61.140.  0.  0 = 00111101 10001100 00000000 00000000
61.143.255.255 = 00111101 10001111 11111111 11111111
                 11111111 11111100 00000000 00000000

 antonio, è una xnor bit a bit!
                 ^^^^
non sapevo ci volesse un dado da cucina!
se può tornare utile, ecco il risultato!
debian:~# cat ipchains.save
:input ACCEPT
:forward ACCEPT
:output ACCEPT
-A input -s 
195.225.212.0/22
 -d 
0.0.0.0/0.0.0.0
 -j DENY
-A input -s 
67.0.0.0/13
 -d 
0.0.0.0/0.0.0.0
 -j DENY
-A input -s 
66.201.119.0/27
 -d 
0.0.0.0/0.0.0.0
 -j DENY
-A input -s 
66.250.0.0/16
 -d 
0.0.0.0/0.0.0.0
 -j DENY
-A input -s 
61.140.0.0/14
 -d 
0.0.0.0/0.0.0.0
 -j DENY

:-)
si: apt-get install ipsc.
;)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Just because you're not paranoid, doesn't mean they aren't out to get you.

 -A input -s 
61.140.0.0/14
 -d 
0.0.0.0/0.0.0.0
 -j DENY
sono i tuoi amati amici coreani?

 ;)
cavolo.... l'ultima volta per spiegare i calcoli ad una persona ci ho
messo tre ore.... con questo avrei fatto in un istante, senza spiegargli
un tubo se non il nome del programma da lanciare...

 si: apt-get install ipsc.
Preferisco i conti a mente ;-)

 Ok, siamo alle solita guerra tra informatici e matematici :-)
OK, và vi risolvo io il problema....
Se dovesse wrappare a capo...
Risistematevelo !! (emmicapossofaretuttoio! [cit. Quelo]
I giusti credits a quello che l'ha fatto, non i ricordo proprio chi...
L'ho scaricato da qualche parte.
#! /usr/bin/perl -w
# Description: Take a list of ranges and convert to CIDR.
#
# Execution:
#
#  perl 
range2cidr.pl
#
# Input format: list of ranges, one per line (other lines are ignored)
#
# Example:
#
#  echo '10.0.0.1 - 10.16.255.253' | perl 
range2cidr.pl
#
# Details:
#
# Each range is converted to the minimal list of CIDR blocks.
use strict;
use English;
use IO::Socket;
# convert from IP to number
sub ip2num {
    my ($ip) = @_;
    return unpack("N", inet_aton($ip));
}
# convert from number to IP
sub num2ip {
    my ($num) = @_;
    return inet_ntoa(pack("N", $num));
}
# convert a range to prefixes
sub find_prefixes
{
    my ($lo, $hi) = @_;
    my @prefixes;
    if (($lo == 0) && ($hi == 0xFFFFFFFF)) {
        # 
0.0.0.0/0
 is a special-case, as the loop never exits for it
        push(@prefixes, [ 0, 0 ]);
    } else {
        # extract the prefixes out one at a time
        my $addr = $lo;
        my $bit = 0;
        my $mask = 0;
        while ($addr <= $hi) {
            $mask |= (1 << $bit);
            if (($addr & $mask) || (($addr | $mask) > $hi)) {
                push(@prefixes, [ $addr, (32 - $bit) ]);
                $addr += (1 << $bit);
                $bit = 0;
                $mask = 0;
            } else {
                $bit++;
            }
        }
    }
    return @prefixes;
}
##
## main program begins here
##
while (<>) {
    my ($lo, $hi);
    if (/^\s*(\d+\.\d+\.\d+\.\d+)\s*-\s*(\d+\.\d+\.\d+\.\d+)\s*$/) {
        ($lo, $hi) = (ip2num($1), ip2num($2));
        if (defined($lo) && defined($hi)) {
            foreach my $prefix (find_prefixes($lo, $hi)) {
                print "   ".num2ip($prefix->[0]), "/", $prefix->[1], "\n";
            }
        }
    }
    unless (defined($lo) && defined($hi)) {
        print;
    }
}
[FINE] <--- da non copiare
Max 

 /^Received: from:.*61\.14[0-9]\.*\.*$/
Thoriiiiiiiinnnn
Forse volevi scrivere:
/^Received: from:.*61\.14[0-3]\.*\.*$/ ?????? 
Ehhhhhhh???
mi caschi su ste cose ???
comunque questa è una regexp, mica una subnet mask!
La usi con postfix, mica co altra roba !
Max

 writes:
TO> No, volevo scrivere proprio quello: con gli spammer di solito
TO> ragiono sempre per eccesso, piu' che per difetto
Be', in questo caso ti e` andata bene: dal 61.140.0.0 al 61.147.255.255
e` tutto allocato a CHINANET-Guandong, dal 61.148.0.0 al 61.149.255.255
e` tutta roba di CNCGROUP-Beijing. 
In pratica credo che una grossa parte della rete 61.0.0.0 sia allocata
nell'Est asiatico (Cina, Corea, ecc.).


 nell'Est asiatico (Cina, Corea, ecc.).
...
Scusa potresti indicarmi il link delle tabelle di assegnazione ip (o anche dirmi 
la parola da cercare su google) non mi viene proprio in mente in inglese...
-- 
Assioma di Baskerwill: Se fai retromarcia, qualcuno passera' dietro.
RRB SoHE

 writes:
R> Scusa potresti indicarmi il link delle tabelle di assegnazione ip (o
R> anche dirmi la parola da cercare su google) non mi viene proprio in
R> mente in inglese...
Be', io ho usato whois cercando i vari gruppi di indirizzi, ma credo che
andando  a spulciare  su 
http://www.iana.org/
  e sui  siti dei  vari RIR
(Regional Internet  Registry: IANA, APNIC, LACNIC,  ARIN...) qualcosa si
trovi, anche  se poi  bisogna procedere passo  a passo: lo  IANA assegna
blocchi di IP ai RIR, i quali li gestiscono internamente assegnandoli ai
NIR o  ai LIR  (National/Local I.R.), ecc.,  per cui bisogna  andare sui
rispettivi siti web/whois per "espandere" le informazioni.


 sono i tuoi amati amici coreani?
gente che scassa fuori dall'Italia e siccome sono un .it voglio solo
utenti italiani, chi sta in ferie all'estero manda una cartolina :-P

 si: apt-get install ipsc.
 ci ho provato ad usarlo... ma mi sa che è più facile contare i bit a
 mano!

> si: apt-get install ipsc.
No guarda che io c'è l'ho! Il problema è che funziona "al contrario" !

 #  echo '10.0.0.1 - 10.16.255.253' | perl 
range2cidr.pl
hehehe vedo di integrarlo con whois QUALCOSA | grep
:-P

 /^Received: from:.*61\.14[0-9]\.*\.*$/
Non e' un problema di spam... ma anche di ssh

 chi sta in ferie all'estero manda una cartolina :-P
rotfl :-)