Eu estava olhando a página de manual do iptables hoje e percebi que a descrição -A diz “Anexar umou maisregras até o final da cadeia selecionada”. Isso significa que se eu tiver:
iptables -A INPUT {...rule1...}
iptables -A INPUT {...rule2...}
poderia ser simplificado para uma linha?
iptables -A INPUT {...rule1; rule2...}
Procurei no Google e não consigo encontrar um exemplo de alguém fazendo isso, mas seriam simplesmente alguns dos meus scripts, se fosse possível.
Responder1
Você só pode fornecer uma definição de regra em uma iptables -A
chamada.
No entanto, se você usar um endereço como www.example.com que resolve mais de um endereço, várias regras serão anexadas, uma para cada endereço.
Por exemplo: (IPs falsos usados...):
$ host www.example.com
www.example.com has address 10.1.2.3
www.example.com has address 10.1.2.4
$ sudo iptables -A INPUT -s www.example.com -j ACCEPT
$ sudo iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
208K 250M ACCEPT all -- * * 192.168.0.0/16 0.0.0.0/0
0 0 ACCEPT all -- * * 10.1.2.3 0.0.0.0/0
0 0 ACCEPT all -- * * 10.1.2.4 0.0.0.0/0
Agora você inseriu mais de uma regra usando uma iptables -A
invocação.
Concordo que isso não fica muito aparente na descrição da página de manual.
Responder2
Regra nº 1 por chamada de iptables. a opção "Anexar" contrasta com a opção "Inserir". Acrescentar como em... a nova regra vai para o final da lista de regras, mas Inserir adiciona a regra ao topo da lista.
iptables -I INPUT {Rule1}
iptables -I INPUT {Rule2}
resultaria nas regras sendo as seguintes:
{Rule2}
{Rule1}
onde
iptables -A INPUT {Rule1}
iptables -A INPUT {Rule2}
resultaria em
{Rule1}
{Rule2}