Правила для data–source
Правила для data–source
В случае использование FreeBSD правила должны выглядеть следующим образом:
Случай использования «честных» адресов:
rule number «ip from any to any via ifname»
где:
number — относительно любой номер правила в таблице ipfw, например 100
ifname — название внешнего интерфейса, через который трафик идет к провайдеру
Случай использования «левых» адресов и их трансляции:
rule number1 «ip from any to any via ifname»
rule number2 «ip from any to any via ifname»
где:
number1 и number2 — номера правил в таблице ipfw, так чтобы ваше правило по трансляции адресов (заворот пакетов в divert socket NATD) имело номер МЕЖДУ НИМИ.
ifname — название внешнего интерфейса, через который трафик идет к провайдеру
Это сделано для того, чтобы учитывать трафик на не оттранслированные адреса.
В случае Linux, независимо от наличия трансляции адресов (маскарадинга), правила имеют вид:
rule number1 «INPUT–p all–j QUEUE»
rule number2 «FORWARD–p all–j QUEUE»
rule number3 «OUTPUT–p all–j QUEUE»
причем номера number1, 2 и 3 совершенно произвольные так как никак не используются.
Этими действиями выполняется следующее: вы задаете правила для ipfw/iptables, по которым пакеты ядром направляются пихаются в некую виртуальную трубу (которая называется queue), откуда их потом берет программа, прокачивает через себя (смотря на заголовки и делая подсчет) и отдает обратно в систему, после чего они спокойно идут себе дальше.
ВАЖНО!!!
Если вы остановили программу так что она не смогла после себя убрать эти поставленные правила (через kill–9) или она сама неожиданно померла, то все пакеты по прежнему система будет заворачивать туда откуда их никто не заберет, и они пропадут. С точки зрения системы это будет выглядеть как полная потеря работы с сетью. НИКОГДА не экспериментируйте с этим сидя за удаленной машиной. Тренируйтесь непосредственно за консолью, или в крайнем случае на icmp–трафике. Сделайте для доступа «дырку» перед всеми правилами, пропускающую для вас SSH. Это не касается data–source других (неблокирующих) типов, например libpcap или netflow.