URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4923
[ Назад ]

Исходное сообщение
"ipfw pipe "

Отправлено guseniza , 25-Авг-11 01:42 
Уважаемые знатоки и гуру, я знаю что подобная тема не раз обсуждалась и обсасывалась. Но при том, что я перечитал не один десяток статей по данной теме, я все-равно не могу справиться с задачей:
Есть сервер FreeBSD 8.2
Использую фаервол ipfw. (не советуйте, пожалуйста другой, т.к. задание организовать именно на этом).
Необходимо зажать трафик для локальной сети.
В качестве NAT используется ipnat

Ядро:
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET

kldstat
Id Refs Address    Size     Name
1    3 0xc0400000 ac7748   kernel
2    1 0xc4597000 35000    ipl.ko

rc.conf
        gateway_enable="YES"
        firewall_enable="YES"
        firewall_script="/etc/ipfw/rc.firewall"
        ipnat_enable="YES"
        ipnat_rules="/etc/ipfw/ipnat.conf"


rl0 - внешний интерфейс
1.2.3.4 - внешний ип
fxp0 - интерфейс, смотрящий в локалку
192.168.0.0/24 -локальная сеть

Правила которые прописываю на фаерволе:
${fw} pipe 1 config bw 550Kbit/s queue 100 mask src-ip 0xffffffff
${fw} pipe 2 config bw 500Kbit/s queue 100 mask dst-ip 0xffffffff
${fw} add  pipe 1 ip from 192.168.0.0/24 to any via out rl0 #
${fw} add  pipe 2 ip from any to 192.168.0.0/24 via in rl0 # можно без via, но результат тот же
${fw} add  allow all from any to any via rl0
${fw} add  allow all from any to any via fxp0
Последние 2 правила для теста (чтоб инет был :) )

В общем, при такой конфигурации в локалке интернет есть НО ничем не ужимается.
Т.е. могу качать на все 50Мбит/с что выделил провайдер.

ipfw show
00100 59343 31668927 allow ip from any to any via rl0
00200 55963 31483504 allow ip from any to any via fxp0
65535     0        0 deny ip from any to any

Как видите, нет pipe.


ipfw pipe  show
00001: 550.000 Kbit/s    0 ms burst 0
q131073 100 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
sched 65537 type FIFO flags 0x1 64 buckets 0 active
    mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
00002: 500.000 Kbit/s    0 ms burst 0
q131074 100 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
sched 65538 type FIFO flags 0x1 64 buckets 0 active
    mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
---------------------------

Далее пробую немного другую конфигурацию:

${fw} pipe 1 config bw 5000Kbit/s queue 100
${fw} queue 1 config pipe 1 weight 50 queue 100 mask dst-addr 0xffffffff
${fw} queue 11 config pipe 1 weight 50 queue 100 mask src-addr 0xfffffff
${fw} add queue 1 ip from any to 192.168.0.0/24
${fw} add queue 11 ip from 192.168.0.0/24 to any
${fw} add  allow all from any to any via rl0
${fw} add  allow all from any to any via fxp0


ipfw show
00100  59  6968 queue 1 ip from any to 192.168.0.0/24
00200 732 39588 queue 11 ip from 192.168.0.0/24 to any
00300 546 36975 allow ip from any to any via rl0
00400   0     0 allow ip from any to any via fxp0
65535   0     0 deny ip from any to any
(На сколько я могу судить все эти правила пропускают пакеты, т.к. количество их меняется)

ipfw pipe show - ничего не показывает.

Интернет пропадает в локалке.


С этого сервера на комп из локалки:
ping 192.168.0.1
ping: sendto: No buffer space available
(c queue "игрался", но результата нет )


Я знаю, что где-то туплю, но не понимаю где именно. голова уже пухнет, и скорее всего, упускаю какую-то мелочь.
И вполне возможно, что чего-то не понимаю.  
Буду очень благодарен за ответ и разъяснения.
На фрю сел только 3 недели назад и поэтому еще салага :)


Содержание

Сообщения в этом обсуждении
"ipfw pipe "
Отправлено mglushak , 25-Авг-11 10:31 
> Уважаемые знатоки и гуру, я знаю что подобная тема не раз обсуждалась
> и обсасывалась. Но при том, что я перечитал не один десяток
> статей по данной теме, я все-равно не могу справиться с задачей:

