Форум на Kuban.ru (http://forums.kuban.ru/)
-   Сети и их администрирование (http://forums.kuban.ru/f1029/)
-   -   Ubuntu и два pppoe к провайдеру (http://forums.kuban.ru/f1029/ubuntu_i_dva_pppoe_k_provajderu-5364894.html)

40KHYTbIU 07.02.2014 11:05

Ubuntu и два pppoe к провайдеру
 
Ситуация:
Автоматом поднимаются два подключения pppoe через разные eth интерфейсы к одному провайдеру(бывает так, что шлюз одинаковый!)

Задача:
Необходимо иметь доступ к машине одновременно по двум внешним подключениям и из локалки в интернет.
И так же не терять выход в интернет, если одно из подключений отвалилось. Сейчас оба подключения забирают на себя одеяло при подключении.
В итоге работает только одно, то что подключилось последним и стало шлюзом по умолчанию, если его отключить работает первое.

Пробовал маркировать в iptables и рулить через таблицы, но что-то не получилось. Можно как то дебажить маркирование пакетов и работу правил?
Так же не понимаю как разрулить если шлюз одинаковый, переподключаться пока они не станут разные? =).

Хотел бы получить возможные варианты реализации и чем подробнее тем лучше =)

wladuha 07.02.2014 11:45

сколько платишь?

droidman 07.02.2014 14:35

[quote=40KHYTbIU;34040160]Можно как то дебажить маркирование пакетов и работу правил?[/quote]
[code]-j LOG[/code] или тупо смотришь количество пакетов в статистике [code]iptables -n -L -v -t nat[/code]

[quote=40KHYTbIU;34040160]Хотел бы получить возможные варианты реализации[/quote]
посоветую вот [url=http://www.shorewall.net/MultiISP.html]это[/url], ибо с нуля маркировать/маршрутить будет тяжко

midnightmoon 07.02.2014 22:31

давай так. настраиваем подключение, а за фаервол отдельно платишь.

40KHYTbIU 08.02.2014 00:29

Набросал такое скрипт

[em]#!/bin/bash

echo "1">/proc/sys/net/ipv4/ip_forward
echo "0">/proc/sys/net/ipv4/conf/all/rp_filter

iptables -t nat -F
iptables -t filter -F
iptables -t mangle -F

ip rule delete table dsl1
ip rule delete table dsl2
ip route delete table dsl1
ip route delete table dsl2

iptables -t mangle -A PREROUTING -i ppp0 -j MARK --set-mark 0x1111
iptables -t mangle -A PREROUTING -i ppp1 -j MARK --set-mark 0x2222

ip rule add fwmark 0x1111 table dsl1
ip rule add fwmark 0x2222 table dsl2
ip route add 0.0.0.0/0 dev ppp0 table dsl1
ip route add 0.0.0.0/0 dev ppp1 table dsl2
ip route flush cache[/em]

Но вот чето не работает.

2-droidman > судя по статистике пакеты маркируются, но не ходят куда надо.

40KHYTbIU 09.02.2014 23:31

Не хватало маршрута по умолчанию в таблице
ip route add default via $P0 table dsl1

701054 10.02.2014 00:52

чета не вкурил как оно у вас заработало....
у вас же mark вроде маркирует просто пакет входящий, откуда ответ знает как лететь, а не просто по порядку по таблицам маршрутизации шлындрает ? и насчет балансировки изнутри на "новые адреса" как-то сомнительно...

droidman 10.02.2014 12:31

таблицы есть в /etc/iproute2/rt_tables ?)

701054 10.02.2014 15:34

так это...мож всеже заменить
[code]iptables -t mangle -A PREROUTING -i ppp0 -j MARK --set-mark 0x1111
iptables -t mangle -A PREROUTING -i ppp1 -j MARK --set-mark 0x2222
[/code]
на
[code]
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -i ppp0 -j CONNMARK --set-mark 0x1111
iptables -A PREROUTING -t mangle --match mark --mark 0x1111 -j ACCEPT
iptables -t mangle -A PREROUTING -i ppp1 -j CONNMARK --set-mark 0x2222
iptables -A PREROUTING -t mangle --match mark --mark 0x2222 -j ACCEPT
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
[/code]
CONNMARK он в отличие от mrak - connection tracking, ну т.е. относится ко все сессии собсно верхнее правило востанавливает метку на related , т.е. ответ от сервака полетит по нужному маршруту

701054 10.02.2014 15:41

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

701054 10.02.2014 15:42

8-701054 >mrak=mark )))))))))

40KHYTbIU 12.02.2014 23:37

10-701054 >
Мне не надо балансировать исходящий трафик, мне необходимо только иметь доступ по обоим каналам.

Решил через скрипт в ip-up.d, который выставляет правило и маршрут для предыдущего активного подключения.

[em]
ip rule add from $IPL1 table $TABLE1;
ip route add default via $IPR1 table $TABLE1;

ip rule delete table $TABLE2;
ip route delete table $TABLE2;

ip route flush cache;[/em]


Текущее время: 00:46. Часовой пояс GMT +3.