TC Posted December 11, 2005 Posted December 11, 2005 uprefix='10.2.2' #диверт на сквид ipfw -q add 2019 fwd localhost,3128 tcp from ${uprefix}.19 to any dst-port 80 in recv rl0 limit src-addr 4 #NAT ipfw -q add 3000 divert natd ip from 10.2.2.0/24 to any out via rl1 ipfw -q add 3001 divert natd ip from any to 11.0.0.229 in via rl1 # И тут самое интересное! ipfw -q add 3019 allow all from ${uprefix}.19 to any limit src-addr 8 Если не ставить limit src-addr 8 все работает, а если ставить - нат не пашет у юзера! Где косяк??? HELP!!! Вставить ник Quote
jab Posted December 12, 2005 Posted December 12, 2005 Хотелось бы еще понять, что сия конструкция должна была делать. Вставить ник Quote
Kuzmich Posted December 12, 2005 Posted December 12, 2005 Потому, что limit создает динамическое правило. Limit - это всего лишь параметр слова keep-state. В твоем случае динамические правила, созданные правилом 3019, выпоняются в точке 2019 (или раньше, если до 2019 у тебя есть еще источники динамических правил, или check-state), и до divert'ов пакеты просто не доходят.... Если хочешь использовать и динамические правила, и natd, то технология такая: 100 divert natd ip from any to any in via ${if_inet} .... 500 skipto 1000 ip from ... to .... kepp-state .... 9999 deny ip from any to any 10000 divert natd ip from any to any out via ${if_inet} 10001 allo ip from any to any via ${if_inet} Вставить ник Quote
TC Posted December 12, 2005 Author Posted December 12, 2005 Хотелось бы еще понять, что сия конструкция должна была делать. по моему все прозрачно, мож я чета упустил... если порт 80 - кидаем в сквид, если нет - дивертим на нат все что движется. Туда и обратно. Дальше кому можно отдаем, а остальным внизу стоит deny. по идее на каждого юзера просто можно поставить лимит коннектов, но, видимо конструкция в чем то ошибочна. Вставить ник Quote
Kuzmich Posted December 12, 2005 Posted December 12, 2005 man ipfw до просветления. Динамические правила выполняются не там, где они были созданы, а на первом вхождении check-state, или на первом правиле, имеющем предложение keep-state. limit == keep-state limit В твоем случае динамические правила, порожденные строкой 3019, выполняются на строке 2019. Поскольку правило порождено от правила "allow", то и динамические правила от него порождаются с действием "allow". На "allow" просмотр дальнейших правил прекращается, т.е. до divert'ов доходит только первый пакет. Выход - либо разносить divert'ы, как это сделано у меня в примере, лобо ставить правило с limit'ом на внутреннем интерфейсе. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.