Ответы:
Вы, вероятно, можете делать то, что вы хотите с 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
прежде чем что-то делать, хотя. Кроме того, будьте готовы к перезагрузке и не делайте этого удаленно. Вы можете очень легко создавать неправильные маршруты, которые прерывают ваш удаленный доступ. Я голос опыта в этой последней рекомендации.
То, о чем вы спрашиваете, есть policy-based routing
или source-based routing
. На этом же сайте Дэвид Шварц предлагает отличное вступление .
Я хотел бы отметить, что есть также небольшая изящная программа, которую можно найти здесь , которая позволяет вам связывать определенные приложения с данным интерфейсом. Это, конечно, легко с такими приложениями, как openssh, у которых есть опции привязки к желаемому адресу прослушивания. Но эта библиотека позволяет привязывать даже приложения без таких параметров (например, Firefox) к заданному IP-адресу.
Таким образом, вы можете выбрать, хотите ли вы предоставить отдельные таблицы маршрутизации для всех приложений или переопределить те же спецификации для каждого приложения.
Хорошее место для чтения об исходной базовой маршрутизации - 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