Aproveite o mecanismo de estado:
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
ou em versões posteriores do iptables
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Isso é exatamente o que o mecanismo de estado existe: permitir tráfego que atenda a vários critérios (por exemplo, protocolo, porta de origem) mas também faz parte de uma conexão existente (como define conexão ). O resultado é que o pacote TCP SYN
de saída para um endereço IP externo específico na porta de destino 3306, a partir de uma porta ephmeral local, criará uma entrada de tabela de estado para essa combinação específica de endereços IP e números de porta e só retornará tráfego com a A mesma combinação de endereços e portas será permitida durante e somente pela duração dessa conexão.