iptables - beenden Sie bestehende NAT-Verbindungen

1286
Filipe Pina

Ich habe das folgende Setup:

  • PC eth0 an GW eth1 angeschlossen
  • GW eth0 ist mit dem Internet verbunden.

GW hat net.ipv4.ip_forward=1in sysctl.conf

Also, wenn ich einfach (in GW ) renne :

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE 

PC erhält Internet-Zugang. Und wenn ich es deaktivieren möchte, renne ich einfach (in GW ):

itpables -t nat -F 

Mein Problem ist mit etablierten Verbindungen, sie werden nicht abgebrochen. Beispiel:

  • GW : renneniptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
  • PC : Öffnen Sie http://ip-api.com/ im Browser
  • GW : renneniptables -t nat -F
  • PC : Browser aktualisieren -> Seite wird aktualisiert !!

Wenn ich eine andere Seite in einem PC versuche, funktioniert sie nicht. Aufgrund der HTTP- Connection: Keep-AliveFunktionalität kann der Browser diese Verbindung jedoch weiterhin verwenden.

Ich könnte es einfach deaktivieren, net.ipv4.ip_forwardaber ich möchte das wegen des Restes meines Setups nicht tun.
Was ich also möchte, ist die Möglichkeit, iptables (oder Linux-NAT-Module) dazu zu bringen, ihre Verbindungsverfolgung durcheinander zu bringen, sodass diese Verbindungen ungültig werden oder verworfen werden ...

Oder ist es möglich, iptables-Regeln festzulegen if connection established before TIMESTAMP -j DROP(damit ich diese Regel vor der MASQUERADE hinzufügen kann)?

0
Es gibt ein Dienstprogramm mit dem Namen 'cutter' IIRC, das von Ihnen angegebene RST-TCP-Verbindungen verwendet. LawrenceC vor 8 Jahren 0

1 Antwort auf die Frage

1
cybernard

Beispiel: iptables -A INPUT -p tcp -s 0/0 --sport 513: 65535 -d 202.54.1.20 --dport 22 -m state - state NEU, GELEGT --m time --timestart 09:00 - timestop 18:00 - Tage Mo, Di, Mi, Do, Fr.-J ACCEPT

Wenn Sie also -m time --timestart 09:00 --timestop 18:00 --days Mo, Di, Mi, Do, Fr - j ACCEPT zu Ihrer Regel hinzufügen, ist dies zeitabhängig .

Sie müssen eine andere Regel angeben, um RELATED, ESTABLISHED-Verkehr zu beenden.

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT #if it not between these times the next rule will drop the traffic iptables -t nat -I POSTROUTING -o eth0 -j DROP iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT iptables -A INPUT -m conntrack -j DROP --ctstate RELATED,ESTABLISHED 
Könnten Sie dies in Bezug auf meine Frage erläutern? Ich kann nicht erkennen, wie dies hilfreich ist, da dies meines Wissens nach der aktuellen Uhrzeit im System und nicht der Zeit entspricht, zu der die Verbindung hergestellt wurde ... Filipe Pina vor 8 Jahren 0
Ich habe oben Regeln hinzugefügt. Es vergleicht die Paketzeit mit der Systemzeit. Wenn es NICHT zwischen den angegebenen Zeiten liegt, werden die RELATED-Verbindungen abgebrochen. cybernard vor 8 Jahren 0
Ja, aber wenn ich es nicht missverstanden habe, wird die Paketzeit gesenkt, nicht zu dem Zeitpunkt, zu dem die Verbindung (für dieses Paket) hergestellt wurde, so dass es mein Problem nicht löst ... Filipe Pina vor 8 Jahren 0
Du hast falsch verstanden. Wenn die Zeit, nicht die Paketzeit, nach ** timestop ** liegt, wird der Datenverkehr gesenkt. Es ist egal, wann die Verbindung hergestellt wurde. Um 18:00 Uhr wird die Verbindung abgebrochen. **ZEITRAUM** cybernard vor 8 Jahren 0
Genau, also habe ich verstanden. Dies beantwortet meine Frage nicht. Filipe Pina vor 8 Jahren 0