Bolik_Stav 0 Опубликовано: 2009-03-17 21:34:54 Share Опубликовано: 2009-03-17 21:34:54 Есть два канала интернета... нужно настроить онконект так, что бы при тарифе "трафф" инет брался с первого канала , а при " анлим" со второго... и при этом резалась скорость Инет берётся по средствам PPPoE ( первое подключение к каналу с трафиком ppp0 ( 77.77.77.1 ) , второе ppp1 ( 77.77.77.2)) сетевуха которая смотрит в сеть eth0 Щас и анлим и траффик берутся с ppp0 , а нужно разграничить. Вот пример скриптов которые сейчас OnConnect #!/bin/bash # Login LOGIN=$1 #user IP ip=$2 #cash CASH=$3 #user ID ID=$4 eth=ppp0 eth_local=eth0 mir=77.77.77.1 tarif=`/etc/stargazer/tarif.php $2` iptables -t filter -A FORWARD -s $ip -j QUEUE iptables -t filter -A FORWARD -d $ip -j QUEUE prioid="${ID}0" if [ "$tarif" = "traff-64" ]; then speed=64 elif [ "$tarif" = "traff-128" ]; then speed=128 elif [ "$tarif" = "anlim-64" ]; then speed=64 elif [ "$tarif" = "anlim-128" ]; then speed=128 else speed=64 fi if [ $speed != 0 ]; then tc class add dev $eth_local parent 1:1 classid 1:${prioid} htb rate $speed'kbit' burst 20k tc filter add dev $eth_local parent 1: protocol ip prio ${prioid} u32 match ip dst $ip flowid 1:${prioid} fi iptables -t nat -A POSTROUTING -s $ip -d 0.0.0.0/0 -j MASQUERADE > /dev/null echo $1 $2 $prioid $speed $tarif >> `date +"%Y/%m/%d-%T"` >> /var/log/stg/connect.log OnDisconnect #!/bin/bash # Login LOGIN=$1 #user IP ip=$2 #cash CASH=$3 #user ID ID=$4 eth=ppp0 eth_local=eth0 iptables -t filter -D FORWARD -s $ip -j QUEUE > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -s $ip -j QUEUE > /dev/null done iptables -t filter -D FORWARD -d $ip -j QUEUE > /dev/null while [ $? -eq 0 ] do iptables -t filter -D FORWARD -d $ip -j QUEUE > /dev/null done iptables -t nat -D POSTROUTING -s $ip -d 0.0.0.0/0 -j MASQUERADE > /dev/null while [ $? -eq 0 ] do iptables -t nat -D POSTROUTING -s $ip -d 0.0.0.0/0 -j MASQUERADE > /dev/null iptables -t nat -D POSTROUTING -s $ip -o $eth -j SNAT --to-source $mir > /dev/null done tc filter del dev $eth_local pref ${prioid} while [ $? -eq 0 ] do tc filter del dev $eth_local pref ${prioid} done tc class del dev $eth_local classid 1:${prioid} while [ $? -eq 0 ] do tc class del dev $eth_local classid 1:${prioid} done echo $1 `date +"%Y/%m/%d-%T"` >> /var/log/stg/disconnect.log Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-03-18 08:14:51 Share Опубліковано: 2009-03-18 08:14:51 Сделать две таблицы маршрутизации: traff и unlim. В первой прописать маршрут по умолчанию через ppp0, во второй - через ppp1. В скриптах модифицировать список правил, по которым пакеты попадают в таблицы. man ip Пример: # ip ru a from 10.0.0.2 table traff # ip ru a from 10.0.0.3 table unlim # ip r r default via 77.77.77.1 table traff # ip r r default via 77.77.77.2 table unlim Ссылка на сообщение Поделиться на других сайтах
Bolik_Stav 0 Опубліковано: 2009-03-22 09:45:41 Автор Share Опубліковано: 2009-03-22 09:45:41 за полностью готовый вариант скриптов готов заплатить 20 баксов Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2009-03-22 11:37:55 Share Опубліковано: 2009-03-22 11:37:55 20 баксов отдай авторам или нуждающимся. 1. Первоначальная настройка таблиц маршрутизации: #!/bin/bash P0_NET=192.168.1.0/24 IF0=eth1 IF1=eth1 IP1=192.168.25.1 P1=192.168.25.2 P1_NET=192.168.25.0/24 IF2=eth2 IP2=192.168.3.1 P2=192.168.3.2 P2_NET=192.168.3.0/24 #clear tables&routes ip route flush table T1 ip route flush table T2 ip rule del from $IP1 table T1 ip rule del from $IP2 table T2 ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2 ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2 ip rule add from $IP1 table T1 ip rule add from $IP2 table T2 #local routes for other tables ip route add $P0_NET dev $IF0 table T1 ip route add $P1_NET dev $IF1 table T2 ip route add $P2_NET dev $IF2 table T1 #loopback ip route add 127.0.0.0/8 dev lo table T1 ip route add 127.0.0.0/8 dev lo table T2 #default route ip route add default via $P1 Где: P0_NET - подсеть, смотрящая на клиентов, IF0 - интерфейс, смотрящий на клиентов IF1 - фейс, смотрящий на 1 шлюз, IP1 - айпи фейса IF1, P1 - адрес шлюза P1_NET - подсеть шлюза IF2 и прочее - аналогично. У меня номер канала выбирается из юзердата1 Скрипты: в конект строки: tableR=$(grep -i "^Userdata1=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") table=$(echo $tableR | grep "^[0-9]*[0-9]$") if [ -n "$table" ] then ip rule add from $IP table T"$table" fi if [ "$table" = "2" ] then iptables -t nat -A POSTROUTING -s $IP -o eth2 -j SNAT --to-source 192.168.3.1 else iptables -t nat -A POSTROUTING -s $IP -o $int_iface -j SNAT --to-source 192.168.25.1 fi дисконект: tableR=$(grep -i "^Userdata1=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") table=$(echo $tableR | grep "^[0-9]*[0-9]$") if [ -n "$table" ] then ip rule del from $IP table T"$table" fi if [ "$table" = "2" ] then iptables -t nat -D POSTROUTING -s $IP -o eth2 -j SNAT --to-source 192.168.3.1 else iptables -t nat -D POSTROUTING -s $IP -o $int_iface -j SNAT --to-source 192.168.25.1 fi Ну и не забыть в /etc/iproute2/rt_tables добавить след. строки: 200 T1 201 T2 в самый конец файла. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас