¿Hay alguna manera de permitir el tráfico TCP solo de países específicos en un puerto específico y el resto del tráfico redirigido a otra IP/puerto usando iptables?
Respuesta1
Deberá configurar y actualizar la base de datos geoip antes de que funcione.
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
reemplaza 1.1.1.1 con tu IP y 333 con el puerto que quieras.
Aquí te dejamos un tutorial para ayudarte: http://xmodulo.com/block-network-traffic-by-country-linux.html Aparentemente este enlace falló, así que estoy agregando uno para el archivo de Internet.
Deberá actualizar periódicamente las bases de datos ya que a veces las direcciones IP cambian de propietario y de país.
Respuesta2
La sintaxis correcta es:
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
Pero tu respuesta fue correcta.