Два ppp интерфейса смотрят в Инет [РЕШЕНО]
tlittle 24 мая, 2010 - 15:08
Итак, поднимают два 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 написал(а): Поясните,
Я бы с удовольствием пояснил, но я просто нашел готовое решение. Хотя, могу предположить, что для запросов, пришедших с IP1 смотреть в таблицу 2, c IP2 - в таблицу 3. Ну и следующие две строки - соответственно два правила и таблицы.
Пробовали? Работает?
Пробовали? Работает?
Справедливость восторжествует.
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 добавил таблицы, основанные на именах интерфейсов:
3. весь роутинг вынес в /etc/ppp/ip-up.d/98-iproute.sh:
и /etc/ppp/ip-down.d/98-iproute.sh:
Все.
Это унивесальное решение, будет работать и со статическими и с динамическими ip адресами.
не получается
сделал как MVG описал и не подымается 2-ой интерфейс.
Вообщем тоже решил использовать iproute2 для динамической маршрутизации, но ничего не выходит помогите ссылками для изучения вопроса.
Заранее всем спасибо
http://www.n-ix.com/ipesin/tr
http://www.n-ix.com/ipesin/translations/howto/lartc/lartc.html#ROUTINGFORMULTIPLEUPLINKSPROVIDERS
Что значит не поднимается
Что значит не поднимается второй интерфейс?
Соединения ppp100 и ppp101 должны быть уже настроены (/etc/conf.d/net, /etc/init.d/net.ppp100, /etc/init.d/net.ppp100) и проверены ранее.
При помощи скриптов и iproute2 создаются таблицы маршрутизации и правила прохождения пакетов по этим таблицам для соответствующих интерфейсов. Это никак не должно влиять на поднятие самих ppp интерфейсов.