Sua pergunta não é 100% clara, mas presumo que seu erro Operation not permitted
venha de dentro da sua biblioteca SNMP no seu cliente e signifique uma rejeição do host de destino. Por favor, esclareça se você sabe diferente.
Você está aceitando conexões SNMP de fora para que o módulo de estado não esteja ajudando. Normalmente, é usado o drop de pacotes de entrada onde não há conexão de saída. Isso não se aplica, então você provavelmente quer desligar. use a opção CT - notrack (veja man iptables-extensions). Tendo feito isso, você vai querer colocar regras em ambas as direções.
-I INPUT -p udp -m udp --dport 161 -j ACEITAR
-I OUTPUT -p udp -m udp --sport 161 -j ACCEPT #não é necessário se você tiver alguma saída bloqueada
Isso pode resolver seu problema.
Se você quiser solucionar problemas, então existem várias razões possíveis para o iptables bloquear conexões, o que parece que as regras deveriam permitir. Por exemplo:
- o estado expirou
- o estado não se encaixa na tabela de estados
Como você parece estar apenas usando conexões UDP, não há nenhum estado real . Isso significa que os pacotes provenientes do sistema do cliente devem ser aceitos pelas regras, mesmo que seja uma conexão "nova".
Com certeza você quer saber onde o seu iptables está perdendo pacotes. Use
sudo iptables --list --verbose
para ver quais regras recebem pacotes. Para obter uma visão mais clara, você pode usar
sudo iptables --zero
para limpar os contadores e, em seguida, verificar se uma determinada linha sobe logo após um erro. Você pode então adicionar regras de registro (ver, por exemplo, link ) e ver exatamente qual pacote é descartado.
Nesse ponto, você também pode procurar nos registros do sistema e encontrar alguma explicação.