маршрутизировать трафик из другого шлюза по сети назначения

9

У меня есть несколько шлюзов, и я хотел бы направить некоторый трафик из разных шлюзов в зависимости от его назначения. Я предполагаю, что мне нужно использовать комбинацию правил iproute2 и iptables, но я не уверен, с чего начать.
Может кто-нибудь привести пример?

Вальтер
источник

Ответы:

9

Вы, вероятно, можете делать то, что вы хотите с ip route:

ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0

Первый ip route addпоказывает один IP-адрес, отправленный данным интерфейсом Ethernet (ep3s8) на маршрутизатор следующего перехода, 10.0.0.1

Второй маршрут для всей сети, 10.xyz, разослал данную сетевую карту, eth0. Это «локальная сеть», в которой нет маршрутизатора следующего перехода, все по одному и тому же логическому каналу.

Вы хотите читать, man ip-routeпрежде чем что-то делать, хотя. Кроме того, будьте готовы к перезагрузке и не делайте этого удаленно. Вы можете очень легко создавать неправильные маршруты, которые прерывают ваш удаленный доступ. Я голос опыта в этой последней рекомендации.

Брюс Эдигер
источник
1
Обратите внимание, что вы также можете указать шлюзы для целых блоков, `` ip route add 10.1.0.0/16 через 192.168.0.1`
jthill
Спасибо за ваш ответ, который поможет направить меня в правильном направлении. Я попробую и дам вам знать.
Уолтер
5

То, о чем вы спрашиваете, есть policy-based routingили source-based routing. На этом же сайте Дэвид Шварц предлагает отличное вступление .

Я хотел бы отметить, что есть также небольшая изящная программа, которую можно найти здесь , которая позволяет вам связывать определенные приложения с данным интерфейсом. Это, конечно, легко с такими приложениями, как openssh, у которых есть опции привязки к желаемому адресу прослушивания. Но эта библиотека позволяет привязывать даже приложения без таких параметров (например, Firefox) к заданному IP-адресу.

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

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

Хорошее место для чтения об исходной базовой маршрутизации - Linux Advanced Routing & Traffic Control,
вы также можете прочитать руководства

man ip rule
man ip route

В общем, вы должны добавить правило (я добавил интерфейс eth1 только для демонстрационных целей, его можно опустить)

#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000

здесь:
dev eth1 - устройство, которое будет использоваться для отправки пакетов
на 170.10.0.10 -
таблица назначения 2 - таблица, в которой вы должны назначить
приоритет вашим маршрутам 20000 - приоритет правила

вы можете увидеть свое правило по

#ip ru sh
    0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default

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

#ip route add table 2 via 170.10.0.1 default

чтобы увидеть ваши маршруты, вы должны бежать

#ip route show ta 2
Vasily-VM
источник