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

У меня 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.

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

9
задан 8 February 2014 в 01:09

3 ответа

Network Manager не распознает операторы, написанные вами в /etc/network/interfaces.

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

if [ "$IFACE" == "eth1" ]; then
  route add ...
  route add ...
fi
0
ответ дан 8 February 2014 в 01:09

Диспетчер сети управляет своими собственными статическими маршрутами - откройте диспетчер сети и выберите «проводное соединение 1». Выберите изменить. выберите вкладку IPv4. Внизу этой страницы находится кнопка «Маршруты». Вот где вы их добавляете. Когда это сделано, NM записывает файл с правами root в своем каталоге / 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 является шлюзом.

0
ответ дан 8 February 2014 в 01:09

Если вы хотите добавить маршрут в 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

0
ответ дан 8 February 2014 в 01:09

Другие вопросы по тегам:

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