|
2.3, pavlinux (ok), 18:06, 04/12/2009 [^] [^^] [^^^] [ответить]
| +/– |
>Откуда взять CONNMARK ? Его нужно вставть в ядро ?
modprobe xt_CONNMARK;
| |
|
1.2, pavlinux (ok), 17:55, 04/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Linux Router ISP
>
>ppp0 10.0.0.1|-----|10.0.0.2|
>ppp1 10.0.0.3|-----|10.0.0.3| <- че за хрень?
>ppp2 10.0.0.5|-----|10.0.0.4|
>ppp3 10.0.0.7|-----|10.0.0.5|
Какя-то каша тут
> ip route add default via 10.0.0.6 dev ppp3 table sat3
> ip route add default via 10.0.0.8 dev ppp3 table sat4
где живут 10.0.0.6 и 10.0.0.8 ?
Может так ?
Linux Router ISP
ppp0 10.0.0.1|-----|10.0.0.2|
ppp1 10.0.0.3|-----|10.0.0.4|
ppp2 10.0.0.5|-----|10.0.0.6|
ppp3 10.0.0.7|-----|10.0.0.8|
| |
1.4, iZEN (ok), 21:12, 04/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Решение на PF:
lan_net = "192.168.0.0/24"
int_if = "dc0" # 192.168.0.1
ext_if1 = "fxp0" # 10.0.0.1
ext_if2 = "fxp1" # 10.0.0.3
ext_if3 = "fxp2" # 10.0.0.5
ext_if4 = "fxp3" # 10.0.0.7
ext_gw1 = "10.0.0.2"
ext_gw2 = "10.0.0.4"
ext_gw3 = "10.0.0.6"
ext_gw4 = "10.0.0.8"
set skip on { lo }
scrub in all
block all
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2), ($ext_if3 $ext_gw3), ($ext_if4 $ext_gw4) } round-robin from $lan_net
pass out all
| |
|
2.6, Добрый Дохтур (?), 00:45, 05/12/2009 [^] [^^] [^^^] [ответить]
| +/– |
а если каналы неравноценны и каждому каналу надо отдельный вес?
а в случае sip как сделать так, чтобы не пустить rtp через другой канал сверхумным RR?
| |
|
3.7, iZEN (ok), 07:25, 05/12/2009 [^] [^^] [^^^] [ответить]
| +/– |
Это уже частности и... тоже решаются красиво (я надеюсь).
| |
|
2.10, ро (?), 01:07, 08/12/2009 [^] [^^] [^^^] [ответить]
| +/– |
красиво ,но не гибко
например упал линк, в iptables удаляем 1 коммандой 1 правило(из cron) и дохлый линк не юзается.
а как быть с pf?
| |
|
1.5, pavlinux (ok), 23:10, 04/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ах да,
>равномерно распределяет
Поясните понятие равномерности!
1. по NEW пакетам?
2. по CONNECT
2. по трафику?
3. по времени?
Есть 800 рабочих соединений, после того как
убились 200 соединений на одном фейсе,
оно без о всяких предпочтений продолжает
по кругу распределять?
Так что предлагаю переименовать тему в "Поочерёдное распределение трафика..."
| |
1.8, XoRe (ok), 18:42, 05/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Балансировка трафика через разных провайдеров - это всегда тонкое дело с кучей ньюансов.
Можно только поблагодарить за рабочие примеры под iptables и под pf.
| |
1.9, unixlamaster (?), 13:55, 06/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
У меня 2 модема, сделал следующее:
export P1='ifconfig ppp0|grep P-t-P|awk -F: '{print $3}'|awk '{print $1}''
export P2='ifconfig ppp1|grep P-t-P|awk -F: '{print $3}'|awk '{print $1}''
export IP1='ifconfig ppp0|grep P-t-P|awk -F: '{print $2}'|awk '{print $1}''
export IP2='ifconfig ppp1|grep P-t-P|awk -F: '{print $2}'|awk '{print $1}''
ip rule add prio 50 fwmark 1 table mts1
ip route add default via $P1 dev ppp0
ip rule add prio 210 from $IP2 table mts2
ip route add default via $P2 dev ppp1 table mts2
iptables -t mangle -N NEW_OUT_CONN
# Выбираем новые сессии
# 10.200.0.0/24 локальная сеть
# 172.28.0.0/16 сеть P2P выделяемая оператором
iptables -t mangle -A PREROUTING -s 10.200.0.0/24 -m state --state NEW,RELATED -j NEW_OUT_CONN
iptables -t mangle -A PREROUTING -s 172.28.0.0/16 -m state --state NEW,RELATED -j NEW_OUT_CONN
# Восстанавливает значение nfmark из CONNMARK
iptables -t mangle -A PREROUTING -s 10.200.0.0/24 -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -s 172.28.0.0/16 -j CONNMARK --restore-mark
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 0
# Каждый второй пакет
iptables -t mangle -A NEW_OUT_CONN -m statistic --mode nth --every 2 -j RETURN
iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 1
Так вот, нужно что бы каждый второй пакет шёл через следующий модем, а идёт всё только через ppp0. Что я не так сдела, подскажите пожалуйста?
| |
1.12, pavlinux (ok), 18:40, 08/12/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Кто меньше?
#!/bin/bash
echo -ne "\n101\tT1\n102\tT2\n103\tT3\n" < /etc/iproute2/rt_tables; # "<" - перевернуть :)
# IF LOCAL NET REMOTE TABLE
A="eth1 192.168.1.1 192.168.1.0/24 8.8.4.4 T1"
B="eth2 192.168.2.1 192.168.2.0/24 4.4.1.1 T2"
C="eth3 192.168.3.1 192.168.3.0/24 4.4.2.2 T3"
PRIORITY=50;
j=0;
for i in "$A" "$B" "$C"
do
$((j++));
set -- $i;
echo "ip route add $3 dev $1 src $2 table $5;"
echo "ip route add default via $4 table $5;"
echo "ip route add default scope global nexthop via $4 dev $1 weight 1;"
echo "ip rule add prio $((PRIORITY + j)) fwmark $j table $5"
done
echo "ip route add default via 192.168.0.1 dev eth0;"
| |
|