
Словесное описание: есть два провайдера, каждый через свой кабель подключены к сетевухам. Один из них (wildpark) подключен к не показанной eth3, так как раздаёт сеть и интернет через PPPoE. Другой провайдер "прямой". Бирюзовым цветом показаны гейты провайдеров, жёлтым мои (оба белые ) айпишники.
У каждого провайдера есть кучка сегментов с локальной скоростью много бОльшей, чем предоставляемый ими интернет-канал.
Клиенты провайдера wildpark все поголовно с белыми (в основном динамическими, но это не важно) айпишниками.
Клиенты провайдера amron имеют либо статичный белый айпи, либо не менее статичный серый, который провайдер NAT'тит для выхода в инет.
Постановка задачи:
1) мой личный трафик, не относящийся к запросам клиентов (т.е., фактически, с не показанного моего второго компа, подключенного через eth2 к указанному на картинке серверу) разруливать по принципу: если есть прямой канал на цель (т.е. если цель использует провайдеров amron либо wildpark) то идём через интерфейс соответствующего провайдера, если нет прямого (чужие интернеты), то идём через wildpark
2) сделать доступным любой мой айпи с любого клиента
Применённое решение:
1) тут просто был убран шлюз провайдера amron в /etc/network/interfaces, в результате чего ppp при "прозвоне" назначает айпи, подымает шлюз по дефолту на 192.168.13.1 через ppp0, прописывает DNSы (получает всё от сервера). Для рабочей машины, подключенной к eth2, нарулены DNAT'ы, но это не важно.
2) использован материал LARTC. А конкретно:
- в /etc/iproute2/rt_tables внесены две таблицы, 100 amron и 200 wildpark
- в /etc/rc.local внесены следующие правила роутинга (показано настройки по одному из сегментов каждого провайдера для экономии места и мозгов):
Код: Выделить всё
ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 table amron ip route add default via 194.145.199.129 table amron ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 table wildpark ip route add default via 192.168.13.1 table wildpark ip route add 194.145.198.0/24 dev eth0 src 194.145.199.132 via 194.145.199.129 ip route add 80.252.240.0/20 dev ppp0 src 217.77.220.48 via 192.168.13.1 ip rule add from 194.145.199.132 table amron ip rule add from 217.77.220.48 table wildpark ip route flush cache
Результат:
Со стороны чужих интернетов и со стороны провайдера wildpark всё нормально работает;
Со стороны провайдера amron не отвечает интерфейс этого же провайдера (194.145.199.132), отвечает только интерфейс другого провайдера.
Диагностика проблемы:
tcpdump показывает, что при ответах на входящие запросы от клиентов провайдера amron, пришедших на eth0, или при исходящих запросах на клиентов этого провайдера, сервер посылает arp-запросы, пытаясь выяснить mac-адрес клиента и передать ему пакеты напрямую, т.е. игнорирует шлюз провайдера.
Что я сделал не так?
