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

  • ПК 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
  • ПК: обновить браузер -> страница обновляется !!

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

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

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

1 ответ1

1

пример: iptables -A INPUT -p tcp -s 0/0 --sport 513: 65535 -d 202.54.1.20 --dport 22 -m состояние - состояние NEW, УСТАНОВЛЕНО -m время --timestart 09:00 --timestop 18:00 - Пн. Пн., Вт., Вт. Чт. Пт. -J ПРИНЯТЬ

Поэтому, если вы добавите -m time --timestart 09:00 --timestop 18:00 --days пн, вт, ср, чт, пт -j ПРИНЯТЬ к своему правилу, это будет зависеть от времени.

Вам нужно будет указать другое правило для уничтожения СВЯЗАННОГО, УСТАНОВЛЕННОГО трафика.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .