несколько pppoe соединений (одновременно!)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

artymen
Сообщения: 36
ОС: Mandriva 2007.0

несколько pppoe соединений

Сообщение artymen »

Система Debian 4.0r3, пакет rp-pppoe 3.8, ядро 2.6.18-6-686

Есть 2 провайдера, предоставляющих инет по pppoe, соотвественно каждый на своей сетевухе. Оба соединения устанавливаются успешно, но работает только тот инет, который подключился первым (ну и самом собой по раздельности работают). В логи ничего не пишется. На втором интерфейсе ifconfig показывает кучу исходящих пакетов (мои попытки пинговать яндекс) и неизменное небольшое количество входящих.
Управляю соединениями через pon и poff. В man pppoe нашел опцию -U и в конфиги /etc/ppp/peers/ прописал pty 'pppoe -I ethX -U -p /var/run/pppoeX.pid', подключал соответственно через pppd call, ничего не изменилось, видимо -U требуется только когда через одну сетевуху несколько соединений.

Как заставить оба инета работать ?

Сразу отвечу на банальные вопросы:
1. маршруты есть, я их сам разруливаю
2. DNS пока даже не трогаю, яндекс пингую по ip :)
3. iptablesы сбросил, политики по умолчанию на цепочках установил в ACCEPT

И еще, первая сетевуха вовсе не сетевуха, а бридж (br0), в который входит непосредственно eth0 с провом и опенвпновский tap0 :) (Пробовал указывать именно eth0, но не работает, вот такой вот бридж коварный :) )
Спасибо сказали:
artymen
Сообщения: 36
ОС: Mandriva 2007.0

Re: несколько pppoe соединений

Сообщение artymen »

Разобрался. Проблема оказалась в этом самом разруливании маршрутов. Я предположил самое бредовое поведение системы (если бы я не был знаком со спутниковым инетом, такая чушь никогда бы мне не пришла в голову :) ), и обнаружил что я прав, когда просмотрел tcpdump на втором интерфейсе.
Собственно, как я организовал маршрутизацию. Дефолтовый маршрут устанавливается на первый инет (у него в конфиге прописал defaultroute). ICMP-траф надо роутить через второй инет (долго объяснять зачем). В иптаблесах я помечаю в OUTPUT icmp-пакеты:

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

iptables -t mangle -I OUTPUT 1 -p icmp -j MARK --set-mark 1
, а потом

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

ip rule add fwmark 1 table 200
ip route add default dev ppp2 table 200

И что же получилось ? Пинг до яндекса действительно отправляется через второй инет, но src ip пакетам ставится от первого инета ! :wacko: Теперь я нифига не понимаю, как и через что проходит пакет от локальной системы в сеть и как преобразования он проходит. Согласно вышеизложенным фактам, схема примерно и весьма упрощенно такая:
(система сгенерировала пакет, установила значение dst ip, src ip пока еще не известен) -> (предварительная "маршрутизация", по таблице main видно что пакет вроде бы должен покинуть систему через первый интерфейс и ему ставится src ip этого интерфейса) -> (пакет проходит цепочку OUTPUT) -> (реальная маршрутизация: оказывается согласно таблице 200 пакет надо направить во второй интерфейс) -> (пакет проходит POSTROUTING, где собственно можно восстановить справедливость, поставив ему нужный src ip, но это затрата ресурсов на NAT) -> (пакет уходит в сеть)
Поправьте меня, если я не прав.
Спасибо сказали: