Gibt es eine Möglichkeit, TCP-Verkehr nur aus bestimmten Ländern auf einem bestimmten Port zuzulassen und den restlichen Verkehr mithilfe von iptables auf eine andere IP/einen anderen Port umzuleiten?
Antwort1
Sie müssen die GeoIP-Datenbank einrichten und aktualisieren, bevor es funktioniert.
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
Ersetzen Sie 1.1.1.1 durch Ihre IP und 333 durch den gewünschten Port.
Hier ist ein Tutorial, das Ihnen weiterhilft: http://xmodulo.com/block-network-traffic-by-country-linux.html Dieser Link ist offenbar nicht mehr gültig, deshalb füge ich einen für das Internetarchiv hinzu.
Sie müssen die Datenbanken regelmäßig aktualisieren, da IP-Adressen manchmal den Besitzer und das Land wechseln.
Antwort2
Die korrekte Syntax lautet:
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
Aber Ihre Antwort war richtig.