Пробую сделать систему ограничения и контроля трафика на ipfw с помощью pipe.
При этом хочется ограничивать только внешний канал, а работу из сети с сервером оставить без лимита. Для этого я написал следующую конфигурацию.
Создаю 3 pipe:
pipe 1 (для внутренней сети 1gbit),
pipe 2 (для для трафика от меня в интернет 180kbit),
pipe 3 (для для трафика ко мене из интернета 180kbit).
Затем делаю 6 очередей:
1 и 11 (для внутренней сети pipe 1),
2 (для для трафика от меня в интернет pipe 2 с Высоким преоритетом),
3 (для для трафика от меня в интернет pipe 2 с Низким преоритетом),
22 (для для трафика ко мене из интернета pipe 3 с Высоким преоритетом),
33 (для для трафика ко мене из интернета pipe 3 с Низким преоритетом).
Получается следующая картина:
1. Трафик для внутренней сети почему то тоже запихивается во 2 и 3 pipe и в результате все тормозит доже при отображении telnetа (это если что то еще качать по ftp из инета).
2. Скорость скачки с инета вместо положенных 180 kbit дает только половину (те скорость только 10 kb вместо 22 kb). Но если закоментировать 7 и 8 правило то скорость скачки становится как раз 20 kb, только внутренняя сеть все так же тормозит.
В чем может быть причина?
*************************************************************************
#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw disable one_passpeer="192.168.101.136"
localhost="192.168.101.254"
lanaddr="192.168.101.0/24"
inetaddr="84.150.110.16"
ipfw="ipfw -q"
lancard="rl0"
wancard="tun0"
upload="180kbps"
download="180kbps"
highprior="50"
lowprior="2"
highport="20,21,22,23,25,80,110,179,443,2222,3389,8080,8081"
${ipfw} pipe 1 config bw 1000Mbit/s queue 20
${ipfw} pipe 2 config bw ${upload} queue 20
${ipfw} pipe 3 config bw ${download} queue 20
${ipfw} queue 1 config pipe 1 weight 100 queue 20 mask dst-ip 0xffffffff
${ipfw} queue 11 config pipe 1 weight 100 queue 20 mask src-ip 0xffffffff
${ipfw} queue 2 config pipe 2 weight ${highprior} queue 20 mask dst-ip 0xffffffff
${ipfw} queue 3 config pipe 2 weight ${lowprior} queue 20 mask dst-ip 0xffffffff
${ipfw} queue 22 config pipe 3 weight ${highprior} queue 20 mask src-ip 0xffffffff
${ipfw} queue 33 config pipe 3 weight ${lowprior} queue 20 mask src-ip 0xffffffff
#---begin-lan network
${ipfw} add 1 queue 1 ip from ${localhost} to ${lanaddr} out via ${lancard}
${ipfw} add 2 queue 11 ip from ${lanaddr} to ${localhost} in via ${lancard}
#---end-lan network
#---begin-wan network
${ipfw} add 5 queue 22 ip from any to any ${highport} out xmit ${wancard}
${ipfw} add 6 queue 2 ip from any ${highport} to any out xmit ${lancard}
${ipfw} add 7 queue 33 ip from any to any out xmit ${wancard}
${ipfw} add 8 queue 3 ip from any to any out xmit ${lancard}
#---end-wan network
${ipfw} add 100 pass all from ${peer} to any in via ${lancard}
${ipfw} add 101 divert natd all from ${peer} to any out via ${wancard}
${ipfw} add 102 divert natd all from any to any in via ${wancard}
${ipfw} add 103 pass all from me to any out via ${wancard}
${ipfw} add 104 pass all from any to ${peer} out via ${lancard}
${ipfw} add 105 pass all from any to ${peer} in via ${wancard}
${ipfw} add 65000 pass all from any to any
*************************************************************************