IPTables - Umleitung des Datenverkehrs nach Land

768
Dakado

Gibt es eine Möglichkeit, TCP-Verkehr nur aus bestimmten Ländern an einem angegebenen Port zuzulassen und den restlichen Verkehr mithilfe von iptables auf eine andere IP / einen anderen Port umzuleiten?

3

2 Antworten auf die Frage

3
cybernard

Sie müssen die Geoip-Datenbank einrichten und aktualisieren, bevor sie funktioniert.

iptables -I INPUT -m geoip -p tcp --dport ### --src-cc CN -j ACCEPT iptables -A PREROUTING -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 von Ihnen gewünschten Port.

Hier ist ein Tutorial, das Ihnen helfen wird: http://xmodulo.com/block-network-traffic-by-country-linux.html

Sie müssen die Datenbanken regelmäßig aktualisieren, da sich IP-Adressen und Besitzer manchmal ändern.

Aber würde dies nicht eine enorme Verlangsamung verursachen? Es würde doch für jedes Paket gerufen. Daniel B vor 7 Jahren 0
@DanielB Wenn Ihre Regeln korrekt und in der richtigen Reihenfolge ausgeführt werden, ist die Auswirkung auf die Leistung minimal. Der Benutzer möchte dies jedoch tun und muss entscheiden, ob sich die CPU-Auslastung lohnt. Ich habe eine Weiterleitung für meinen Webserver und die Auswirkungen sind vernachlässigbar. Diese Regel sollte an der Spitze der INPUT-Kette stehen: ** iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED, ESTABLISHED Übergibt alle außer neuen und falschen Paketen. ** cybernard vor 7 Jahren 0
Es scheint nicht zu funktionieren: iptables v1.4.14: unbekannte Option "--dport" Versuchen Sie `iptables -h 'oder' iptables --help ', um weitere Informationen zu erhalten. Dakado vor 7 Jahren 0
Versuchen Sie das Hinzufügen von ** - m tcp -p tcp ** cybernard vor 7 Jahren 0
Wenn Sie mehrere Ports ausführen müssen, fügen Sie ** - m multiport ** hinzu und ändern Sie ** - dport ** in ** - dports **. cybernard vor 7 Jahren 0
Ich muss nicht mehrere Ports hinzufügen, aber Ihre Syntax funktioniert nicht einfach. Dakado vor 7 Jahren 0
0
Dakado

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 deine Antwort war richtig.

so nah, ich denke, das ** - m tcp ** muss eine der Bedingungen für Multi-Port sein. Ich habe meine Antwort aktualisiert, um diese Änderung widerzuspiegeln. cybernard vor 7 Jahren 0
Ok, ich habe Ihre Antwort dann als richtig markiert Dakado vor 7 Jahren 0