Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sta obuhvata ova wildcard maska?

[es] :: Enterprise Networking :: sta obuhvata ova wildcard maska?

[ Pregleda: 817 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tomislav91

Član broj: 206601
Poruke: 316
82.117.203.*



+1 Profil

icon sta obuhvata ova wildcard maska?18.12.2020. u 22:49 - pre 40 meseci
ako imamo jednu extended access listu sa sadrzajem (bez permit any any na kraju)
Code:
10 permit ip any 192.168.22.0 0.0.0.255
    20 deny ip any 192.168.0.0 0.0.128.255


ovde dozvoljavamo opsegu 22.0 ali sta branimo ovde? ova wildcard mi je nepoznata..


life is the one,take care of them!

http://hardware-software.serbianforum.info/
 
Odgovor na temu

markovm
Srbija

Član broj: 11886
Poruke: 207
*.dynamic.isp.telekom.rs.



+14 Profil

icon Re: sta obuhvata ova wildcard maska?19.12.2020. u 10:44 - pre 40 meseci
Ovo nije bas tipicna maska - pre ce biti da je je u pitanju greska i da je vrednost 127 u trecem oktetu, pa bi branila sve mreze <=127 u trecem oktetu.

Ovako, ova kombinacija mreze i maske brani sve mreze oblika 192.168.128.X i 192.168.0.X.

Poz,
Milenko.


...jer tako smo u mogućnosti.
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 802



+634 Profil

icon Re: sta obuhvata ova wildcard maska?11.01.2021. u 10:24 - pre 39 meseci
Zapravo, u tvom slucaju linija 20 je cist visak, jer svaka access lista podrazumeva implicitno pravilo "deny ip any any" na svom kraju.

Inace, kao sto je Milenko to objasnio, 192.168.0.0 / 0.0.128.255 oznacava opsege 192.168.0.0/24 + 192.168.128.0/24. Te takovane "suplje" netmaske nemaju nikakvog smisla vec punih 35 godina. Pre toga, neki IBM mainframe-ovi su koristili mrezne adrese tipa 10.0.1.0 / 0.255.0.255, ali te makine su odavno u starom gvozdju ...
 
Odgovor na temu

B3R1
Berislav Todorovic
NL

Član broj: 224915
Poruke: 802



+634 Profil

icon Re: sta obuhvata ova wildcard maska?08.05.2021. u 10:48 - pre 35 meseci
Da ozivim malo ovu temu ... nedavno sam naleteo na musteriju koji u svojoj Cisco konfiguraciji ima bas ovakve nezgodne netmaske ... i to ogromne liste pune takvi stvari - npr.:
Code:

ip access-list standard ACL-CUST-RANGES
 permit 10.192.64.0 0.15.63.255
 ...

Posto vecina modernih (non-Cisco) rutera podrzava uglavnom samo lepe CIDR blokove ovo zahteva bas mukotrpan rad - recimo ova gore lista postaje:
Code:

10.192.64.0/18, 10.193.64.0/18, 10.194.64.0/18, 10.195.64.0/18, 10.196.64.0/18, 10.197.64.0/18,
10.198.64.0/18, 10.199.64.0/18, 10.200.64.0/18, 10.201.64.0/18, 10.202.64.0/18, 10.203.64.0/18,
10.204.64.0/18, 10.205.64.0/18, 10.206.64.0/18, 10.207.64.0/18

Posto sam pretrazio sve po netu da nadjem neku skriptu/modul da mi ovo resi - najpre Python modul netaddr, pa ipaddr, pa jos 2-3 slicna ... nijedan nije imao resenje za ovakve probleme. Zavrnuo sam rukave i napravio nesto "domace". I koliko vidim lepo radi, za vecinu normalnih slucajeva (ipak niko danas nece koristiti sulude netmaske poput 0.254.254.254 koje bi - priznajem - razbile ovu skriptu dole, jer je algoritam O(2**N)). Otkud znam, verovatno moze da se napravi i bolje ako se koriste neke naprednije strukture podataka, ali posto ja nisam developer po struci meni ovo dole lepo radi. Koristi se vrlo retko, jednokratno ... pa i ako naleti neka nezgodna netmaska nije problem sacekati da komp ovo sazvace.

Ako nekome ikada zatreba nesto ovako - evo koda:
Code (python):

#!/usr/bin/python

import sys
from netaddr import *
from itertools import combinations

#
# non_cidr() - Convert non-CIDR Cisco ACL (e.g. 172.0.0.0/0.15.63.255) into a CIDR range.
#              Can easily be modified to handle "classic" netmasks (e.g. 255.240.192.0).
#
def non_cidr(ip, mask):
    ip_range = IPSet()
    ip_range_hosts = set()

    bin_ip = int(IPAddress(ip))         # int() of the IP address (e.g. 10.0.0.1 == 167772161)
    bin_mask = int(IPAddress(mask))     # int() of the Cisco ACL mask (e.g 0.0.15.255 == 4095)
    if (not bin_mask):
        ip_range.add(IPNetwork(ip + '/32'))
        return ip_range

    if (bin_ip & bin_mask):
        sys.stderr.write ('non_cidr(): Error - netmask bits overlap with the network address\n')
        return -1

    try:
        # - Have we got a nice CIDR-like range alraedy? Then waste no more time ...
        ip_range.add(IPNetwork(ip + '/' + mask))

    except:
        # - Not CIDR-able? Well, we'll have some tough time then ...

        bit = 1                             # Bit-iterator, used to shift left ...
        pos = []                            # Keeps track of bit positions where bit value is 1

        # A bit of background story here: the cisco ACL netmask is a string of bits.
        # Bit value of 1 indicates a bit position in the IP network which changes.
        # For instance - acl '10.0.0.0 0.0.0.3' means last 2 bits (11) change,
        # so IP addresses matching the acl are: 10.0.0.0, 10.0.0.1, 10.0.0.2, 10.0.0.3
        # The last 2 bits are all possible permutations of two bits (00, 01, 10, 11).
        #
        # If the ACL is '10.0.0.22 0.0.192.0', then the first two bits of byte 3 change,
        # giving the adddresses: 10.0.0.22, 10.0.64.22, 10.0.128.22, 10.0.192.22.
        #
        # So, we first determine all bit positions (bp) in the netmask being 1 and
        # we put the 2**bp values into the list ones. For instance:
        #
        # Subnet mask: 0.1.1.255 => ones = [1, 2, 4, 8, 16, 32, 64, 128, 256, 65536]
        # We need to iterate bits on those positions between 0 and 1.
        # Mathematically, this gives all combinations of numbers in this list.
        #
        # However, we're getting an O(2**N) algorithm, where N is the number of ones
        # in the bit string ... which is slow like a snail!
        # OTOH, most engineers won't ever use netmasks like 170.170.170.170, but rather
        # things like: 0.0.252.255, 0.252.255.255 ... so the idea is: split this mask
        # to a CIDR-able part and non-CIDR-able part and remember the border position
        # of those partitions with the variable 'gap'. Then, iterate only the part of
        # the netmask left to the gap, while everything right from the gap will use
        # the standard 'netaddr' module functions to generate the CIDR range.
        # That mehtod speeds up the process dramatically for most use cases!
        #
        # That mehtod speeds up the process dramatically for most realistic use cases,
        # since we reduce N to the amount of "ones" left to the gap position only.

        gap = -1
        for i in range (0,32):
            if (bit & bin_mask):
                pos.append(bit)
            elif (gap < 0):
                gap = i
            bit <<= 1
        pos=pos[gap:]
        # - pos = e.g. [1, 256, 65536] <=> 0.1.1.1
        for i in range(0,len(pos)+1):
            for j in combinations(pos, i):
                bitmask = sum(j)
                ip_range.add(IPNetwork(str(IPAddress(int(IPAddress(ip))|bitmask))+'/'+str(32-gap)))

    # - Always return ip_range as IPSet()
    return ip_range

### - MAIN

all_addrs = IPSet()
for line in sys.stdin.readlines():
    ip,mask = line.strip().replace('permit','').replace('deny','').split()
    all_addrs |= non_cidr(ip,mask)

for i in all_addrs.iter_cidrs():
    print str(i)
 


Primer:

$ ./acl2ip.py
10.224.64.0 0.7.63.255
<Ctrl-D>
10.224.64.0/18
10.225.64.0/18
10.226.64.0/18
10.227.64.0/18
10.228.64.0/18
10.229.64.0/18
10.230.64.0/18
10.231.64.0/18
$


[Ovu poruku je menjao B3R1 dana 08.05.2021. u 12:10 GMT+1]
 
Odgovor na temu

[es] :: Enterprise Networking :: sta obuhvata ova wildcard maska?

[ Pregleda: 817 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.