Здравствуйте.
Пытаюсь довольно длительное время настроить ipfw таким образом, чтобы трафик из инета на определенные хосты в локальной сети имел более высокий приоритет. получается отвратительно.
вот мои настройки:### rc.conf
# network settings
# это внутренний интерфейс, в локальную сеть
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"# это "внешний" - к роутеру провайдера
ifconfig_rl1="inet 192.168.1.33 netmask 255.255.255.0"# IP роутера
defaultrouter="192.168.1.1"
hostname="proxy"
gateway_enable="YES"
router_enable="YES"# daemons
inetd_enable="YES"
sshd_enable="YES"
usbd_enable="YES"
kern_securelevel="3"
kern_securelevel_enable="YES"
tcp_extensions="YES"
# ipfw
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="open"
firewall_quiet="NO"
firewall_flags=""
# natd
natd_enable="YES"
natd_interface="rl1"
natd_flags="-s -m -u"###################################
### rc.firewall (знаю что править его не приветсвуется, исправлюсь)
fwcmd="/sbin/ipfw"# loopback
${fwcmd} add 10 pass all from 192.168.0.15 to me
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8
${fwcmd} add 300 deny ip from 127.0.0.0/8 to any${fwcmd} pipe 1 config bw 128Kbit/s
${fwcmd} queue 1 config pipe 1 weight 1 mask dst-ip 0x00000000
${fwcmd} queue 2 config pipe 1 weight 99 mask dst-ip 0x00000000
${fwcmd} queue 3 config pipe 1 weight 1 mask src-ip 0x00000000
${fwcmd} queue 4 config pipe 1 weight 99 mask src-ip 0x00000000${fwcmd} 50100 add queue 1 ip from not 192.168.0.1/24 to 192.168.0.1/24{72,83,91,93}
${fwcmd} 50200 add queue 2 ip from not 192.168.0.1/24 to 192.168.0.1/24{1,15,20}
${fwcmd} 50300 add queue 3 ip from 192.168.0.1/24{72,83,91,93} to not 192.168.0.1/24
${fwcmd} 50400 add queue 4 ip from 192.168.0.1/24{1,15,20} to not 192.168.0.1/24
${fwcmd} add 20000 deny all from not 192.168.0.1/24{1,15,20,72,83,91,93} to 192.168.0.1${fwcmd} add 20072 deny all from 192.168.0.72/24{72} to not 192.168.0.1/24
# Это для ipacct подсчета трафика
${fwcmd} add 50000 tee 11111 all from any to any via rl0
${fwcmd} add 60000 divert natd all from any to any via ${natd_interface}
${fwcmd} add 65000 pass all from any to any#########################
Все это делалось с такой целью: сделать трафик с хостов/на хосты 192.168.0.1/24{1,15,20} более приоритетным, по сравнению с остальными.
Результат не тот, что ожидается. Если кто-то с хостов 192.168.0.1/24{83,91,93} подсядет на закачку файлов - забирает весь канал на себя, и серфить веб с "VIP" хостов становится практически невозможно.
Изменение значения net.inet.ip.fw.one_pass c 0 на 1 и обратно глобальных изменений не приносит, но пакеты в очереди попадают по-разному.вот что выдает ipfw show:
00010 301 15751 allow ip from 192.168.0.15 to me
00100 8 400 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
20000 0 0 deny ip from not 192.168.0.0/24{1,15,20,72,83,91,93} to 192.168.0.1
20072 0 0 deny ip from 192.168.0.0/24{72} to not 192.168.0.0/24
50000 40283 31143305 tee 11111 ip from any to any via rl0
50100 0 0 queue 1 ip from not 192.168.0.0/24 to 192.168.0.0/24{72,83,91,93}
50200 0 0 queue 2 ip from not 192.168.0.0/24 to 192.168.0.0/24{1,15,20}
50300 14749 647111 queue 3 ip from 192.168.0.0/24{72,83,91,93} to not 192.168.0.0/24
50400 2150 237889 queue 4 ip from 192.168.0.0/24{1,15,20} to not 192.168.0.0/24
60000 39905 31039342 divert 8668 ip from any to any via rl1
65000 39905 31039342 allow ip from any to any
65535 10 3744 allow ip from any to any
а вот что ipfw pipe show
00001: 128.000 Kbit/s 0 ms 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00001: weight 1 pipe 1 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00002: weight 99 pipe 1 50 sl. 0 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00003: weight 1 pipe 1 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 tcp 192.168.0.91/3344 82.193.101.221/80 15269 674472 0 0 0
q00004: weight 99 pipe 1 50 sl. 1 queues (1 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
0 icmp 192.168.0.15/0 194.67.57.26/0 2215 242220 0 0 0
Буду благодарен, если ткнете в косяки, и поможете от них избавиться
>Все это делалось с такой целью: сделать трафик с хостов/на хосты 192.168.0.1/24{1,15,20}
>более приоритетным, по сравнению с остальными.
Имеется в виду интернет-трафик.
Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для каждого dst-ip. А вся проблема кроется в том, что в инете гуляет статья некого Кузьмича (такой ник у него на hub.ru), где он ошибочно не ту маску написал, а никто так и не исправил.
>Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для
>каждого dst-ip. А вся проблема кроется в том, что в инете
>гуляет статья некого Кузьмича (такой ник у него на hub.ru), где
>он ошибочно не ту маску написал, а никто так и не
>исправил.+плюс к выше сказанному
можешь ограничить кол-во сессий для
не приоритетных хостов, для того чтобы при использовании программ закачек они не "душили" друг друга
>Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для
>каждого dst-ip. А вся проблема кроется в том, что в инете
>гуляет статья некого Кузьмича (такой ник у него на hub.ru), где
>он ошибочно не ту маску написал, а никто так и не
>исправил.
Какая маска будет правильной в этом случае?
(кстати статейка, с которой я писал это лежит на опеннете
http://www.opennet.me/base/net/ipfw_guide.txt.html
)