Сетевой менеджер ломает ручные маршруты

9

У меня Ubuntu 13.10, Saucy Salamander x64 работает в качестве гостя в VirtualBox (с Windows 7 в качестве хоста).

Я написал это, /etc/network/interfacesпотому что мне нужно добавить большое количество постоянных ручных статических маршрутов:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp
    up ip -force -b /etc/network/eth1-routes

eth1-routes содержит несколько строк вида:

route add 10.0.0.0/8 via 172.x.x.x dev eth1

где 172.x.x.xшлюз, который мне дает VBox NAT.

При запуске netstat -nrкажется, что все мои ручные маршруты были успешно добавлены, в том числе маршруты, чтобы добраться до двух DNS-серверов через 172.x.x.x.

Тем не менее, сетевой менеджер говорит, что оба устройства «не управляются». Если я установлю /etc/NetworkManager/NetworkManager.conf managed=true, менеджер сети снова работает, но мои маршруты потеряны. Поэтому мой текущий компромисс - установить managed=falseи закомментировать eth0строки в /etc/network/interfaces.

Есть ли способ управлять устройством и выполнять ручные маршруты, как описано выше?

Reinderien
источник

Ответы:

4

Сетевой менеджер не распознает заявления, которые вы написали /etc/network/interfaces.

Таким образом, вы можете добавить свой скрипт eth1-routesв качестве диспетчера сценариев для Network Manager в /etc/network/if-up.d/. Он будет запускаться каждый раз, когда работает интерфейс. Может быть, вам нужно написать в своем скрипте «предложение if», чтобы добавить маршруты только в случае появления eth1. Нравится:

if [ "$IFACE" == "eth1" ]; then
  route add ...
  route add ...
fi
хаос
источник
5

Диспетчер сети управляет своими собственными статическими маршрутами - откройте диспетчер сети и выберите «Проводное соединение 1». Выберите изменить. выберите вкладку IPv4. Внизу этой страницы находится кнопка «Маршруты». Вот где вы их добавляете. Когда это сделано, NM записывает файл с правами суперпользователя в свой каталог / etc / NetworkManager / system-connections /, который называется «Проводное соединение 1».

Пример следует

ls -l /etc/NetworkManager/system-connections/
total 4.0K
-rw------- 1 root root 216 Aug 26 10:38 Wired connection 1

sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 1

[802-3-ethernet]
mac-address=A:Real:Mac:Add:re:ss

[connection]
id=Wired connection 1
uuid=df4491fc-0981-4071-82ae-04c7b2d6d9fc
type=802-3-ethernet

[ipv6]
method=auto

[ipv4]
method=auto
route1=10.2.2.0/24,10.1.1.68,1

Где 10.2.2.0 - сеть назначения, а 10.1.1.68 - шлюз.

Фред
источник
1

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

Добавьте маршрут в файл конфигурации / etc / NetworkManager / system-connections / "имя соединения" , добавив оператор маршрута в файл конфигурации для (при условии IPv4). Маршрут состоит из четырех частей; «первый - сеть или адрес IPv4 назначения (порядок сетевых байтов), второй - префикс сети или адрес назначения (1–32), третий - следующий переход (сетевой порядок байтов), если имеется, а четвертый - Метрика маршрута " .

[ipv4]
method=auto
route1=172.16.0.0/16,192.168.3.1,1

Это эквивалентно настройке маршрута с использованием следующего оператора маршрута:

route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.3.1

Имя ключа маршрута определено в таблице 12 в документации разработчика NetmorkManager. Пожалуйста, смотрите следующий URL для получения дополнительной информации: https://developer.gnome.org/NetworkManager/0.9/ref-settings.html

nuwandame
источник