Назад | Перейти на главную страницу

Выберите следующий переход на основе адреса источника

Я пытаюсь настроить шлюз на основе Ubuntu между клиентами и основным маршрутизатором, идеальный поток трафика должен быть:

ClientGroup 1 (10.0.0.0/24) -> шлюз Ubuntu (10.0.0.2) -> Основной маршрутизатор (10.0.0.1) -> Интернет

ClientGroup 2 (10.0.1.0/24) -> шлюз Ubuntu (10.0.1.2) -> Основной маршрутизатор (10.0.1.1) -> Интернет

ClientGroup 3 (10.0.2.0/24) -> шлюз Ubuntu (10.0.2.2) -> Основной маршрутизатор (10.0.2.1) -> Интернет

Клиенты используют экземпляр Ubuntu в качестве шлюза.

Последующий netplan конфигурация правильно направляет внутренний трафик, однако для Интернет-трафика по умолчанию eth0.1 (10.0.1.1) из-за gateway4.

network:
    version: 2
    ethernets:
        eth0:
            addresses: [10.0.0.2/24]
            routes:
                - to: 10.0.0.0/24
                  via: 10.0.0.1
                  table: 101
            routing-policy:
                - from: 10.0.0.0/24
                  table: 101
            dhcp4: false

    vlans:
        eth0.1:
            id: 1
            link: eth0
            addresses: [10.0.1.2/24]
            gateway4: 10.0.1.1
            routes:
                - to: 10.0.1.0/24
                  via: 10.0.1.1
                  table: 102
            routing-policy:
                - from: 10.0.1.0/24
                  table: 102
            dhcp4: false


        eth0.2:
            id: 2
            link: eth0
            addresses: [10.0.2.2/24]
            routes:
                - to: 10.0.2.0/24
                  via: 10.0.2.1
                  table: 103
            routing-policy:
                - from: 10.0.2.0/24
                  table: 103
            dhcp4: false

Есть идеи о том, как направить весь трафик на соответствующий следующий переход на основном маршрутизаторе? А именно весь трафик (0.0.0.0/0) из 10.0.0.0/24 должен быть направлен в 10.0.0.1 в то время как 10.0.2.0/24 должен быть направлен в 10.0.2.1.

Я счастлив использовать простой ip route правила тоже.

Заранее спасибо!


Изменить 13/05/20:

Я добавил маршрут по умолчанию для каждого routes, маршрутизация работает должным образом, но traceroute вывод кажется странным:

routes:
  - to: 0.0.0.0/0
    via: 10.0.0.1
    table: 101

1-й тест:

traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets
 1  10.0.0.2 (10.0.0.2)  0.896 ms * *
 2  10.0.0.1 (10.0.0.1)  1.361 ms  1.126 ms  0.879 ms

2-й тест:

traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets
 1  * * *
 2  10.0.0.1 (10.0.0.1)  1.353 ms  1.062 ms  0.825 ms

Достаточно просто, тем более что вы уже используете несколько таблиц маршрутизации:

(Извините, я не преобразовал мой пример в netplan; но, поскольку вы играете, чтобы использовать обычные правила IP-маршрутизации, этого должно быть достаточно - и в этом примере предполагается, что вы начинаете с нуля)

Итак, ваш netplan уже создает три таблицы маршрутизации, поэтому мы будем использовать первую таблицу маршрутизации, которая у вас есть:

ip route flush 101
ip route add table 101 to 10.0.0.0/24 dev eth0
ip route add table 101 to default via 10.0.0.1

И третья таблица маршрутизации у вас есть:

ip route flush 103
ip route add table 103 to 10.0.2.0/24 dev eth0.2
ip route add table 103 to default via 10.0.2.1

Затем создайте два правила для отправки трафика в каждую таблицу на основе IP-адреса источника трафика:

ip rule add from 10.0.0.0/24 table 101 priority 101
ip rule add from 10.0.2.0/24 table 103 priority 103

Это должно сработать. Обратите внимание, что вы можете продолжать добавлять маршруты назначения в две таблицы, и только трафик из связанных источников будет попадать в эти записи - их достаточно, и вы можете удалить маршруты по умолчанию в каждой таблице.