Как через один интерфейс обращаться к нескольким шлюзам через swich

Встал такой вопрос, есть приложение 3proxy которое обращается к определенному IP и выходит через него в интернет

Связка следующая Есть два интерфейса enp47s0 - основной интернет на сервер, его не трогаем

enp37s0 - интерфейс с выходом на свич, к которому подключены два 3g модема

192.168.101.1
192.168.102.1

Адреса, модемы пингуются

Нужно что бы при обращении к 192.168.101.101 шлюз по умолчанию был 192.168.101.1 и для 192.168.102.101 соответственно 192.168.102.1

пробовал давать роуты

192.168.101.101 192.168.101.1   255.255.255.255 UGH   0      0        0 enp37s0
192.168.102.101 192.168.102.1   255.255.255.255 UGH   0      0        0 enp37s0

не проходит

так же как и выставлять два интерфейса со своим шлюзом

auto enp37s0
allow-hotplug enp37s0
iface enp37s0 inet static
        address 192.168.101.101
        netmask 255.255.0.0
        gateway 192.168.101.1

iface enp37s0 inet static
        address 192.168.102.101
        netmask 255.255.0.0
        gateway 192.168.102.1

Нечего не работает :(

upd. Главная цель добавить N количество интерфейсов, который будет иметь свой шлюз, в сетях слабо разбираюсь, не могу понять как.

Пробовал даже бриджы создавать

    auto br0
    iface br0 inet static
            address 192.168.101.101
            network 192.168.101.0
            netmask 255.255.255.0
            broadcast 192.168.101.255
            gateway 192.168.101.1
            bridge_ports enp37s0
            bridge_stp off
            bridge_fd 0
            bridge_maxwait 0

auto br1
    iface br1 inet static
            address 192.168.102.101
            network 192.168.102.0
            netmask 255.255.255.0
            broadcast 192.168.102.255
            gateway 192.168.102.1
            bridge_ports enp37s0
            bridge_stp off
            bridge_fd 0
            bridge_maxwait 0

Ответы (2 шт):

Автор решения: Mike

Поднимайте интерфесы так, как сочтете нужным, главное что бы адреса модемов 101.1 и 102.1 пинговались. При описании интерфейсов шлюзы указывать не надо. (потому как шлюз по умолчанию может быть только один) После этого вам надо создать несколько таблиц маршрутизации, в каждую из которых положить свой маршрут по умолчанию. И после этого написать правила условной маршрутизации, говорящие о том в каком случае этими таблицами пользоваться. Это можно сделать примерно так:

ip route add default tab 101 via 192.168.101.1  # маршрут по умолчанию в таблицу 101
ip route add default tab 102 via 192.168.102.1  # маршрут по умолчанию в таблицу 102

ip rule add prio 101 from 192.168.101.101 lookup 101
# При уходе пакета с исходящего адреса 101.101 использовать таблицу маршрутизации 101
ip rule add prio 102 from 192.168.102.101 lookup 102
# При уходе пакета с исходящего адреса 102.101 использовать таблицу маршрутизации 102
→ Ссылка
Автор решения: eri

Для записи нескольких конфигураций на один интерфейс создается алиас.

Алиас задается через ::

auto enp37s0:1
auto enp37s0:2

iface enp37s0:1 inet static
        address 192.168.101.101
        netmask 255.255.255.0
        gateway 192.168.101.1
        metric 10

iface enp37s0:2 inet static
        address 192.168.102.101
        netmask 255.255.255.0
        gateway 192.168.102.1
        metric 20

Можно добавлять несколько шлюзов с разной метрикой. Работает шлюз с наименьшей метрикой. Маски лучше не пересекать - в этом случае /24 а не /16

→ Ссылка