Назначьте каждому сетевому адаптеру диапазон IP-адресов или подсеть.
У меня есть Linux-сервер Manjaro как минимум с двумя контроллерами сетевых интерфейсов (NIC), и я хотел бы направить весь трафик, идущий в определенные диапазоны IP-адресов или подсети, через один, а все остальное - через один из других.
До сих пор я настраивал сети черезnmcli
, но я лишь слабо разбираюсь в предмете.
В идеале решение должно работать через командную строку, быть постоянным и не сильно зависеть от используемого дистрибутива.
Изменить: в соответствии с маршрутом IP-трафика с использованием nmcli/Centos 7 что-то вроде
nmcli connection modify "Wired connection 1" +ipv4.routes "10.0.0.0/16"
должно работать, однако пакеты, похоже, не перенаправляются через правильную сеть.
1 ответ
Общая предварительная информация об этом ответе
Я предполагаю, что мои ответы в целом основаны на моих знаниях, основанных на системах Debian, однако в этой части я пропускаю часть, посвященную сетевому менеджеру, поскольку я все равно ее не использую и, по моему личному мнению, это только усложняет.
Вы спросили, и в комментариях почти ясно, что вы хотите перенаправить 10.0.0.0/16 на другую сетевую карту.
Вы предоставили «Проводное соединение 1» +ipv4.routes «10.0.0.0/16»
-- какое имя устройства должно быть правильным, можно узнать черезip address
илиifconfig
-- Обычно вы не уверены в этом, отсоедините кабель карты и посмотритеdmesg
или /var/log/syslog
Итак, в моем примере предположим следующее:
- «Проводное соединение 1» = eth0
- «10.0.0.0/16» или 10.0.0.0/255.255.0.0 (или 10.0.0.0-10.0.255.255) должны быть направлены на eth0.
Короткий способ тестирования или предварительной настройки, а не постоянного:
Сложная часть на данный момент заключается в том, чтобы сделать его постоянным.
В RHEL/CentOS/Fedora/научно-ориентированных системах:
- отредактируйте /etc/sysconfig/network-scripts/route-eth0
Добавляю сюда
10.0.0.0/16 via 10.0.0.1
Где первое — это сеть, которую вы хотите сопоставить, второе — IP-адрес маршрутизатора. В моем примере 10.0.0.1
Использование пути Debian. (Базовые системы Debian, такие как Ubuntu)
в некоторых системах /etc/network/interfaces может показаться пустым. В этом случае вам придется просмотреть файл vi /etc/network/interfaces.d, но мы предполагаем, что будет использоваться базовый файл /etc/network/interfaces.
- отредактируйте /etc/сеть/интерфейсы
Найдите свой интерфейс eth0.
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
Измените, чтобы это выглядело так
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
###EITHER with Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0
###or without Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 dev eth0
Общий статический способ (может быть устаревшим в системах с поддержкой Systemd)
Отредактируйте /etc/rc.d/rc.local или /etc/rc.local.
добавлять
-
ip route add 10.0.0.0/16 dev eth0
Этот ответ предназначен для решения этой проблемы в целом.