6

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

Я следовал за несколькими объяснениями, как сделать это с файлом интерфейсов, но безуспешно.

Это содержимое моего исходного файла /etc /network /interfaces:

auto lo
iface lo inet loopback

После нескольких часов поиска и чтения я выглядел так:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1

iface eth1 inet static
address 10.0.1.171
netmask 255.255.255.0
broadcast 10.0.1.255
gateway 10.0.1.254

# static route
up route add -net 10.0.0.0/24 gw 10.0.1.252 dev eth1

Упомянутая конфигурация работает после перезапуска сети и до перезапуска Ubuntu. После перезапуска Ubuntu я теряю сетевой менеджер и не могу подключиться к Интернету или предполагаемым адресам 10.0.0.x.

Что я делаю не так, или есть более простой способ установить постоянный маршрут в более новых версиях Ubuntu?

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

ОБНОВЛЕНИЕ 1: (~ $ ifconfig)

eth0      Link encap:Ethernet  HWaddr 00:24:81:64:9a:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 

eth1      Link encap:Ethernet  HWaddr 00:21:00:d8:25:45  
          inet addr:10.0.1.171  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::221:ff:fed8:2545/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:284 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:21280 (21.2 KB)  TX bytes:21280 (21.2 KB)

ОБНОВЛЕНИЕ 2: (~ $ route -n)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        10.0.1.252      255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
0.0.0.0         10.0.1.254      0.0.0.0         UG    100    0        0 eth1

ОБНОВЛЕНИЕ 3: я понял, что есть проблема с этим кодом:

iface eth1 inet static
address 10.0.1.171
netmask 255.255.255.0
broadcast 10.0.1.255
gateway 10.0.1.254

Если я прокомментирую это, я получу сетевой менеджер и доступ к Интернету, но не мой желаемый маршрут.

2 ответа2

3

Если вы настроили сеть с помощью ifupdown (то есть в /etc/network/interfaces), и она работает, когда вы запускаете сеть вручную, но не после новой загрузки, одна из возможностей состоит в том, что ваша установка правильно запускает сеть, а затем некоторый другой системный компонент перенастраивает сеть. Очевидным подозреваемым является Network Manager. Убедитесь, что в /etc/NetworkManager/nm-system-settings.conf разделе [ifupdown] вы задали managed=false . (Это по умолчанию, по крайней мере, в Ubuntu 10.04, но, возможно, это изменилось в 10.10, или вы изменили его в предыдущих экспериментах с Network Manager.)


Если вы хотите придерживаться Network Manager, вы можете сказать ему, чтобы добавить дополнительный маршрут. Начиная с Ubuntu 10.04 (другие дистрибутивы могут не настраивать Network Manager таким же образом), Network Manager выполняет сценарии ifupdown в /etc/network/if-*.d/ . Роль этих сценариев аналогична директивам up , down , pre-up и post-down в /etc/network/interfaces (которые Network Manager не выполняет). Закомментируйте все упоминания о eth1 from/etc/network/interfaces`, чтобы Network Manager управлял этим интерфейсом.

Сценарии описаны в справочной странице interfaces(5). Они выполняются в среде, содержащей информацию о запущенном или остановленном соединении, в частности, $IFACE - это имя интерфейса. Поэтому поместите следующий скрипт в /etc/network/if-up.d/zzzz-milan-wireless-route:

#!/bin/sh
if [ "$IFACE" = "eth1" ]; then
  route add -net 10.0.0.0/24 gw 10.0.1.252 dev eth1
fi

Сделайте его исполняемым: chmod 755 /etc/network/if-up.d/zzzz-milan-wireless-route . В следующий раз, когда Network Manager подключится к сети, у вас должен быть маршрут по умолчанию.

-1

Я обычно помещаю команды статического маршрута в /etc/rc.local:

ip route add 10.0.0.0/24 via 10.0.1.252 dev eth1

Я использую пакет iproute2, кстати

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .