iptables - убить установленные соединения NAT

1205
Filipe Pina

У меня есть следующие настройки:

  • ПК eth0 подключен к GW eth1
  • GW eth0 подключен к интернету.

GW имеет net.ipv4.ip_forward=1в sysctl.conf

Итак, когда я просто запускаю (в GW ):

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

ПК получает доступ в интернет. И когда я хочу отключить его, я просто запускаю (в GW ):

itpables -t nat -F 

Моя проблема с установленными соединениями, они не отменяются .. Пример:

  • GW : запуститьiptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
  • ПК : откройте http://ip-api.com/ в браузере
  • GW : запуститьiptables -t nat -F
  • ПК : обновить браузер -> страница обновляется !!

Если я попробую другую страницу на ПК, она не будет работать, но из-за Connection: Keep-Aliveфункциональности HTTP браузер все равно сможет использовать это установленное соединение.

Я мог бы просто отключить, net.ipv4.ip_forwardно я не хочу делать это из-за остальной части моей установки.
Поэтому я хотел бы, чтобы iptables (или linux NAT-модули) могли испортить отслеживание их соединений, чтобы эти соединения становились недействительными или сбрасывались ...

Или можно указать в правилах iptables if connection established before TIMESTAMP -j DROP(чтобы я мог добавить это правило перед MASQUERADE)?

0
Существует утилита IIRC 'cutter', которая будет устанавливать RST TCP-соединения, которые вы укажете. LawrenceC 8 лет назад 0

1 ответ на вопрос

1
cybernard

example: iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d 202.54.1.20 --dport 22 -m state --state NEW,ESTABLISHED -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT

So if you add -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT to your rule it will be time sensitive.

You will need to specify another rule to kill RELATED,ESTABLISHED traffic.

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 
Не могли бы вы уточнить это, связав это с моим вопросом? Я не вижу, как это помогает, поскольку, насколько я понимаю, это будет соответствовать текущему времени в системе, а не времени, когда было установлено соединение ... Filipe Pina 8 лет назад 0
Я добавил правила выше. Он сравнивает время пакета с системным временем. Если это НЕ между перечисленными временами, СВЯЗАННЫМИ, соединения ESTABLISH будут разорваны. cybernard 8 лет назад 0
Да, но если я не пойму его неправильно, он перестанет смотреть на время пакета, а не на время, когда было установлено соединение (для этого пакета), поэтому это не решит мою проблему ... Filipe Pina 8 лет назад 0
Вы неправильно поняли. Если время, а не время пакета, после ** временного останова **, трафик отбрасывается. Неважно, когда соединение было установлено, в 18:00 оно будет сброшено. ** СРОК ** cybernard 8 лет назад 0
Именно так я и понял. Это не отвечает на мой вопрос. Filipe Pina 8 лет назад 0

Похожие вопросы