Iptabili e dichiarazioni condizionali. È ansible?

Ho provato una ricerca ma non sono riuscito, nel caso mi dispiace e apprezzerò il reindirizzamento.

Ho avuto questo problema in mente: un computer con MAC address M sta inviando pacchetti tramite un router openwrt (o un sistema basato su Linux) e vorrei, solo per provare la possibilità, di passare attraverso un pacchetto da M ma il pacchetto immediatamente dopo essere sceso, poi accettato di nuovo, poi abbandonato e così via.

Quindi, se il computer con mac M invia 20 pacchetti, passerà solo 10, gli altri 10 saranno eliminati. In modo verboso il risultato desiderato è: accettare, abbandonare, accettare, abbandonare, accettare, abbandonare, accettare, abbandonare, ecc …

Una spiegazione pseudocode

condition=ACCEPT for each packet { if ( packet_is_sent_from_adapter_with_mac_M ) { if (condition == ACCEPT) { accept_packet condition=DROP } else { drop_packet condition=ACCEPT } } } 

È ansible? Dopo googling un po 'sembra che iptables non supporti alcuna dichiarazione condizionale o scripting.

E se è ansible, che dire di una condizione generale "drop X pacchetti consecutivi dopo Y accetta consecutivamente"?

addition1 : La domanda in generale è "controllo del stream" non è consentito in iptables? o meglio, poiché le decisioni condizionate sono basate su uno stato ( condizione nello pseudocode), come possiamo salvare lo stato relativo a una certa condizione in iptables e fare qualcosa a verificare questo stato?

addition2 : Nei commenti sono suggeriti strumenti aggiuntivi (tc) per get il controllo del stream (vale a dire se dichiarazioni, loops, ecc.), si sentono liberi di suggerire combinazioni (forse con un po 'di spiegazione). Grazie!

  • Il servizio non è in grado di connettersi a sé utilizzando il problema pubblico di IP, NAT
  • Quali sono queste regole iptables?
  • Come modificare la dimensione della window TCP da iptables?
  • iptables 1.4 e FTP passivi sulla port personalizzata
  • È ansible creare un block di codice iptables?
  • nf_conntrack: tabella piena, pacchetto di rilascio
  • Ponte di networking in dom0 non può ping domU
  • IPTables Match per gli indirizzi IP di hashing
  • One Solution collect form web for “Iptabili e dichiarazioni condizionali. È ansible?”

    Per le tue esigenze, statistic estensione statistic iptables potrebbe funzionare. Impostare la modalità a nth , every a 2 e collegarla alla regola DROP . Quindi forse qualcosa di simile

     iptables -A INPUT -m statistic --mode nth --every 2 -m mac --mac-source xx:xx:xx:xx:xx -j DROP 

    dovrebbe funzionare.

    iptables-extensions man page dice di module statistico questo:

     statistic This module matches packets based on some statistic condition. It supports two distinct modes settable with the --mode option. Supported options: --mode mode Set the matching mode of the matching rule, supported modes are random and nth. [!] --probability p Set the probability for a packet to be randomly matched. It only works with the random mode. p must be within 0.0 and 1.0. The supported granularity is in 1/2147483648th increments. [!] --every n Match one packet every nth packet. It works only with the nth mode (see also the --packet option). --packet p Set the initial counter value (0 <= p <= n-1, default 0) for the nth mode. 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.