LINUX.ORG.RU
решено ФорумAdmin

таблицы маршрутизации

 


0

1

Добрый день!

Решаю казалось бы простую задачу, но как-то не идет) Есть 2 lte модема, подключение по сериал порту используя ppp. Необходимо, чтобы пакеты, помеченные 1 шли через интерфейс ppp0, помеченные 2 -через ppp1. Для этого выполняю последовательность команд:

ip rule add fwmark 0x1 lookup 11

ip rule add fwmark 0x2 lookup 12

ip route add default dev lo table 11 metric 200

ip route add default dev lo table 12 metric 200

ip route add default via 10.64.64.64 dev ppp0 table 11 metric 100

ip route add default via 10.64.64.65 dev ppp1 table 12 metric 100

Удаляю все деф маршруты в мейне

ip route del default

Проверяю

ping -m 1 8.8.8.8

ping -m 2 8.8.8.8

И не работает При этом если в мейне оставить дефроут через ppp0 или ppp1, то либо работает ping -m 1 8.8.8.8, либо -m 2 8.8.8.8

14,04,1 Ubuntu x86_64 4.2.0-27-generic

подскажите с чего начать?

Попробуй rp_filter в 0 выставить

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ppp1/rp_filter
Deleted ()

1. Не понятно зачем lo трогать
2. метрики принципиально меняете?
3. и самое главное нет куска где вы выставляете mark

anc ★★★★★ ()
Ответ на: комментарий от anc

3. и самое главное нет куска где вы выставляете mark

ping -m 1 же. В седьмом центосе iputils-20160308-8.el7.x86_64, там это уже есть. У меня работает с таким же сетапом, как у ТС, и без всяких правил iptables.

Deleted ()

с LORcode

imho

ip route add default dev lo table 11 metric 200
ip route add default dev lo table 12 metric 200
нафиг не нужно.

Странные у тебя DGW. Если ppp0/ppp1 это p2p, то адрес шлюза нафиг не нужен, а вот локальный адрес было бы полезно указать через src

А что за адреса 10.64.64.64 и 10.64.64.65 ? Это локальный адрес интерфейсов или удаленный адрес ?

Нужно запустить tcpdump и посмотреть адреса источников пакетов. Неправильный адрес источника пакета исправляется либо при помощи таблицы маршутизации (но не всегда), либо при помощи nat (стопудово!).

Для локальных пакетов не забыть про nat/OUTPUT.

А еще полезную информацию можно получить при помощи -j TRACE в raw/OUTPUT.

vel ★★★★★ ()
Ответ на: комментарий от Deleted

Спасибо! совсем забыл про него, именно его отключение помогло.

spybond08 ()
Ответ на: комментарий от vel

ip route add default dev lo table 11 metric 200 ip route add default dev lo table 12 metric 200

Я не очень хорош в роутинге/свитчинге, где-то читал, что это помогает to prevent accidental routing

spybond08 ()

В продолжение

Разбирался с аналогичной вещью. В итоге дошел до такого варианта.

Сначала все чистое. На машине один интерфейс.

iptables -t mangle -A OUTPUT -j MARK --set-mark 1 # Маркирую все подряд пакеты

ip route del default ip route add default via 192.168.4.1 table 1 # Удаляю default в main и прописываю в своей таблице

ip rule add lookup main prio 1 ip rule add fwmark 1 lookup 1 prio 2 # В main сейчас только «прямые» пути - сначала смотрим их, потом лезем на шлюз

Этот вариант не работает (Ubuntu 16, OpenSUSE 42.3).

Если добавить

ip ro add default via Y table default

где, Y - может быть любой IP «прямого» доступа, даже не существующий и даже свой, начинает работать в OpenSUSE, в Ubuntе - банан.

Внимание, вопрос: это вообще как понимать? :)

Black_Cat ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.