Есть 2 подключения к разным провайдерам. На шлюзе пытаюсь сделать multipath routing:
eth1 смотрит в сторону первого провайдера, в сторону второго через openvpn сделан tun0.
Добавляю маршрут:
ip route add default scope global \
nexthop via шлюз_к_прову_1 dev eth1 weight 1 \
nexthop dev tun0 weight 1
После этого наблюдаю такую картину:
все, что определяется (маршрутизационным кодом) через eth1, работает нормально, а вот через tun0 - пакеты почему-то идут с src адресом не tun0 (192.168.0.1), а eth1:
$ ip route get 1.1.1.1
1.1.1.1 dev tun0 src 192.168.0.1 (<-- правильный src !)
...
В то же время после ping/traceroute -I 1.1.1.1 "tcpdump -ni tun0 host 1.1.1.1" показывает ICMP пакеты с исходящим адресом eth1. Хотя ping 192.168.0.2 (это IP на другом конце туннеля) идет с правильным src адресом.
Да, все это пробовал с полностью чистым firewall-ом, без дополнительных ip rule и routing tables, правил только default маршрут в таблице main, "ip route flush cache" делать не забывал.
Пробовал сделать
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
не работает ! пакеты идут с тем же неверным src (хотя SNAT с явно заданным адресом исправляет IP).
Если в default маршруте поменять местами nexthop-ы:
ip route add default scope global \
nexthop dev tun0 weight 1 \
nexthop via шлюз_к_прову_1 dev eth1 weight 1
тогда и остальное тоже меняется местами: все, что через tun0, - работает идеально, а идущее через eth1 идет с src адресом tun0 (192.168.0.1).
И точно такой же "-o eth1 -j MASQUERADE" снова не работает.
Т.е. по каким-то причинам ядро выбирает src адрес не с того интерфейса.
Если использовать не туннель (он идет через eth0), а eth0:
ip route add default scope global \
nexthop via шлюз_к_прову_1 dev eth1 weight 1 \
nexthop via шлюз_к_прову_2 dev eth0 weight 1
тогда все везде работает отлично, но хочется сделать именно через туннель, причем без SNAT-ов.
Вопрос: почему ядро берет не тот IP ? Как это можно исправить ? (SNAT не предлагать)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум маршрутизация на двух провайдеров не выходит :( (iproute2) (2003)
- Форум iproute2 (2005)
- Форум FreeBSD и два default gw (2002)
- Форум Два интернет канала (2009)
- Форум Маршрутизация... опять (2009)
- Форум Dead Gateway Detection (2008)
- Форум systemd-networkd и metric (2014)
- Форум Не работает маршрутизация для VLANов (2013)
- Форум Маршрутизация в Linux (2011)
- Форум iproute2 - интересное поведение (2003)