LINUX.ORG.RU
ФорумAdmin

Шейпер ipfw+dummynet под ubuntu


0

1

Сильно не ругайте если чего)))

Стоит на работе шлюз на фре, отлично работает, но захотелось его перевести на линукс. Итак, имеется тестовая машина.

root@ubuntu-router:/etc# uname -a
Linux ubuntu-router 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:12:07 UTC 2012 x86_64 GNU/Linux
Собрал ipfw(брал отсюда: http://info.iet.unipi.it/~marta/dummynet/ последнюю версию ipfw3-20120119.tar.gz). в rc.local добавил
insmod /etc/ipfw/dummynet2/ipfw_mod.ko
/etc/myfirewall.sh
Файл /etc/myfirewall.sh
root@ubuntu-router:/etc# cat
/etc/myfirewall.sh
#!/bin/sh
#сброс всех настроек
iptables -F
#сброс настроек NAT
iptables -t nat -F
#переброска пакетов между сетевыми интерфейсами разрешена
sysctl -w net.ipv4.ip_forward="1"
#NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Конфиг IPFW
/etc/ipfw.sh
Файл /etc/ipfw.sh
root@ubuntu-router:/etc# cat /etc/ipfw.sh
#!/bin/sh
#Внешний интерфейс
oif="eth0"
oip=192.168.1.50
#Внутренний интерфейс
iif="eth1"
iip=192.168.5.1
MyLan=192.168.5.0/24
#Очищаем правила
ipfw -f flush
ipfw -f pipe flush
#pipe speed
ipfw pipe 1 config bw 1Mbit/s
#lo
ipfw add 00100 allow ip from any to any via lo0
ipfw add 00101 deny ip from any to 127.0.0.0/8
ipfw add 00102 deny ip from 127.0.0.0/8 to any
#Разрешим все в локальной сети
ipfw add 00201 allow ip from ${MyLan} to ${MyLan} via ${iif}
#Разрешим идти куда угодно из сети и получать ответы на свои запросы
ipfw add 00301 allow ip from ${MyLan} to any keep-state
#Разрешим серверу интернет
ipfw add 00401 allow ip from me to any out keep-state
#Откроем порт для ssh
ipfw add 00501 allow ip from any to me 22 in via ${oif}
#Запретим все, что не разрешено
ipfw add 00501 deny ip from any to any

Сразу скажу, что конфиги потом буду безопаснее, это пока все для тестов. Все работает, инет раздается, но вот скорость не режется.

Если заменить

ipfw add 00201 allow ip from ${MyLan} to ${MyLan} via ${iif}
на
ipfw add 00201 pipe 1 ip from ${MyLan} to ${MyLan} via ${iif}
то скорость режется нормально от клиентов к серверу и обратно, но если сделать тоже самое для интернета, заменив
#Разрешим идти куда угодно из сети и получать ответы на свои запросы
ipfw add 00301 allow ip from ${MyLan} to any keep-state
на
#Разрешим идти куда угодно из сети и получать ответы на свои запросы
ipfw add 00301 pipe 1 ip from ${MyLan} to any keep-state
, то интернет на клиентах вообще пропадает. Почему через пайп не раздается инет?


ipfw+dummynet под ubuntu

Ты троллируешь.

power
()

ipfw — это хорошо, но, может, всё-таки попробуешь более адекватные инструменты для Линукса, нежели как-то портированный ipfw? Например, LinuxIMQ.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

Да под другими системами режеи нормально и правыильно скорость, да и в локальной сети тоже, не пойму почему не может так же резать на инет...

Mifey
() автор топика

Стоит на работе шлюз на фре, отлично работает

Ну и какой в этом смысл? Бездумный фанатизм?

cipher ★★★★★
()
Ответ на: комментарий от cipher

дело все в лицензировании, на линуцкс у нас есть документы, на фрю - нет, и это долгая история.. стоит задача на линуксе шейпер сделать, ipfw отличный шейпер.... У меня вопрос: «почему не работает, как исправить?» , а не обговаривание стоит ли так делать или нет!

Mifey
() автор топика
Ответ на: комментарий от Mifey

ipfw отличный шейпер

на FreeBSD - возможно. Но я соглашусь с post-factum - используй штатные средства - с ними меньше геморроя будет. Да, возможно придется переучиваться. Да, возможно настройка покажется тебе неочевидной и непривычной. Но, зато граблей будет меньше...

Смотреть тебе стоит в iptables/MARK + iproute2/tc

Pinkbyte ★★★★★
()
Ответ на: комментарий от Mifey

дело все в лицензировании, на линуцкс у нас есть документы

Паспорт тролляка?

deb
()
Ответ на: комментарий от Pinkbyte

Это все понятно, что штатное лучше и т.д.

Почему все только советуют что-то другое, а не отвечают на главный вопрос темы?

Кто ответит на вопрос:«Почему не пускает инет через пайп без предложения использования „родных“ для линукса модулей?

Mifey
() автор топика

перепишите правило pipe без keep-state и\или разберитесь как работает one_pass в этих ваших убунтах

в freebsd pipe\queue с one_pass=1 срабатывает как allow, а c one_pass=0 возвращает обработанный траффик остальным правилам

hizel ★★★★★
()
Ответ на: комментарий от Mifey

дело все в лицензировании

как они проверят что это фря а не линух?

на линуцкс у нас есть документы

какая страна, что за документы?

true_admin ★★★★★
()
Ответ на: комментарий от Mifey

Таки поддались этому… ну ладно. Найдутся же, блин ;)…

post-factum ★★★★★
()
Ответ на: комментарий от hizel

А так

ipfw add 00301 pipe 2 ip from ${MyLan} to any - это выпускаем через пайп
ipfw add 00302 allow ip from any to ${MyLan} - разрешаем из вне прнимать пакеты
пинги во внешку идут, но сайты не открываются

Mifey
() автор топика
Ответ на: комментарий от Mifey

iptables nat работает до ipfw или после?

команды вырванные из контекста не имеют смысла, надо смотреть

ipfw show
ipfw pipe show

hizel ★★★★★
()
Ответ на: комментарий от hizel
root@ubuntu-router:/etc# ipfw show
00100   0     0 allow ip from any to any via lo0
00101   0     0 deny ip from any to 127.0.0.0/8
00102   0     0 deny ip from 127.0.0.0/8 to any
00201   8  1223 allow ip from 192.168.5.0/24 to 192.168.5.0/24 via eth1
00301 124 38354 pipe 1 ip from 192.168.5.0/24 to any
00302  68 45860 allow ip from any to 192.168.5.0/24
00401  16  2023 allow ip from me to any out keep-state
00501   4   400 allow ip from any to me dst-port 22 in via eth0
00501   8  1828 deny ip from any to any
65535  49  5086 allow ip from any to any
root@ubuntu-router:/etc# ipfw pipe show
00001:   1.000 Mbit/s    0 ms burst 0 
q131073  50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
 sched 65537 type FIFO flags 0x0 0 buckets 1 active
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 ip           0.0.0.0/0             0.0.0.0/0      124    38354  0    0   0
root@ubuntu-router:/etc# 
Mifey
() автор топика
Ответ на: комментарий от Mifey

трафик идет через входящий и исходящий интерфейсы. соответственно все правила применяются для каждого интерфейса если вы не указали в правиле для какого оно интерфейса

hizel ★★★★★
()
Ответ на: комментарий от true_admin

смотря на какую проверку попадешь.

Mifey
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.