Как установить статические маршруты на сервере Ubuntu?

40

Я использовал Ubuntu с Ubuntu 8.10; сегодня я работаю с сервером Ubuntu 12.04.

У меня возникают проблемы с сохранением статических маршрутов при загрузке. Я обычно добавлял команды маршрута

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

в /etc/rc.local или я бы создал файл (с именем routes ) внутри каталога /etc/network/if-up/ , но я заметил, что на Ubuntu 12.04 он не работает.

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

Я уже пытался изменить имя файла на другие имена, думая, что мое имя файла ( routes ) может быть ошибочным в Ubuntu 12.04, но это также не сработало.

Я также замечаю, что команда /sbin/ifconfig работает, меньше /sbin/route .

Что изменилось при настройке сети?

Как определить статические маршруты в Ubuntu 12.04?

    
задан Frank Allan 25.07.2012 в 18:48
источник

5 ответов

48

Статические маршруты можно ставить в /etc/network/interfaces :

auto eth0
iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
      up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1
    
ответ дан Eric Carvalho 25.07.2012 в 18:57
16

Я часто обнаружил, что правильное место для определения статического маршрута в / etc / network / interfaces, это нормально, если вы собираетесь глобально перезапустить сеть с перезагрузкой /etc/init.d/networking, например. Но если вы собираетесь использовать ifdown и ifup для индивидуального отключения интерфейса, ifup закончит с ошибкой:

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

Из-за этого пытается определить маршрут, но он уже определен. Интерфейс будет в любом случае, но если ifup не будет обновлять / запускать / network / ifstate, так что в следующий раз, когда вы будете использовать это приложение, вы не сможете это сделать, если не используете флаг -force.

Чтобы if if продолжить настройку, даже если маршруты уже определены, вы можете использовать этот формат при определении маршрутов в / etc / network / interfaces

up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true

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

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553
    
ответ дан mseisdedos 08.02.2013 в 11:29
8

Вы можете попробовать это (добавьте его в /etc/network/interfaces ), это почти полный способ настройки маршрутов:

auto eth0
iface eth0 inet static
    post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
    post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/
    
ответ дан mmehboobhan 26.07.2012 в 07:49
4

В Ubuntu есть пакет ifupdown-extra .
Он предоставляет автоматические сценарии (устанавливается в /etc/network/*/ ), один из которых используется для добавления статических маршрутов.

Файл конфигурации для этого - /etc/network/routes

В верхней части этого конфигурационного файла есть хорошее описание:

  

Этот файл конфигурации читается сценарием if-updown static-routes   и сценарий /etc/init.d/networking-routes для настройки списка маршрутов   связанных либо с заданным интерфейсом, либо с глобальными маршрутами.

Пример используемого маршрута:

192.168.240.0 255.255.255.0 192.168.130.3 em3
    
ответ дан NGRhodes 20.08.2015 в 15:52
2

, что сработало для нас, было

sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0

Я использовал для работы на Mac:

sudo route -n add -net 192.168.0.2/32 192.168.1.1

, но на ubuntu отсутствует «gw» между IP-адресами и последней частью «netmask» (также - не требуется на ubuntu)

    
ответ дан Peter Perháč 08.09.2016 в 13:14