Страница 1 из 1

Работающий IPFW, нужна помощь по Dummynet!

Добавлено: 2013-12-16 9:28:06
xtreitd
Так как сервак 1шт. и он сейчас работает, а я в этих делах не знаток.
Нужны 100% рабочие правила, поэтому прошу вашей помощи!! Буду очень признателен.
DUMMYNET через ядро!
За основу взял эту статью: клац
Со скриптом все понятно, прощу помощи именно с порядком правил, чтобы я мог вставить их и у меня все работало, а именно:
add skipto 39999 ip from any to any tcpflags ack iplen 0-128
39999 - так же оставить или же под мои правила надо что то другое выставить?
add 40000 check-state
тут тоже самое, какой номер правилу лучше дать?
add allow ip from any to any via lo0
это оставлять?

мой /etc/rc.conf :

Код: Выделить всё

gateway_enable="YES"
ifconfig_em0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_re0="inet 192.168.0.1 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
firewall_enable="YES"
firewall_type="/etc/firewall"
мой /etc/sysctl.conf (потом сменю на 0):

Код: Выделить всё

net.inet.ip.fw.one_pass=1
мой /etc/firewall :

Код: Выделить всё

# разрешаем все через интерфейс локальной сети
add 1040 allow ip from any to any via re0

# боимся непонятного
add 1050 deny ip from any to 192.168.0.0/24 in recv em0
add 1060 deny ip from 192.168.0.0/24 to any in recv em0
add 1070 deny ip from any to 172.16.0.0/12 in recv em0
add 1080 deny ip from 172.16.0.0/12 to any in recv em0
add 1090 deny ip from any to 10.0.0.0/8 in recv em0
add 10100 deny ip from 10.0.0.0/8 to any in recv em0
add 10110 deny ip from any to 169.254.0.0/16 in recv em0
add 10120 deny ip from 169.254.0.0/16 to any in recv em0

# настройка ната.
# опции переноса строк "\" надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать "проброс портов"
nat 1 config log if em0 reset same_ports deny_in

# redirect_port tcp 1.2.3.4:6881 6881 \
# redirect_port udp 1.2.3.4:4444 4444 \
# redirect_port tcp 192.168.1.24:25 25

# заварачиваем все что проходит через внешний интерфейс в нат
add 50000 nat 1 ip from any to any via em0

# SSH
add 30230 allow tcp from any to 192.168.1.3 dst-port 22 via em0
add 30240 allow tcp from 192.168.1.3 to any src-port 22 via em0

# боимся непонятного
add 65534 deny all from any to any

Dummynet:

Код: Выделить всё

# DUMMYNET
# учтите - чтобы пакеты не выпадали на трубе из файрволла (типа,
# как на разрешающем правиле) надо поставить переменную sysctl
# net.inet.ip.fw.one_pass в 0 (по дефолту - 1) и внести это в
# файл /etc/sysctl.conf - иначе при перезагрузке потеряется

add pipe 1 ip from em0 to re0
pipe 1 config bw 100Mbit/s
add pipe 2 ip from em0 to re0
pipe 2 config bw 100Mbit/s

# `спецтруба` для мелкиз пакетов типа ack - ибо если они теряются
# то повторные пакеты будут большего размера

add pipe 3 ip from any to any tcpflags ack iplen 0-128
pipe 3 config bw 100Mbit/s

# Пропускаем следующие трубы - чтобы мелкие пакеты не лимитировались
# пропускать надо до первого нормального (после труб) правила.
# я ему присвоил жёсткий номер - файрволл раздаёт номера с последнего правила
# (если номер жёстко не задан) с интервалом определяемым переменной sysctl
# net.inet.ip.fw.autoinc_step - по дефолту - 100

add skipto 39999 ip from any to any tcpflags ack iplen 0-128

# запускаем счётчик
i=4
# цикл по $i
while [ $i != 252 ]
do
# добавляем трубу для IP адреса
add pipe $i ip from not re0 to 192.168.0.${i}
# проверяем - часом не мой ли это IP
if [ $i -eq 13 -o $i -eq 22 ]
then
# мой инет :)))
pipe $i config bw 100Mbit/s
else
# не мой IP - режем скорость
pipe $i config bw 64000 bit/s
fi
# увеличиваем $i на единичку
i=$(($i+1))
done

# проверяем временные правила (перед этим правилом возврщаются мелкие
# пакеты в файрволл) :
	
add 40000 check-state

# разрешаем всё по интерфейсу lo0 (петля)
 add allow ip from any to any via lo0

Re: Работающий IPFW, нужна помощь по Dummynet!

Добавлено: 2013-12-16 14:31:24
xtreitd
Ребят, очень надо, помогите разобраться! Под какими номерами, следует добавить DUMMYNET чтобы он корректно заработал?!