tcpdump - ignore o erro do host inktown
Pergunta
Eu tenho um comando tcpdump em um script bash. Parece algo assim.
tcpdump -nttttAr /path/to/file -F /my/filter/file
O arquivo de filtro possui uma combinação de endereços IP e nomes de host. ou seja, host 111.111.111.111 ou host 112.112.112.112 e não (host abc.com ou host def.com ou host zyx.com).
E funciona muito bem - desde que os nomes dos hosts sejam válidos. Meu problema às vezes é que esses nomes de host não serão válidos e, ao encontrar um - tcpdump cuspir
tcpdump: Unknown Host
Eu pensei que, com a opção -n, ele ignoraria a pesquisa do DNS - mas em qualquer caso eu precisar para ignorar o host desconhecido e continuar ao longo do arquivo de filtro.
Alguma ideia?
Agradeço antecipadamente.
Solução
o -n
A opção impede a conversão de endereços IP em nomes, mas não o contrário. Se você fornecer um nome de host como argumento, ele deve ser procurado para obter o endereço IP, pois os pacotes contêm apenas o endereço numérico e não o nome do host. No entanto, deve haver uma maneira de ignorar nomes de host inválidos, mas não consigo encontrar um. Talvez você possa pré-processar seu arquivo de filtro usando dig
.
dig +short non-existent-domain.com # returns null
dig +short google.com # returns multiple IP addresses
Provavelmente isso poderia ser melhor, mas deve mostrar os nomes de host em seu arquivo de filtro que não são válidos:
grep -Po '(?<=host )[^ )]*' filterfile | grep -v '[0-9]$' | xargs -I % sh -c 'echo -n "% "; echo $(dig +short %)' | grep -v ' [0-9]'
Quaisquer nomes de host que impressões não tinham endereços IP devolvidos por dig
.