${fw} pipe 1 config bw 550Kbit/s queue 100 mask src-ip 0xffffffff
> ${fw} pipe 2 config bw 500Kbit/s queue 100 mask dst-ip 0xffffffff
> ${fw} add  pipe 1 ip from 192.168.0.0/24 to any via out
> rl0 #
> ${fw} add  pipe 2 ip from any to 192.168.0.0/24 via in
> rl0 # можно без via, но результат тот же

================================================================
/sbin/ipfw pipe 1 config bw 550Kbit/s mask dst-ip 0xffffffff
/sbin/ipfw pipe 2 config bw 500Kbit/s mask dst-ip 0xffffffff
/sbin/ipfw add pipe 1 all from any to 192.168.0.0/24 via $in
/sbin/ipfw add pipe 2 all from 192.168.0.0/24 to any via $in
===================================
$in внешний ифейс
и будит тебе счастье


"ipfw pipe "
Отправлено mglushak , 25-Авг-11 10:36 
>[оверквотинг удален]
>> ${fw} add  pipe 2 ip from any to 192.168.0.0/24 via in
>> rl0 # можно без via, но результат тот же
> ================================================================
> /sbin/ipfw pipe 1 config bw 550Kbit/s mask dst-ip 0xffffffff
> /sbin/ipfw pipe 2 config bw 500Kbit/s mask dst-ip 0xffffffff
> /sbin/ipfw add pipe 1 all from any to 192.168.0.0/24 via $in
> /sbin/ipfw add pipe 2 all from 192.168.0.0/24 to any via $in
> ===================================
> $in внешний ифейс
> и будит тебе счастье

==============================
ой $in внутрений ифейс


"ipfw pipe "
Отправлено guseniza , 25-Авг-11 10:45 
>[оверквотинг удален]
>> ${fw} add  pipe 2 ip from any to 192.168.0.0/24 via in
>> rl0 # можно без via, но результат тот же
> ================================================================
> /sbin/ipfw pipe 1 config bw 550Kbit/s mask dst-ip 0xffffffff
> /sbin/ipfw pipe 2 config bw 500Kbit/s mask dst-ip 0xffffffff
> /sbin/ipfw add pipe 1 all from any to 192.168.0.0/24 via $in
> /sbin/ipfw add pipe 2 all from 192.168.0.0/24 to any via $in
> ===================================
> $in внешний ифейс
> и будит тебе счастье

Большое спасибо. Проверю в обед с локальной сети, а пока на сервере прописал и получил:
ipfw pipe show
00001: 550.000 Kbit/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 0x1 64 buckets 0 active
    mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
00002: 500.000 Kbit/s    0 ms burst 0
q131074  50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
sched 65538 type FIFO flags 0x1 64 buckets 4 active
    mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  2 ip           0.0.0.0/0      80.243.157.229/0        1       52  0    0   0
138 ip           0.0.0.0/0          2.60.2.242/0        1       52  0    0   0
24 ip           0.0.0.0/0             8.8.8.8/0        1       61  0    0   0
153 ip           0.0.0.0/0        93.80.235.56/0        1       52  0    0   0

Большое спасибо:))))


"ipfw pipe "
Отправлено guseniza , 25-Авг-11 11:00 
Произошло для меня не совсем понятное...
при вкючении pipe я по TeamViewer перестаю видеть компы из локалки. выключаю - спокойно захожу... Есть ли у кого мысли?



"ipfw pipe "
Отправлено guseniza , 25-Авг-11 11:16 
> Произошло для меня не совсем понятное...
> при вкючении pipe я по TeamViewer перестаю видеть компы из локалки. выключаю
> - спокойно захожу... Есть ли у кого мысли?

Все заработало. Спасибо за помощь :)


"ipfw pipe "
Отправлено DiJey , 24-Окт-11 11:58 
> Все заработало. Спасибо за помощь :)

что сделал то та же проблема, только не заработало


"ipfw pipe "
Отправлено guseniza , 25-Окт-11 14:07 
>> Все заработало. Спасибо за помощь :)
> что сделал то та же проблема, только не заработало

net.inet.ip.fw.one_pass - логическая переменная. При ее установки в 0 пакет, выходящий из dummynet, продолжит свое путешествие по правилам firewall. В противном случае pipe действует, как allow. Значение по умолчанию - 1

у меня сейчас:
sysctl -a | grep one_pass
net.inet.ip.fw.one_pass: 0

Поробуйте так.