Jump to content

Recommended Posts

Posted

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!!!

Posted

Потому, что 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}

Posted
Хотелось бы еще понять, что сия конструкция должна была делать.

 

по моему все прозрачно, мож я чета упустил...

 

если порт 80 - кидаем в сквид, если нет - дивертим на нат все что движется.

 

Туда и обратно.

 

Дальше кому можно отдаем, а остальным внизу стоит deny.

 

по идее на каждого юзера просто можно поставить лимит коннектов, но, видимо конструкция в чем то ошибочна.

Posted

man ipfw до просветления.

 

Динамические правила выполняются не там, где они были созданы, а на первом вхождении check-state, или на первом правиле, имеющем предложение keep-state.

 

limit == keep-state limit

 

В твоем случае динамические правила, порожденные строкой 3019, выполняются на строке 2019. Поскольку правило порождено от правила "allow", то и динамические правила от него порождаются с действием "allow". На "allow" просмотр дальнейших правил прекращается, т.е. до divert'ов доходит только первый пакет.

 

Выход - либо разносить divert'ы, как это сделано у меня в примере, лобо ставить правило с limit'ом на внутреннем интерфейсе.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.