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