Differenza tra iptables -A e -I opzione


20

Ho provato (per ore) a configurare iptables per consentire le query DNS al mio server DNS e ho appena scoperto che i miei iptables continuavano a bloccare l'accesso a causa dell'opzione di aggiunta della regola che stavo usando. La maggior parte dei forum suggerisce una regola simile alla seguente:

iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

Tuttavia, nel mio caso, ho dovuto cambiare la regola in un inserttipo affinché funzioni:

iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT

So che una regola è per l'aggiunta e l'altra per l'inserimento e anche cosa significano entrambi i termini, ma qualcuno potrebbe spiegare la differenza tra i due e anche quando utilizzare quale opzione? Ho cercato gli iptables di Ubuntu come ma non vedo molte informazioni lì.

Risposte:


24

iptables -Aaggiunge le regole alla fine del set di regole mentre iptables -Iinserisce la regola in una posizione specifica nel set di regole, come hai sottolineato.

Guardando la voce man per iptables mostra questo:

-I, --insert catena [rulenum] specifica regola Inserire una o più regole nella catena selezionata come numero di regola specificato. Quindi, se il numero della regola è 1, la regola o le regole vengono inserite all'inizio della catena. Questo è anche il valore predefinito se non viene specificato un numero di regola.

Ed ecco il motivo per cui ha -Ifunzionato per te e -Anon lo è. Se non fornisci alcun regola, la tua regola viene inserita nella prima posizione. Ciò significa che nel tuo caso, che da qualche parte nel tuo set di regole ci deve essere una regola che proibisce i pacchetti DNS (forse una regola che proibisce UDP in generale?) Perché iptables elabora tutte le regole dalla prima all'ultima, applica la prima corrispondenza e si ferma.
A proposito, questo è anche il motivo per cui dovresti mettere in cima le regole che intendono abbinare la maggior parte dei pacchetti: se metti la regola più utilizzata in e, il pacchetto viene verificato rispetto a ciascuna regola che può consumare molte risorse.

E per l'uso: puoi usarlo facilmente -Aquando vuoi aggiungere una regola alla fine o quando non importa dove sarà la tua regola. Se si desidera la propria regola in una posizione specifica, utilizzare in -Iquesto modo ad esempio: iptables -I INPUT 6 -p tcp -j DROP(ciò aggiungerà un'istruzione DROP per tutti i pacchetti tcp indirizzati all'host stesso sulla posizione 6 nel set di regole INPUT).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.