Два ppp интерфейса смотрят в Инет [РЕШЕНО]

Итак, поднимают два ppp-соединения на одной машине. Хочется настроить таким образом, чтобы когда я использую инет, то трафик ходил через интерфейс ppp0, когда же идут внешние запросы (http, ftp итд), то использовался интерфейс ppp1.

Маршрут по-умолчанию прописан через ppp0, трафик ходит. Интерфейс ppp1 поднимается, IP адрес присваивается и в списке интерфейсов он есть. Но на пинги этот интерфейс не отвечает, пока не прописываю дефолтный маршрут через него.

Вопрос - можно ли заставить отвечать через тот интерфейс, через который пришел запрос?

С десятого раза нашел

С десятого раза нашел подходящее решение :)
ip rule add from $IP1 lookup 2
ip rule add from $IP2 lookup 3
ip route add default via $GW1 table 2
ip route add default via $GW2 table 3
Обязательно включать в ядре CONFIG_IP_ADVANCED_ROUTER=y

Теперь как это включить на автомате при поднятии интерфейсов?

Поясните, что такое

Поясните, что такое lookup?
По идее можно было сделать через MARK в iptables и затем используя правило ip rule add fwmark <метка> table <таблица>

Справедливость восторжествует.

mr Fog написал(а): Поясните,

mr Fog написал(а):
Поясните, что такое lookup?
По идее можно было сделать через MARK в iptables и затем используя правило ip rule add fwmark <метка> table <таблица>

Я бы с удовольствием пояснил, но я просто нашел готовое решение. Хотя, могу предположить, что для запросов, пришедших с IP1 смотреть в таблицу 2, c IP2 - в таблицу 3. Ну и следующие две строки - соответственно два правила и таблицы.

Пробовали? Работает?

Пробовали? Работает?

Справедливость восторжествует.

mr Fog написал(а): Пробовали?

mr Fog написал(а):
Пробовали? Работает?

Да, я проверил, работает. Но после опускания/поднятия интерфейсов надо прописывать все заново. Хочется понять, как это прописать правильно с точки зрения "идеологии" этого iproute2 :)

Сохраните в

Сохраните в /etc/conf.d/net.xxx. Только с подгруженым модулем.
Попробуйте как-то так:

modules_ethX=( "iproute2" )
...
routes_X=( "default via y.y.y.y table MY_TABLE" )
забыл правила:
rules_X=( "...")

в net.example написано это.
Только вот lookup я что-то не видел

Справедливость восторжествует.

Да, в принципе верно. Надо

Да, в принципе верно, спасибо за наводку. Надо еще раскомментировать postup() и postdown() и добавить таблички конфиг iproute2.
http://geekscrap.com/2010/02/multiple-ip-uplinks-with-gentoo/

Это будет работать только

Это будет работать только если вы имеете статические адреса соединений. А теперь представьте, что ваш провайдер не только ip вам динамические выдает при поднятии соединения, но и адреса шлюзов.
Для себя я эту проблему решил так:
1. создал внешние соединения ppp100 и ppp101
2. в /etc/iproute2/rt_tables добавил таблицы, основанные на именах интерфейсов:

100     table-ppp100
101     table-ppp101

3. весь роутинг вынес в /etc/ppp/ip-up.d/98-iproute.sh:

#!/bin/sh

# $1 = interface name (e.g. ppp0)
# $2 = tty device
# $3 = speed
# $4 = local IP address
# $5 = remote IP address
# $6 = ipparam (user specified parameter, see man pppd)

# Путь к используемым программам
IP=/sbin/ip

if [ $1 = "ppp100" ] || [ $1 = "ppp101" ]; then
    $IP rule add from $4 table table-$1
    $IP route add 127.0.0.0/8 dev lo table table-$1
    $IP route add default via $5 table table-$1
    $IP route flush cache
fi

и /etc/ppp/ip-down.d/98-iproute.sh:

#!/bin/sh

# $1 = interface name (e.g. ppp0)
# $2 = tty device
# $3 = speed
# $4 = local IP address
# $5 = remote IP address
# $6 = ipparam (user specified parameter, see man pppd)

# Путь к используемым программам
IP=/sbin/ip

if [ $1 = "ppp100" ] || [ $1 = "ppp101" ]; then
    $IP rule del from $4 table table-$1
    $IP route flush cache
fi

Все.
Это унивесальное решение, будет работать и со статическими и с динамическими ip адресами.

не получается

сделал как MVG описал и не подымается 2-ой интерфейс.

Вообщем тоже решил использовать iproute2 для динамической маршрутизации, но ничего не выходит помогите ссылками для изучения вопроса.
Заранее всем спасибо

http://www.n-ix.com/ipesin/tr

Что значит не поднимается

Что значит не поднимается второй интерфейс?
Соединения ppp100 и ppp101 должны быть уже настроены (/etc/conf.d/net, /etc/init.d/net.ppp100, /etc/init.d/net.ppp100) и проверены ранее.
При помощи скриптов и iproute2 создаются таблицы маршрутизации и правила прохождения пакетов по этим таблицам для соответствующих интерфейсов. Это никак не должно влиять на поднятие самих ppp интерфейсов.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".