Existe alguma maneira de permitir o tráfego TCP apenas de países especificados em uma porta especificada e o restante do tráfego redirecionado para outro IP/porta usando iptables?
Responder1
Você precisará configurar e atualizar o banco de dados geoip antes de funcionar.
iptables -I INPUT -m geoip -p tcp --dport ### --src-cc CN -j ACCEPT
iptables -A PREROUTING -m geoip -p tcp --dport ### --src-cc ! CN -j DNAT --to-destination 1.1.1.1:333
substitua 1.1.1.1 pelo seu IP e 333 pela porta desejada.
Aqui está um tutorial para ajudá-lo: http://xmodulo.com/block-network-traffic-by-country-linux.html Aparentemente, este link morreu, então estou adicionando um para arquivo da Internet.
Você precisará atualizar periodicamente os bancos de dados, pois às vezes os endereços IP mudam de proprietário e de país.
Responder2
A sintaxe correta é:
iptables -I INPUT -m geoip -p tcp --dport xxx --src-cc CN -j ACCEPT
iptables -A PREROUTING -p tcp --dport xxx --src-cc ! CZ,SK -j DNAT --to-destination 1.1.1.1:333
Mas sua resposta estava correta.