Назначьте каждому сетевому адаптеру диапазон IP-адресов или подсеть.

У меня есть сервер manjaro linux с как минимум двумя контроллерами сетевого интерфейса (NIC), и я хотел бы направить весь трафик, идущий на определенные диапазоны IP-адресов или подсетей, через один, а все остальное - через один из других.

До сих пор я настраивал сети с помощью nmcli , но у меня есть лишь слабое представление о предмете.

В идеале решение должно работать через командную строку, быть постоянным и не сильно зависеть от используемого дистрибутива.

Редактировать: Согласно Маршрутизация IP-трафика с использованием nmcli / Centos 7 что-то вроде

соединения nmcli, изменение "Проводное соединение 1" + ipv4.routes "10.0.0.0/16"

должен работать, однако кажется, что пакеты не маршрутизируются через правильную сеть.

1
задан 29 June 2021 в 18:21
1 ответ

Общая предварительная информация об этом ответе

Я предполагаю, что мои ответы в целом основаны на моих знаниях, основанных на системах Debian, однако в этой части я пропускаю часть Network-Manager, потому что я не использую его в любом случае и, по моему личному мнению, это только усложняет дело.

Вы спросили, и в комментариях кажется почти ясно, что вы хотите направить 10.0.0.0/16 на другую сетевую карту.

Вы указали "Wired connection 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

Короткий способ для тестирования или предварительной настройки, не постоянный:

ip route add 10.0.0.0/16 dev eth0

Сложная часть на данный момент заключается в том, чтобы сделать его постоянным.

В системах на базе RHEL/CentOS/Fedora/Scientific,

  • отредактируйте /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.

  • edit /etc/network/interfaces

Найдите ваш интерфейс 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)

Edit /etc/rc.d/rc.local или /etc/rc.local

add

  • ip route add 10.0.0.0/16 dev eth0

Этот ответ предназначен для решения этой проблемы в целом.

2
ответ дан 28 July 2021 в 12:59

Теги

Похожие вопросы