Como carregar uma lista de endereços no iptables, dinamicamente?

4

Agora, quero carregar dinamicamente um arquivo de lista ip para o iptables. o arquivo de lista ip é o host de aceitação, padrão drop. exemplo,

iptables -A INPUT -p tcp --dport 1111 -s 2.2.2.2 -j ACCEPT
iptables -A INPUT -p tcp --dport 1111 -j DROP
iptables -A INPUT -j ACCEPT

Eu quero abrir uma porta para alguém, mas a lista de ip é dinâmica, se eu posso fazer como abaixo,

iptables -A INPUT -p tcp --dport 1111 -s ip-list-file -j ACCEPT
iptables -A INPUT -p tcp --dport 1111 -j DROP
iptables -A INPUT -j ACCEPT

ip-list-file:
2.2.2.2
3.3.3.3 

Tem alguma ideia? Obrigado.

=========================================

Eu vejo as regras do Iptables às vezes são redefinidas automaticamente , Eu posso usar -I, insira a regra para a cabeça da cadeia. Como realizar a carga dinâmica do arquivo de lista de ip?

    
por Ajian 31.01.2013 / 05:00

1 resposta

5

Você não pode simplesmente fornecer um nome de arquivo para o parâmetro -s . Se você tiver apenas alguns endereços (na ordem de 10s), poderá usar um script para adicionar várias regras:

while read IP; do
    iptables -A INPUT -p tcp --dport 1111 -s $IP -j ACCEPT
done < ip-list-file

Se você tiver muitos endereços, prefira usar o mecanismo ipset :

ipset create list0 iphash
while read IP; do
    ipset add list0 $IP
done < ip-list-file
iptables -A INPUT -p tcp --dport 1111 -m set --match-set list0 src
    
por 31.01.2013 / 23:38

Tags