Всем доброго времени.Обращаюсь к Вам знатоки.
Имею шлюз, на нем ipfw+pf.
pf фильтрует все что должно заходить снаружи, по IP и по портам
ipfw разруливает все остальное.
Есть подсеть 192.168.0.0/24 и из нее юзеры бегают в инет часть через проксю(с фильтрацией и запретами), а часть напрямую. Тут как бы все нормально и ничего нигде не подрезаю.Появилась необходимость выделить небольшую подсеть 172.16.201.0/29 и загнать ее в трубу, при чем целиком, а не отдельно каждый IP.
Что было сделано.
В начале конфига ipfw приписан запуск скрипта, который перебивает pipe, вот его содержимое:
# cat pipe.sh
#!/bin/shf=/sbin/ipfw
${f} -f pipe flush
${f} pipe 1 config bw 1024Kbit/s
### Otdel_1
${f} pipe 2011 config bw 5Mbit/s
${f} pipe 2012 config bw 1Mbit/sИ трубы успешно созданы.
Далее я добиваю 2 таблицы, table 10 и table 11, вот содержимое скрипта:
#!/bin/sh##### Click #####
### NetMask 255.255.255.248 or /29
### Table 10 and 11f=/sbin/ipfw
${f} table 10 add 172.16.201.2/32 2011
${f} table 11 add 172.16.201.2/32 2012${f} table 10 add 172.16.201.3/32 2011
${f} table 11 add 172.16.201.3/32 2012${f} table 10 add 172.16.201.4/32 2011
${f} table 11 add 172.16.201.4/32 2012${f} table 10 add 172.16.201.5/32 2011
${f} table 11 add 172.16.201.5/32 2012и получаю на выходе:
# ipfw table all list
---table(10)---
172.16.201.2/32 2011
172.16.201.3/32 2011
172.16.201.4/32 2011
172.16.201.5/32 2011
---table(11)---
172.16.201.2/32 2012
172.16.201.3/32 2012
172.16.201.4/32 2012
172.16.201.5/32 2012Как бы без проблем.
Далее я в фаерволе прописываю правила:
${f} add 30010 pipe tablearg ip from table\(11\) to any
${f} add 30020 pipe tablearg ip from any to table\(10\)
И у меня входящая и исходящая режутся пополам от заявленного в трубе.Порыскав на просторах интернета начитал, что нужно указать в правилах где исход, где вход.
Я не долго думая дописал:
${f} add 30010 pipe tablearg ip from table\(11\) to any out
${f} add 30020 pipe tablearg ip from any to table\(10\) in
и в итоге инета вообще нет.
в ipfw show мне показывет такую картину:
30010 7687 5883082 pipe tablearg ip from table(11) to any out
30020 0 0 pipe tablearg ip from any to table(10) inПодскажите, что я делаю не так?
Нужно, чтобы юзеры из подсети 172.16.201.0/29 получали на всех отведенную ширину канала, а не каждый по 5 Мбит/сек.
> Имею шлюз, на нем ipfw+pf.какой смысл?
пс. дальше этой строчки не читал.
>[оверквотинг удален]
> ${f} add 30020 pipe tablearg ip from any to table\(10\) in
> и в итоге инета вообще нет.
> в ipfw show мне показывет такую картину:
> 30010 7687 5883082 pipe tablearg ip from
> table(11) to any out
> 30020 0 0 pipe tablearg ip from
> any to table(10) in
> Подскажите, что я делаю не так?
> Нужно, чтобы юзеры из подсети 172.16.201.0/29 получали на всех отведенную ширину канала,
> а не каждый по 5 Мбит/сек.А зачем вам два фаера то?
Отвечаю сразу обоим.
Так случилось, что с NATD я как-то не сдружился. Использовать ядерный нат тоже как-то не камильфо.
PF предоставляет широкие возможности в этом плане. Он натит мне исходящий трайик, плюс он разруливает весь трафик что приходит снаружи на сервер с фильтрацией по IPадресам и назначением правил согласно адресам.
IPFW разруливает все остальное.
> Отвечаю сразу обоим.
> Так случилось, что с NATD я как-то не сдружился. Использовать ядерный нат
> тоже как-то не камильфо.
> PF предоставляет широкие возможности в этом плане. Он натит мне исходящий трайик,
> плюс он разруливает весь трафик что приходит снаружи на сервер с
> фильтрацией по IPадресам и назначением правил согласно адресам.
> IPFW разруливает все остальное.А что остальное?
а пф по твоему не в ядре живет и натит в юзерспейсе? и с чего это ядерный нат не комельфо?
> а пф по твоему не в ядре живет и натит в юзерспейсе?
> и с чего это ядерный нат не комельфо?я не умею с ним работать. Как-то подсел на такую связку, привык и мне так стало удобно...
У меня много удаленных клеинтов на статике, много внутренних сервисов...
> а пф по твоему не в ядре живет и натит в юзерспейсе?
> и с чего это ядерный нат не комельфо?А потому что нестандартные топологии\задачи ядерным натом крайне сложно реализовать.
Допустим, необходимо редиректить все запросы на UDP/TCP:53 от клиентов приватной сети в Инет на адрес, находящийся в ином сегменте сети, нежели роутер, например на адрес 8.8.8.8.
Тут простым fwd не обойтись, а прийдется извращаться с несколькими инстансами ната.
ipfw привлекает возможностью acl на интерфейсах и dummynet. ALTQ в PF - технологии прошлого века.
1. если не хватает знания не ори что невозможно. прочитай про внутреннее устройство ipfw, как там живет нат . сравни с тем как это было раньше, когда гонялось через диверт сокеты в пользовательское пространство. и ты увидишь что разница незначительна и не существует ничего такого что реализуемо на натд и не реализуемо на ядерном нате. обратное не верно.
2. то что у тебя сделано с днс - истинное извращение( но даже оно реализуемо на ядерном - см выше ).
3. как можно говорить про технологии прошлого века и при этом гонять не ядерный нат?
4. что в altq и pf технологии из прошлого века и чем они хуже остальных?
>[оверквотинг удален]
> это было раньше, когда гонялось через диверт сокеты в пользовательское пространство.
> и ты увидишь что разница незначительна и не существует ничего такого
> что реализуемо на натд и не реализуемо на ядерном нате. обратное
> не верно.
> 2. то что у тебя сделано с днс - истинное извращение( но
> даже оно реализуемо на ядерном - см выше ).
> 3. как можно говорить про технологии прошлого века и при этом гонять
> не ядерный нат?
> 4. что в altq и pf технологии из прошлого века и чем
> они хуже остальных?Невежа, ты сначала подумай, а потом пиши.
1)Я привел пример с ДНС, есть еще куча. А ну кинь сюда решение с ДНС я посмотрю ))
2)
> 3. как можно говорить про технологии прошлого века и при этом гонять
> не ядерный нат?иди проспись. это где я сказал про неядерный нат. pf?, ipfw_nat?
3)я в отличии от тебя регулярно читаю списки рассылки, там уже давно проскакивали мысли о том, что бы заменить чем-то altq.
> Невежа, ты сначала подумай, а потом пиши.
> 1)Я привел пример с ДНС, есть еще куча. А ну кинь сюда
> решение с ДНС я посмотрю ))есть еще куча неверных примеров? знаю внутреннее устройство ипфв и пф. этого достаточно чтобы утверждать что не существует такой задачи, которая решалась бы натдом и не реашалась бы ядерным. все также можно обрабатывать пакеты как до ната так и после него. при этом правка правил будет незначительной.
> 2)
>> 3. как можно говорить про технологии прошлого века и при этом гонять
>> не ядерный нат?
> иди проспись. это где я сказал про неядерный нат. pf?, ipfw_nat?... бла ... тяжело решаемо ... неядерным ... бла ...
> 3)я в отличии от тебя регулярно читаю списки рассылки, там уже давно
> проскакивали мысли о том, что бы заменить чем-то altq.- кто смотрит порно?
- тот у кого секса в жизни нет.вот так и ты читаешь сообщество, нужное только участникам этого сообщество... я в отличии от тебя пишу код. если что-то надо - смотрю код. следить за домом2 нет времени.
используемые в альтку алгоритмы есть везде - во всех файерволлах, и реализуются идентично. говорить что альтку прошлый век - все-равно что сказать колесо прошлый век. если и были аргументы то они никак не содержали слова прошлый век или намек на них. все это твоя фантазия.
>[оверквотинг удален]
> ${f} add 30020 pipe tablearg ip from any to table\(10\) in
> и в итоге инета вообще нет.
> в ipfw show мне показывет такую картину:
> 30010 7687 5883082 pipe tablearg ip from
> table(11) to any out
> 30020 0 0 pipe tablearg ip from
> any to table(10) in
> Подскажите, что я делаю не так?
> Нужно, чтобы юзеры из подсети 172.16.201.0/29 получали на всех отведенную ширину канала,
> а не каждый по 5 Мбит/сек.Я бы вам рекомендовал сделать так: возложить задачи фильтрации и ната на PF, а резать\приоритизировать - ipfw.
В ipfw:
$cmd 100 skipto tablearg all from any to any in recv "table(10)"
$cmd 110 skipto tablearg all from any to any out xmit "table(11)"
$cmd 999 deny log all from any to anyВ table(10):
# table with ifaces
# in
ipfw -fq table 10 flush
ipfw table 10 add em0 1000 # inner iface
ipfw table 10 add em1 2000 # public iface
ipfw table 10 add lo 9000
ipfw table 10 add .... 9000В table(11):
# out
ipfw -fq table 11 flush
ipfw table 11 add em0 11000
ipfw table 11 add em1 12000
ipfw table 11 add lo 9000 # go to default rule - allow all
ipfw table 11 add .... 9000 # go to default rule - allow all...
ipfw add 9000 allow all from any to any
ipfw rules with pipe/queue/etc...
...Я "режу" на внешнем - upload, на внутреннем - download.
Покажу для download; никаких указаний дирекшинов уже не надо.
ipfw pipe 2 config bw 5000Kbit/s
ipfw add 11000 pipe 2 ip from any to _таблица_с_вашими_адресами_По-аналогии на внешнем upload ...
И последнее, если вам чисто нарезка, то выставьте one_pass=1, если после пайпа вы разделяете трафик по приоритетам, то соответственно, one_pass=1 + корректировка привил.
Ну, как-то так...
Я, так же думаю, что два фаера, в принципе, не криминал. ))
Такая схема, как говорится, имеет право быть.> Я бы вам рекомендовал сделать так: возложить задачи фильтрации и ната на
> PF, а резать\приоритизировать - ipfw.Именно такую схему, было время, сам реализовывал и как ни странно, работало.
Так что вы меня опередили, с рекомендацией.> ipfw table 10 add em0 1000 # inner iface
> ipfw table 10 add em1 2000 # public iface
> ipfw table 10 add lo 9000Упс, упустил, с какой версии стало можно добавлять интерфейс в таблицу. 9.1?
И чего можно реализовать с этим?> Я "режу" на внешнем - upload, на внутреннем - download.
Как на внешнем? Там же нат?