У меня 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
.
Есть ли способ управлять устройством и выполнять ручные маршруты, как описано выше?
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
Диспетчер сети управляет своими собственными статическими маршрутами - откройте диспетчер сети и выберите «проводное соединение 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 является шлюзом.
Если вы хотите добавить маршрут в 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