LINUX.ORG.RU
ФорумAdmin

Как эффективнее реализовать разделение трафика на местный и зарубежный ?


0

0


Есть файл содержащий адреса и маски Латвии (http://www.nic.lv/local.net)

Поскольку ранее используемый мной способ разделения трафика с помощью
расширеня возможностей iptables-geoip не работает с ядром 2.6.18.1
пришлось реализовывать его самому,
так взяв за оправную точку пример: http://www.uinc.ru/articles/37/


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

#!/bin/bash

cd /ISP-serv/

DEV_LAN=eth0
DEV_WAN=eth1


#########################################################################
# create chain: LV_ACCEPT
#########################################################################
LV='test-server/conf-files/mark-foreign/latvia.network'
./ipt -t mangle -N LV_ACCEPT

# ACCEPT Latvia networks trafic *********************
for nw in $(cut -d: -f1 $LV)
do
# mark trafic from WAN-->LAN
./ipt -t mangle -A LV_ACCEPT -o $DEV_LAN -p tcp -s $nw -j ACCEPT

# mark trafic from WAN<--LAN
./ipt -t mangle -A LV_ACCEPT -o $DEV_WAN -p tcp -d $nw -j ACCEPT
done


#########################################################################
# create chain: HANDSHAKE
#########################################################################
./ipt -t mangle -N HANDSHAKE
./ipt -t mangle -A HANDSHAKE -j MARK --set-mark 10
./ipt -t mangle -A HANDSHAKE -j LV_ACCEPT
./ipt -t mangle -A HANDSHAKE -j MARK --set-mark 100
./ipt -t mangle -A HANDSHAKE -j ACCEPT


#########################################################################
# create chain: HTTP_TRANSFER
#########################################################################
./ipt -t mangle -N HTTP_TRANSFER
./ipt -t mangle -A HTTP_TRANSFER -j MARK --set-mark 30
./ipt -t mangle -A HTTP_TRANSFER -j LV_ACCEPT
./ipt -t mangle -A HTTP_TRANSFER -j MARK --set-mark 300
./ipt -t mangle -A HTTP_TRANSFER -j ACCEPT


#########################################################################
# create chain: HTTP
#########################################################################
./ipt -t mangle -N HTTP
./ipt -t mangle -A HTTP -m connbytes --connbytes 1048576: --connbytes-dir both --connbytes-mode bytes -j HTTP_TRANSFER
./ipt -t mangle -A HTTP -j MARK --set-mark 20
./ipt -t mangle -A HTTP -j LV_ACCEPT
./ipt -t mangle -A HTTP -j MARK --set-mark 200
./ipt -t mangle -A HTTP -j ACCEPT



#########################################################################
# JUMPING to chains
#########################################################################

# check HTTP
./ipt -t mangle -A POSTROUTING -m layer7 --l7proto http -j HTTP


# check HANDSHAKE
./ipt -t mangle -A POSTROUTING -p tcp -m tcp --tcp-flags ! SYN,RST,ACK ACK -j HANDSHAKE
./ipt -t mangle -A POSTROUTING -p tcp -m length --length 0:128 -j HANDSHAKE
./ipt -t mangle -A POSTROUTING -m layer7 --l7proto dns -j HANDSHAKE

# mark the rest as OTHERS traffic
./ipt -t mangle -A POSTROUTING -j MARK --set-mark 40
./ipt -t mangle -A POSTROUTING -j LV_ACCEPT
./ipt -t mangle -A POSTROUTING -j MARK --set-mark 400
./ipt -t mangle -A POSTROUTING -j ACCEPT


Много времени задумывать над скриптом не нашлось,
поэтому в этих строках как мне кажется есть нерациональность,
связанная с тем что пакеты для зарубежного трафика маркируются
дважды (пермаркируются)

Хочется узнать насколько эффективнее (меньше задержка для
интерактивного трафика в том числе) будет подход при
котором для местного трафика создать отдельное виртуальное
сетевое устройство типа IMQ и туда направлять пакеты и на
IMQ навесить управление трафиком HTB.

Или постараться разобраться с realm?




Параметры сети с для которой маркируются пакеты

Забыл уточнить параметры сети, что бы не подумали что у меня
магистраль стоит:)

В локалке порядка 80 пользователей, студенты, которые освоили практически все виды качки.

Полоса маленькая да и просто смешная, на всю организацию
выделено 4МБит/сек, из них 1МБит/сек зарубежный,
поэтому на лакалку с 80 пользователями с помощью htb
местный до 180КБайт/сек (если сдлеать более высокой
наблюдается тормознутость канала от провайдера) и 80КБайт/сек
для зарубежки.





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

Не использовал твой способ, но у меня так:

ipset + imq + нужный тебе шейпер (к примеру твой же HTB)

в ipset набиваешь Латвийские сети и используешь его вместо -s и -d в iptables

ipset -n lvaccept -A x.x.x.x

iptables .... -m set --set lvaccept -j MARK ... марк для Латвийского
iptables .... -m set --set ! lvaccept -j MARK ... марк для другого

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