Restaurar regras com iptables-restore ignorando erros

0

Gostaria de saber se é possível ignorar os erros no procedimento de restauração.

Eu tenho em minhas regras muitas linhas como:

-A mychain -s somehost.com -j DROP

Minhas regras vêm de listas dinâmicas e pode acontecer que, se somehost.com estiver temporariamente offline, não seja roteável ou algo assim iptables-restore se recuse a restaurar as regras e elimine erros como:

iptables-restore v1.6.0: host/network 'somehost.com' not found
Error occurred at line: 342
Try 'iptables-restore -h' or 'iptables-restore --help' for more information.

Bem, eu gostaria que iptables pudesse simplesmente ignorar a linha somehost.com se o host não estivesse acessível.

Isso pode ser feito adicionando alguns sinalizadores a iptables-restore ?

    
por user3450548 07.10.2017 / 17:42

1 resposta

2

É possível usar o nome DNS nas regras do iptables, mas não é uma prática recomendada por mais motivos. E o principal motivo - o iptables executa a resolução uma vez durante o carregamento de regras. No futuro, o nome DNS pode ser alterado e seu host não o saberá.

Como você poderia saber, o iptables precisa apenas resolver o nome do DNS com sucesso . Portanto, se o nome DNS não existir, o carregamento de regras terminará com erros.

Você pode criar um script e verificar a resolução do nome dentro dele:

#!/bin/bash

host_check=$( dig -t A somehost.com +short 2>/dev/null | wc -l )

if (( $host_check > 0 ))
        then sed -i '/.*somehost\.com/s/^#//' file
        else sed -i 's/.*somehost\.com/#&/' file
fi

este script verifica a resolução do nome. Se o nome for resolvido (a saída será uma ou mais linhas), o script excluirá comentários em cada linha com determinado nome DNS. Se não - scipt adiciona comentários a cada linha com o nome DNS.

file - este é o script iptables do comando iptables-save > file

Depois disso, você pode carregar regras com iptables-restore < file

Eu recomendo strongmente não usar essa abordagem. Você precisa encontrar uma maneira de recusar nomes DNS nas regras do iptables.

    
por 07.10.2017 / 20:07