Делаю проброс соединения таким вот макаром:
[console]iptables -t nat -I PREROUTING 1 -s 192.168.2.10 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.10 -j SNAT --to-source 192.168.1.37[/console]
Все пошло. Но когда я убираю эти правила (закрываю доступ)
[console]iptables -t nat -D PREROUTING -s 192.168.2.10 -j ACCEPT
iptables -t nat -D POSTROUTING -s 192.168.2.10 -j SNAT --to-source 192.168.1.37[/console]
закрывается доступ только для новых соединений, в случае если есть текущее соединение (незаконченное, например закачка) - оно остается открытым до окончания соединения.
Можно ли оборвать все соединения с текущего ип не перезагружая сетевые интерфейсы?
iptables -P FORWARD DROP
sleep 3
iptables -P FORWARD ACCEPT
Несовсем =) Надо чтоб только с одного ип разорвать все соединения, а ведь людей может отказаться много (а вам приятно когда у соседа закончился лимит - и у вас закачка рвется? ;)) Я склонялся в сторону стороннего по, но пока ненашел ничего подходящего...
ниукого больше нет идей как можно такое сделать? Полностью сбрасывать правила - нельзя, идет постоянное добавление/удаление правил, и отследить трудно какие правила прописаны а какие нет - трудно. Необходимо не обрывая все другие соединения оборвать только с одного ип. Может каким доп-софтом это сделать?
извиняюсь за реинкарнирование старой темы, но только руки дошли взяться за это. В-общем получается так:
iptables -I FORWARD 1 -s 192.168.2.10 -j DROP
обрывает связь, но не оставлять же это правило (вдруг кто другой получит этот ип попозже), поэтомму делаю через некоторое время
iptables -D FORWARD -s 192.168.2.10 -j DROP
и активные сессии, которые были оборваны (но программы, работавшие на этой сессии (аська, закачка), не закрыты), продолжаются. Тоесть сессии какбудто замораживаются, выжидая удаления этого правила.
Kettler, номер не обязательно, у меня срабатывает и без него (вдруг ппосле добавления правила еще правил добавилось перед ним - тогда он уже и не первый).
Ася закачка и торренты не закроються правильно ждут когда появиться инет
и интернета быть не должно, получается канал то и остается, только пакеты по нему дропаются, а как отменить дроп - пакеты опять пошли и как будто и не было попытки "саботажа". Знач вопрос то и остается - как обрубить все линки
после долгого и вдумчивого анализа пришел я к такой комбинации:
[console]tcpkill -i eth1 host 192.168.2.10
sleep 3
pkill tcpkill[/console]
но возникла другая проблемка, не из под рута получаю следующее:
[console]/usr/sbin/tcpkill -i eth1 host 192.168.2.10
tcpkill: eth1: You don't have permission to capture on that device (socket: Operation not permitted)
tcpkill: couldn't initialize sniffing
[/console]
гугление не дало ответа как это решить.
Может подскажите куда/чем добавить пользователя чтоб он имел право обрубать соединения