Как изменить файл etc network interfaces

В данном руководстве объясняется, как подключить компьютер к сети при помощи конфигурационных файлов и консольных утилит. Основная цель - рассказать о различных способах подключения к интернету без использования GUI (графического интерфейса). Руководство не затрагивает таких тем, как настройка сетевых фильтров или, например, собственных точек доступа Wi-Fi. Подразумевается, что существует некий, предоставленный провайдером, способ подключения к интернету, для использования которого и необходимо выполнить приведенные ниже действия.

Содержание

Краткое описание руководства

В данном руководстве объясняется, как подключить компьютер к сети при помощи конфигурационных файлов и консольных утилит. Основная цель — рассказать о различных способах подключения к интернету без использования GUI (графического интерфейса). Руководство не затрагивает таких тем, как настройка сетевых фильтров или, например, собственных точек доступа Wi-Fi. Подразумевается, что существует некий, предоставленный провайдером, способ подключения к интернету, для использования которого и необходимо выполнить приведенные ниже действия.

В руководстве приведены примеры редактирования конфигурационных файлов с помощью текстовых редакторов «nano» и «gedit». Обратите внимание на то, что первый редактор запускается в терминале и может быть использован как при запуске Ubuntu с графическим интерфейсом, так и без него, а «gedit» можно использовать только при включенной графической среде.

Требования к системе

Для воспроизведения описанных в руководстве действий подходит любой вариант установки системы. Наличие графического пользовательского интерфейса не обязательно. Все действия необходимо выполнять в консоли. Подразумевается, что команды, начинающиеся с символа $ — необходимо выполнять от пользователя, а начинающиеся с # — от суперпользователя (root).

Прежде чем Вы начнете, убедитесь, что:

  • Различные сетевые утилиты, предназначенные для автоматического конфигурирования сети выключены. Например, тут Вы можете прочитать, как отключить установленный по умолчанию в Ubuntu сетевой помощник Network Manager.

  • Различные сетевые фильтры (например iptables), и утилиты их конфигурирования (например, Firestarter) отключены/правильно настроены и не вмешиваются в работу сети.

  • У Вас есть все необходимые параметры для подключения в Вашей сети (например, IP-адрес, маска подсети и шлюз по умолчанию для соединения с использованием статического IP).

  • Устройства сети осуществляющие фильтрацию по MAC-адресу правильно настроены и «знают» Ваш сетевой интерфейс.

  • Драйвер Вашего сетевого устройства корректно установлен, кабель (при проводном соединении) исправен и подсоединен.

Для настроек вам обязательно потребуется имя вашего сетевого адаптера. Его можно узнать из вывода команды:

$ sudo lshw -C network

Она позволяет посмотреть подключенные сетевые устройства.

Пример вывода команды:

ubuntu@ubuntu:~$ sudo lshw -C network
  *-network               
       description: Ethernet interface                             # Тип устройства 
       product: L2 100 Mbit Ethernet Adapter                       # Название адаптера
       vendor: Attansic Technology Corp.                           # Производитель устройства
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: eth0                                          # Имя сетевого интерфейса
       version: a0
       serial: 00:00:00:00:00:00                                   # Физический адрес устройства (mac-адрес)
       size: 100MB/s
       capacity: 100MB/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vpd bus_master cap_list 
ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes 
                      driver=atl2                                  # Используемый драйвер
                      driverversion=2.2.3                          # Версия драйвера
                      duplex=full firmware=L2 ip=192.168.0.5 latency=0 
                      link=yes                                     # Наличие линка
                      module=atl2 multicast=yes port=twisted pair 
                      speed=100MB/s                                # Текущая скорость подключения.

Обратите внимание на строку:

       logical name: eth0 

eth0 — это и есть искомое имя сетевого интерфейса.

Имя eth0 будет далее применяться для настройки именно данной сетевой карты. Где eth обозначает что используется Ethernet интерфейс, а 0 — номер устройства. Если у вас установлено несколько сетевых устройств, то, соответственно, им будут присвоены имена: eth0, eth1, eth2 и т.д.

После внедрения SystemD (начиная с Ubuntu 15.04) сетевые интерфейсы могут иметь другие имена (не ethX).
Сделано это для того, что бы имена сетевых устройств не менялись при подключении к машине новых адаптеров (в последнее время, некоторые USB модемы выступают в роли сетевого адаптера). В результате eth0 может называться например enp0s4 или eno1, или даже enx78e7d1ea46da. Именно это имя сетевого адаптера и нужно использовать в настройке сети.

Более подробно о наименовании сетевых интерфейсов в SystemD можно почитать тут (англ.).

Такое переименование можно отключить добавив в /etc/default/grub, в строку с переменной GRUB_CMDLINE_LINUX_DEFAULT строку net.ifnames=0. После этого нужно выполнить sudo update-grub

Настройка проводной сети

Настройка IP-адреса, шлюза по умолчанию, маски подсети

Отредактируйте файл конфигурации /etc/network/interfaces, например так:

$ sudo nano /etc/network/interfaces 

И допишите в него:

Для статического IP:

iface eth0 inet static 
address 192.168.0.1 
netmask 255.255.255.0 
gateway 192.168.0.254
dns-nameservers 192.168.0.254 8.8.8.8
auto eth0 

Где:

  • iface eth0 inet static — указывает, что интерфейс (iface eth0) находится в диапазоне адресов IPv4 (inet) со статическим ip (static);

  • address 192.168.0.1 — указывает что IP адрес (address) нашей сетевой карты 192.168.0.1;

  • netmask 255.255.255.0 — указывает что наша маска подсети (netmask) имеет значение 255.255.255.0;

  • gateway 192.168.0.254 — адрес шлюза (gateway) по умолчанию 192.168.0.254;

  • dns-nameservers 192.168.0.254 8.8.8.8 — адреса DNS серверов (о ниж мы расскажем позже)

  • auto eth0 — указывет системе что интерфейс eth0 необходимо включать автоматически при загрузке системы с вышеуказанными параметрами.

eth0 — имя подключаемого своего интерфейса. Список интерфейсов можно посмотреть набрав:

$ ip addr

В итоге файл /etc/network/interfaces должен выглядеть примерно так:

(для одного проводного соединения со статическим IP)

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Моя проводная сеть.
iface eth0 inet static 
address 192.168.0.1 
netmask 255.255.255.0 
gateway 192.168.0.254 
dns-nameservers 192.168.0.254 8.8.8.8
auto eth0 

Сохраните файл и закройте редактор. В данном примере (редактор nano) — нажмите Ctrl+X, затем Y, убедитесь, что «Имя файла для записи» — /etc/network/interfaces и нажмите Enter.

Более подробно про синтаксис файла /etc/network/interfaces можно прочитать в документации.

Пример конфигурации для динамического IP:

iface eth0 inet dhcp
auto eth0 

Временная настройка IP-адреса и маски подсети

При необходимости задать пробные настройки, выполните:

$ sudo ip addr add 192.168.0.1/24 dev eth0

Где 192.168.0.1 — наш IP-адрес, /24 — число бит в префиксной части адреса (соответствует маске подсети 255.255.255.0).

eth0 — подключаемый сетевой интерфейс.

Данные настройки пропадут после перезагрузки системы и не повлияют на файл /etc/network/interfaces

Настройка DNS

За конфигурацию DNS отвечает утилита resolvconf, которая работает в паре с небольшим кеширующим DNS сервером dnsmasq. resolvconf позволяет осуществить настройку DNS на основе данных от разных подсистем.

Одним из следствий этого полезного нововведения (переход на эту схему произошел в Ubuntu начиная с версии 12.04) является то, что теперь файл /etc/resolv.conf генерируется автоматически, а не индивидуально каждой программой, которая хочет его изменить (порой перезаписывая правки сделанные ранее). Автоматическая генерация /etc/resolv.conf означает, что внесенные «руками» изменения в него будут потеряны.

Автоматически формируемый /etc/resolv.conf содержит ссылку на DNS сервер на локальном интерфейсе (127.0.1.1), а там (на 53 порту) и сидит сервис dnsmasq, который отвечает за разрешение символьных имен в IP адреса. Нужно отметить, что этот порт (53) открыт в режиме LISTEN, но т.к. это локальный интерфейс, то из внешней сети этот порт не доступен.

Информацию о DNS для статических интерфейсов теперь надо вносить в /etc/network/interfaces1) в параметры dns-nameservers, dns-search и dns-domain (которые соответствуют параметрам nameserver, search и domain в /etc/resolv.conf)

Обратите внимание — в /etc/resolv.conf, при записи нескольких серверов используется несколько ключей nameserver, а в /etc/network/interfaces все адреса DNS серверов записывались в одну строчку после ключа dns-nameservers, разделенные пробелами.

В итоге описание статического интерфейса в /etc/network/interfaces должно выглядеть примерно так:

iface eth0 inet static 
address 192.168.0.1 
netmask 255.255.255.0 
gateway 192.168.0.254 
dns-nameservers 8.8.8.8 192.168.0.254
auto eth0 
Ubuntu до версии 12.04

В более старых версиях ubuntu, когда есть необходимость указать статические адреса DNS серверов (если они не выдаются автоматически) выполните:

$ sudo gedit /etc/resolv.conf

и впишите туда адреса DNS серверов (отдельные записи для каждого сервера):

nameserver 192.168.0.100
nameserver 192.168.0.200

Где 192.168.0.100 и 192.168.0.200 — адреса DNS серверов. Если нужно добавить больше адресов — каждый адрес нужно начинать с новой строки и с фразы nameserver

Настройка соединений ppp

За создание соединений типа «точка-точка» в Ubuntu отвечает демон pppd, более подробная информация о котором доступна в документации. В рамках данного руководства будут рассмотрены примеры создания PPPoE подключения через DSL модем, подключения PPTP (VPN-подключения) и DIAL-UP подключения через обычный модем.

Соединение PPPoE

В стандартную установку Ubuntu входит утилита для настройки PPPoE соединений – pppoeconf, для ее запуска наберите:

$ sudo pppoeconf

Появится «псевдографическое» 2) окно в терминале. Утилита произведет поиск сетевых устройств и выведет их на экран, далее она произведет поиск модема 3) на этих устройствах. Если на этом этапе pppoeconf выдаст отрицательный результат — проверьте правильность подключения, питание модема. Следующий шаг — выбор «популярных параметров» — в большинстве случаев стоит согласиться. Далее утилита запросит Ваш логин, а затем — пароль. Теперь — выбор способа указания DNS серверов. Опять же, в большинстве случаев следует согласиться на получение адресов DNS серверов автоматически. Далее Вам предложат ограничить размер MSS до 1452-х байт — как правило, стоит согласиться. Следующий вопрос — устанавливать ли подключение автоматически при загрузке компьютера. Последний вопрос утилиты — установить ли соединение сейчас. pppoeconf по умолчанию создает для подключения имя dsl-provider. Управлять подключением Вы можете при помощи команд:

$ sudo pon dsl-provider # Для подключения
или
$ sudo poff dsl-provider # Для отключения

Если в Вашем случае опций, предоставляемых утилитой pppoeconf недостаточно — обратитесь к документации по pppd или pppoeconf.

Замечание: при настройке соединения с помощью pppoeconf часть настроек записывается в /etc/network/interfaces, в результате чего Network Manager больше не может управлять сетью. Выход: либо использовать только NM, либо только консоль+конфиги.
Вернуть управление Network Manager можно следующим образом. Приведите /etc/network/interfaces к следующему виду (лишнее не обязательно удалять, достаточно закомментировать):

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

Перезапустите сеть:

$ sudo /etc/init.d/networking restart

Перезагрузитесь или перезапустите Network Manager:

$ sudo /etc/init.d/NetworkManager restart

Соединение PPTP

Для осуществления VPN-соединения при помощи pppd Вам потребуется установить пакет pptp-linux, который может быть найден на установочном диске Ubuntu. Далее создайте (от root’а) в папке /etc/ppp/peers файл с названием Вашего провайдера и отредактируйте его, например так:

$ sudo nano /etc/ppp/peers/my-provider

И добавьте туда опции подключения, например такие:

persist # При разрыве соединения - переподключаться снова.
maxfail 0 # Максимальное количество неудачных попыток подключения. 0 - бесконечно.
mtu 1476 # Значение MTU
name {логин} # Ваш логин.
#nodefaultroute # Не быть шлюзом по умолчанию
defaultroute # Быть шлюзом по умолчанию
replacedefaultroute # Заменить шлюз по умолчанию если он был
remotename {vpn} # Имя удаленного сервера (для нас), может быть любым.
pty "pptp {адрес_сервера} --nolaunchpppd" # Команда запуска pptp. 
# Адрес сервера - может быть как IP адресом, так и доменным именем, например vpn.foo.bar

Далее — отредактируйте файл /etc/chap-secrets 4) и добавьте туда:

{логин} {vpn} {пароль}

После перезагрузки системы Вы сможете управлять соединением при помощи команд:

$ sudo pon my-provider # Для подключения
или
$ sudo poff my-provider # Для отключения

Процесс настройки VPN-соединения может сильно облегчить скрипт-помощник.

Настройка DIAL-UP подключения

Для настройки модемного соединения можно использовать встроенный конфигуратор pppdpppconfig или специальную утилиту wvdial .

При помощи pppconfig

Процесс настройки при помощи pppconfig во многом похож на утилиту pppoeconfig, Вам по очереди будут заданы вопросы о параметрах подключения, и будет предложено ввести номер телефона, логин и пароль, а также имя соединения. Запускать pppconfig следует с правами суперпользователя. Например так:

$ sudo pppconfig

Управлять соединением можно так:

$ sudo pon my-provider # Для подключения
или
$ sudo poff my-provider # Для отключения

Где my-provider — имя, присвоенное Вами соединению при настройке.

При помощи wvdial

В некоторых случаях (например при подключении с использованием мобильного телефона), удобнее использовать wvdial . Для этого нужно его сначала установить. Например так:

$ sudo apt-get install wvdial

В состав пакета wvdial входит утилита автоматического конфигурирования — wvdialconf .

$ sudo wvdialconf

Вывод будет примерно следующим:

ubuntu@ubuntu:~$ sudo wvdialconf
[sudo] password for ubuntu: 
Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

Modem Port Scan<*1>: S0   S1   S2   S3   
WvModem<*1>: Cannot get information for serial port.
ttyACM0<*1>: ATQ0 V1 E1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 Z -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyACM0<*1>: Modem Identifier: ATI -- Manufacturer: QUALCOMM INCORPORATED
ttyACM0<*1>: Speed 4800: AT -- OK
ttyACM0<*1>: Speed 9600: AT -- OK
ttyACM0<*1>: Speed 19200: AT -- OK
ttyACM0<*1>: Speed 38400: AT -- OK
ttyACM0<*1>: Speed 57600: AT -- OK
ttyACM0<*1>: Speed 115200: AT -- OK
ttyACM0<*1>: Speed 230400: AT -- OK
ttyACM0<*1>: Speed 460800: AT -- OK
ttyACM0<*1>: Max speed is 460800; that should be safe.
ttyACM0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK

Found an USB modem on /dev/ttyACM0.
Modem configuration written to /etc/wvdial.conf.
ttyACM0<Info>: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

Теперь остается только отредактировать файл /etc/wvdial.conf и добавить в него номер телефона, логин и пароль.

$ sudo nano /etc/wvdial.conf

В данном примере я дополнительно добавил несколько опций. См. комментарии.

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem
ISDN = 0
Idle Seconds = 0
New PPPD = yes
Dial Attempts = 0
Phone = #777
Modem = /dev/ttyACM0
Username = mobile
Password = internet
Baud = 460800
Idle Seconds = 0 # Время простоя соединения, 
# после которого нужно будет его разорвать. Значение 0 - никогда.
Dial Attempts = 0 # Количество попыток дозвона. 0 - бесконечно.
[Dialer pulse]
Dial Command = ATDP # Команда набора номера (P - импульсный, T - тональный). Имеет смысл для набора номера в импульсном режиме на старых АТС.

Файл /etc/wvdial.conf разбит на секции, в качестве разделителей которых выступают сами названия секций, предварённые словом Dialer, в квадратных скобках. Если исполнять команду без параметров, то в дело пойдут установки, перечисленные в секции Defaults. В противном случае дополнительно будут исполнены указанные в добавочных секциях команды.

Теперь, когда все настроено, соединение можно установить набрав:

$ sudo wvdial

Если потребуется запустить wvdial с набором номера в импульсном режиме, то это можно сделать командой

$ sudo wvdial pulse

Прервать соединение можно прервав выполнение команды wvdial, т.е. в том же терминале нужно нажать Ctrl+C.

Автоматическое подключение

Отредактируйте файл конфигурации /etc/network/interfaces, например так:

$ sudo nano /etc/network/interfaces 

И допишите в него:

Для pppoe , pptp , и модемного подключения без использования wvdial :

iface ppp0 inet ppp
provider my-provider
auto ppp0 

Где my-provider — название вашего соединения.

При использовании wvdial:

iface ppp0 inet wvdial
provider wvdial
auto ppp0 

Теперь при перезапуске сетевых служб соединение будет автоматически установлено.

Ручная настройка роутинга

Если Вы не получаете адрес шлюза по-умолчанию от сервера, к которому подключаетесь, или по какой-либо иной причине Вам необходимо указать маршруты вручную — Вы можете создать свой скрипт в /etc/ppp/ip-up.d/, либо по рекомендации официальной документации создать /etc/ppp/ip-up.local например так:

$ sudo nano /etc/ppp/ip-up.local

или

$ sudo nano /etc/ppp/ip-up.d/routing

со следующим кодом:

#! /bin/sh
#
route del default
route add default ppp0 # Имя ppp-подключения.
# тут - необходимые маршруты, например:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0

Далее — сделайте этот скрипт исполняемым, например так:

$ sudo chmod ug+x /etc/ppp/ip-up.local

или

$ sudo chmod ug+x /etc/ppp/ip-up.d/routing

Теперь маршруты будут автоматически подключаться при установлении ppp-соединения.

Установка MTU и TTL

MTU (Maximum Transfer Unit) — параметр определяет величину максимальной единицы передачи.
Это максимальное количество октетов (байт), которое интерфейс способен поддерживать
за одну операцию приема/передачи. Для Ethernet это значение по умолчанию составляет
1500 (максимальный размер пакета Ethernet).

TTL (Time To Live) — время жизни ip-пакета в секундах. Нужен чтобы избежать перегрузки сети пакетами.
Обычно каждый роутер, через которого прошел пакет, уменьшает TTL на еденицу.
Если TTL=0, пакет из системы удаляется. Изначально TTL=128 (для Windows) и TTL=64 (для Ubuntu).
Для DNS-записей TTL определяет время актуальности данных при кешировании запросов.

Для изменения величины MTU, отредактируем файл конфигурации /etc/network/interfaces, например так:

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
mtu 600

Для изменения величины TTL наберите:

$ sudo su
затем
# echo "128" > /proc/sys/net/ipv4/ip_default_ttl

Значение TTL меняется только с правами администратора, для выхода из аккаунта администратора введите exit

Настройка WiFi

Настройка Wi-Fi при помощи wpa-supplicant и /etc/network/interfaces

В этой главе пойдет речь о настройке подключения к существующей Wi-Fi сети с использованием наиболее безопасного на сегодняшний день стандарта шифрования и аутентификации WPA2. Дополнительно приведены примеры настроек для менее безопасных соединений.

Если Вы можете повлиять на настройку точки доступа, например, в случае, если это Ваш домашний Wi-Fi роутер — постарайтесь настроить авторизацию с использованием WPA2, т.к. это наиболее безопасный протокол аутентификации в беспроводных сетях на настоящий момент.

Замечания

Дополнительно к требованиям, указанным выше Вам следует учесть, что:

  1. После установки всех необходимых пакетов, кабель проводной сети лучше отсоединить.

  2. Некоторые устройства (или их драйвера, например Madwifi) не поддерживают WPA2 (AES). Если соединение WPA2 установить не удается, можно попробовать WPA1 (TKIP).

  3. Если у Вас RTxxx (Ralink) с драйверами Serialmonkey — этот способ Вам не поможет. Вам следует либо установить пакет ndiswrapper, заменяющий Serialmonkey, либо попробовать другой способ.

Подготовка

Установите пакеты wpa-supplicant и wireless-tools

Например так:

$ sudo apt-get install wpasupplicant wireless-tools

Теперь убедитесь в том, что Ваше беспроводное устройство (в данном примере это «wlan0») работает и «видит» беспроводные сети. Команда

$ iwconfig

должна выдать примерно такой результат:

ubuntu@ubuntu:~$ iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:""  
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated   
          Tx-Power=27 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

а доступные сети можно посмотреть командой

$ iwlist <имя интерфейса> scan

которая должна выдать примерно такой результат:

ubuntu@ubuntu:~$ iwlist wlan0 scan

wlan0     Scan completed :
          Cell 01 - Address: 00:00:00:00:00:00
                    ESSID:"ubuntuessid"
                    Mode:Master
                    Channel:8
                    Frequency:2.447 GHz (Channel 8)
                    Quality=7/100  Signal level:-99 dBm  Noise level=-104 dBm
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
                              12 Mb/s; 48 Mb/s
                    Extra:tsf=0000001d57e98bf6
                    Extra: Last beacon: 388ms ago

Бывает, что Ваше устройство Wi-Fi не включено по умолчанию, тогда команда вместо рапорта, приведенного выше выдаст
такое сообщение:

wlan0	Failed to read scan data : Network is down

Ничего страшного, просто введите команду

sudo ip link set dev wlan0 up

соответственно выключить устройство можно командой

sudo ip link set dev wlan0 down

Настройка

Редактируем /etc/network/interfaces, например так:

$ sudo gedit /etc/network/interfaces

Удаляем (или комментируем) все упоминания нашего беспроводного интерфейса и добавляем свои:

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk <hex_ключ> [ВАЖНО - см. Генерация ключей]
auto wlan0

Где:

Параметр Описание
iface wlan0 inet dhcp конфигурация для DHCP (для статического IP см. пример ниже)
«iface wlan0» — Имя нашего интерфейса (wlan0, eth1, rausb0, ra0, итд.)
wpa-driver Это wpa-driver для нашей карты
(‘wext’ — общий драйвер для linux, работающий с «ndiswrapper»). Рекомендуется оставить как есть.
Другие варианты:
hostap = Host AP driver (Intersil Prism2/2.5/3)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wext = Linux wireless extensions (generic)
madwifi = Atheros
wired = wpa_supplicant wired Ethernet driver
wpa-ssid Имя нашей точки доступа (ESSID). Без кавычек.
wpa-ap-scan Параметр вещания точкой доступа ее имени.
«1» = ESSID вещается всем.
«2» = ESSID скрыт.
wpa-proto Протокол
«RSN» = WPA(2)
«WPA» = WPA(1)
wpa-pairwise & wpa-group «CCMP» = AES-шифрователь (как часть стандарта WPA(2))
«TKIP» = TKIP-шифрователь (как часть стандарта WPA(1))
wpa-key-mgmt «WPA-PSK» = Аутентификация через ключевую фразу (см. ‘Cоздание ключей’)
«WPA-EAP» = Аутентификация при помощи сервера аутентификаций.
auto wlan0 Автоматическое включение wlan0 при загрузке/перезагрузке сети.

Генерация ключей

Теперь нам нужно сконвертировать нашу ключевую фразу (WPA ASCII) в hex-ключ:

$ wpa_passphrase <имя_точки_доступа> <ascii_ключ>

Результат будет примерно таким:

network={
ssid="test"
#psk="12345678"
psk=fe727aa8b64ac9b3f54c72432da14faed933ea511ecab1 5bbc6c52e7522f709a
}

hex-ключ это все символы после «psk=».

Нужно его скопировать в буфер обмена и вставить в файл /etc/network/interfaces в поле wpa-psk.

Теперь можно сохранить файл и перезагрузить сеть. Должно установиться соединение. Однако иногда этого сразу не происходит. Если это так — перезагружаем машину.

Дополнительно

Отключаем чтение файла /etc/network/interfaces для others во избежания попадания пароля от сети к третьим лицам.

$ sudo chmod o=-r /etc/network/interfaces

Примеры конфигураций

WPA2 + статический IP, скрытый ESSID.

iface wlan0 inet static
address 192.168.168.40
gateway 192.168.168.230
dns-nameservers 192.168.168.230
netmask 255.255.255.0
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 2
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk <hex_ключ> [ВАЖНО - см. Генерация ключа]
auto wlan0

WPA1 + DHCP, ESSID виден всем.

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto WPA
wpa-pairwise TKIP
wpa-group TKIP
wpa-key-mgmt WPA-PSK
wpa-psk <hex_ключ> [ВАЖНО - см. Генерация ключа] 
auto wlan0

Смешанный режим (WPA1, WPA2) + DHCP, ESSID виден всем.

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto WPA RSN
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-key-mgmt WPA-PSK
wpa-psk <hex_ключ> [ВАЖНО - см. Генерация ключа]
auto wlan0

LEAP, WEP, DHCP, ESSID виден всем.

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-eap LEAP
wpa-key-mgmt IEEE8021X
wpa-identity <имя_пользователя>
wpa-password <пароль>
auto wlan0

PEAP, AES, DHCP, ESSID виден всем.

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-eap PEAP
wpa-key-mgmt WPA-EAP
wpa-identity <наш_identity>
wpa-password <пароль>
auto wlan0

TTLS, WEP, DHCP, ESSID виден всем.

iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-eap TTLS
wpa-key-mgmt IEEE8021X
wpa-anonymous-identity <anonymous_identity>
wpa-identity <наш_identity>
wpa-password <наш_password>
wpa-phase2 auth=PAP [Также: CHAP, MSCHAP, MSCHAPV2]
auto wlan0

Другие способы работы Wi-Fi оборудования

При помощи Wi-Fi адаптера также возможно установить децентрализованную сеть ad-hoc или сделать из компьютера под управлением Ubuntu точку доступа. Поскольку описание данных способов Wi-Fi подключения выходит за рамки этого руководства — обратитесь к соответствующим разделам. Ссылки на эти разделы см. в разделе Cсылки.

Решение проблем

Не устанавливается соединение по Wi-Fi/Ethernet с точкой доступа/маршрутизатором

Симптомы: сеть обычно изначально работает нормально, долго или недолго, а затем неожиданно пропадает и не появляется после перезагрузки. Эта проблема может быть непостоянной. Сеть «сама собой» начинает работать, а затем пропадает вновь.
При перезапуске адаптера сети таким образом:

sudo ifdown wlan0
sudo ifup wlan0

будет выводиться в консоль похожий текст

Listening on LPF/wlan0/00-02-2A-E1-E0-6C
Sending on   LPF/wlan0/00-02-2A-E1-E0-6C
Sending on   Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 15
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

Причиной проблемы может быть то, что материнская плата полностью не обесточивается при выключении компьютера. При этом вероятно не обесточивается и некоторое периферийное оборудование, в т.ч. могут не обесточиваться usb порты. Если вы используете, например, Wi-Fi usb-адаптер, то в таком случае можно заметить горящий на адаптере светодиод (если он им оборудован). Вероятно проблема возникает из-за того, что сетевое оборудование в этом режиме работает не совсем корректно.

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

Сложное решение проблемы состоит в настройке параметров BIOS-а на полное обесточиваение сетевого оборудования при выключении компьютера.

Иногда наглухо пропадает соединение по Wi-Fi с точкой доступа/маршрутизатором

Симптомы: сеть изначально работает, а затем после перезагрузки точки доступа/маршрутизатора неожиданно пропадает, и не появляется ни после перезагрузки, ни после танцев с бубном. При этом беспроводной адаптер в упор не видит точку доступа (хотя она может стоять рядом с компьютером), но прекрасно видит все соседские сети. Затем после ~дцатой~ перезагрузки маршрутизатора сеть сама собой появляется вновь.

Причиной проблемы может быть то, что некоторые маршрутизаторы произвольно выбирают номер рабочего канала, игнорируя номер канала выбранный в настройках маршрутизатора. Если в файле /etc/network/interfaces номер канала для беспроводного интерфейса указан, то вероятно проблема состоит именно в этом. Номер 6 канала указывается в файле примерно так:

auto wlan0
...
wireless-channel 6

Простое решение проблемы состоит в комментировании этого параметра, чтобы адаптер не был ограничен только этим каналом, и перезапуске сети

auto wlan0
...
#wireless-channel 6

Сложное решение проблемы состоит в регистрации бага на сайте производителя маршрутизатора (прошивки для него) и обновление прошивки маршрутизатора после (в случае) его исправления.

Перезапуск сети

Теперь, когда все необходимые действия выполнены, можно перезапустить сеть и проверить соединение. Для этого:

$ sudo /etc/init.d/networking restart

Теперь, при запуске команды ip addr должно отобразиться подключение eth0 с выставленными параметрами.
Если подключение отображается, но параметры не такие, какие были указаны в файле /etc/network/interfaces, либо возникают любые другие ошибки, перепроверьте этот файл на наличие неточностей и опечаток и попробуйте ещё раз перезапустить сеть.

FAQ по сетям

Как зайти на мой компьютер извне (через интернет)?

Для начала надо узнать, какой IP-адрес даёт провайдер — серый или белый (не путать со статическим/динамическим). Если серый, то ничего не получится. Если белый, то возможны два варианта:

  • Роутера нет или он работает в режиме бриджа (моста). В этом случае белый IP-адрес присваивается самому компьютеру. Вводим адрес — попадаем на комп, всё просто.

  • Белый адрес присваивается роутеру. Соответственно, по этому адресу мы попадаем на роутер, а не на компьютер. Чтобы попасть на компьютер, на роутере нужно пробросить порты (см. ниже).

Мне кажется, у меня слишком медленно работает сеть!

Измерьте скорость сети между двумя компьютера с помощью iperf. Можно воспользоваться этой инструкцией. В ней предлагают скомпиллировать программу из исходников, но можно просто установить её из репозитория. Если iperf покажет значение немного меньшее, чем ожидаемое, то с сетью всё в порядке, проблема может быть в железе (жёсткий диск/процессор не могут обеспечить большую скорость), в способе передачи (например, scp и ftp весьма неторопливы), в настройках (скорость может быть ограничена, например, настройками FTP-сервера) или в чём-то ещё. Если iperf показал величину, которая в разы меньше желаемой, то да — с сетью проблемы. Стоит посмотреть, в нужном ли режиме работает карта (например, с помощью ethtool), проверить наличие «errors» в выводе ifconfig и протестировать скорость подключения к какому-нибудь третьему компьютеру.

Как узнать, какие программы слушают порты на моём компьютере?

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

sudo netstat -nlpA inet,inet6

Для вывода информации о конкретном порте можно использовать grep. Например, для 80 порта:

sudo netstat -nlpA inet,inet6 | grep :80

Из вывода netstat не всегда понятно, о какой программе идёт речь (например, 2671/python), подробнее о процессе расскажет ps:

ps aux | grep 2671

Как присвоить два IP-адреса одной сетевой карте?

Например, интерфейсу eth0 нужно добавить адрес 192.168.1.1.
Кратковременно, до перезапуска сети:

sudo ip addr add 192.168.1.1/24 dev eth0

Навсегда — добавить в /etc/network/interfaces следующее:

#исправить строку auto
auto eth0 eth0:1

# добавить алиас
iface eth0:1 inet static
  address 192.168.1.1
  netmask 255.255.255.0

Как пробросить порт?

Например, нужно пробросить порт 8081. Адрес, на который обращается клиент, назовём внешний_ip, а адрес, на который он должен попасть — внутренний_ip.

iptables -t nat -A PREROUTING -p tcp -d внешний_ір --dport 8081 -j DNAT --to-destination внутренний_ір:8081
iptables -t nat -A POSTROUTING -p tcp --dst внутренний_ір --dport 8081 -j SNAT --to-source внешний_ір

И обязательно нужно что-то вроде

iptables -t filter -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT

Ссылки

Translation(s): English — Français — Italiano — 简体中文


Reader Prerequisites: Для понимания этой статьи необходимо умение работать с консольными инструментами, тестовыми редакторами, понимание основ DNS, TCP/IP, DHCP, netmask, gateway.

Table of Contents

Contents

  1. Настройка интерфейса Ethernet

    1. Автоматическое конфигурирование интерфейса с использованием DHCP
    2. Ручное конфигурирование интерфейса
    3. Настройка скорости и дуплекса
    4. Переключение интерфейса в режим моста без IP адреса
  2. Задание серверов имён (DNS)

    1. Конфигурационный файл resolv.conf
    2. Программа resolvconf
    3. Конфигурирование DNS для network-manager
    4. DHCP Client Configuration
  3. Howto use vlan (dot1q, 802.1q, trunk) (Etch, Lenny)

    1. Manual config
    2. Caveats when using bridging and vlan
    3. Network init script config
  4. Howto create fault tolerant bonding with vlan (Etch)

    1. Network config
    2. bonding with active backup
    3. /etc/network/interfaces
  5. Multiple IP addresses on One Interface

Настройка интерфейса Ethernet

Основную настройку сети можно выполнить, редактируя конфигурационный файл interfaces, который располагается в /etc/network/interfaces. Здесь Вы можете задать IP адресс сетевой карты (или использовать DHCP), настроить маршрутизацию, IP masquerading, установить маршрут по умолчанию и многое другое.

Для того что бы интерфейс автоматически инициализировался при загрузке, не забудьте добавить строчку ‘auto’.

Полный список опций можно найти в man interfaces.

Автоматическое конфигурирование интерфейса с использованием DHCP

Если Вы хотите использовать DHCP вам необходимо написать следующие:

    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp

Ручное конфигурирование интерфейса

Если Вы хотите сконфигурировать вручную, например задать шлюз по умолчанию (так же опционально можно задать: сеть, широковещательный адрес или шлюз):

    auto eth0
    iface eth0 inet static
        address 192.168.0.7
        netmask 255.255.255.0
        gateway 192.168.0.254

Если вы хотите добавить IPv6 адрес, то напишете следующие:

    iface eth0 inet6 static
        address 2001:db8::c0ca:1eaf
        netmask 64
        gateway 2001:db8::1ead:ed:beef

Полный список опций можно найти в man interfaces.

Настройка скорости и дуплекса

Частые ошибки автоматического согласования режимов работы, свидетельствуют о проблемах с кабелем. Следует проверить физическое состояние кабельного оборудования (отсутствие повреждений итп), прежде чем предполагать несовместимость алгоритмов автосогласования. Если Вы выключите автосогласование и установите скорость и дуплекс вручную, то интерфейс на другом конце кабеля будет считать что автосогласование не поддерживается и установит скорость 10Mbs и полудуплексный режим передачи. Для того чтобы не было ошибок в работе, при ручной настройки Вам необходимо убедиться что оба интерфейса работают на одинаковых скоростях и установлен одинаковый режим дуплекса.

Если Вы хотите вручную установить скорость и режим дуплекса интерфейса. Здесь описаны основные шаги:

  • установите пакеты ethtool и net-tools, так вы получите программы ethtool и mii-tool. Одна или обе из них могут работать с Вашим интерфейсом.

  • Убедитесь что у Вас есть запасной вариант доступа к системе, на случай если сеть перестанет работать и ?ssh соединение будет не доступно.

  • Определите интерфейс, который Вы будете настраивать (чаше всего это eth0) и замените в следующих командах eth0 на Ваш интерфейс.
  • Попробуйте определить текущую скорость и режим дуплекса.
    • Для начала выполните, как root ethtool eth0, и Вы увидите строчки «Speed:» и «Duplex:», если нет то ethtool возможно не поддерживает Ваше устройство.

    • Попробуйте выполнить как root mii-tool -v eth0 и убедиться, что вывод выглядит правильно. Если нет, то mii-tool не поддерживает ваше устройство

    • Если ни одна из них не поддерживается, то Вы можете попробовать установить параметры напрямую в модуле драйвера ядра. Определить какой драйвер у Вас используется можно из вывода команд dmesg и lsmod. Вы можете попробовать выполнить modinfo MODULENAME что бы узнать возможные параметры. (можно использовать modinfo даже если модуль не загружен) ToDo: where does one set kernel module parameters?

  • Дальше, попробуйте изменить настройки используемого интерфейса. Вам необходимо быть root:
    • ethtool -s eth0 autoneg off speed 100 duplex full (задаёт 100 Mbps и full duplex)

    • mii-tool -F 100baseTx-FD eth0 (same assumption)

В каждом случае, перепроверьте применились ли настройки которые Вы изменили, затем попробуйте отправить какие-нибудь данные из системы, чтобы убедиться что NIC работает правильно.

  • Если одна из этих команд успешно настроила Вашу сетевую карту, можно добавить эти параметры в /etc/network/interfaces чтобы они применялись во время загрузки при поднятии интерфейса. Однако, перед этим Вам следует понять что некоторые драйвера отличаются от других. Когда модуль драйвера загружен, сетевая карта может начать автосогласование, без какого либо способа остановить его (особенно с драйверами которые не принимают параметры). Параметры из файла interfaces могут применяются в момент, когда автосогласование уже наполовину выполнено. Что бы избежать этого можно добавить задержку выполнения команд ethtool и mii-tool. Например :

iface eth0 inet static
       address ...
       netmask ...
       gateway ...
       up sleep 5; ethtool -s eth0 ...
  • Или аналоги команды mii-tool.

  • Перезагрузите компьютер чтобы убедится что всё работает правильно, и приготовитесь вмешаться (Ctrl-Alt-Del и затем загрузиться в однопользовательском режиме через LILO или GRUB) если что-то не работает.

Переключение интерфейса в режим моста без IP адреса

Чтобы создать сетевой интерфейс без IP адреса используйте ручной метод и команды pre-up и post-down

   iface eth0 inet manual
   pre-up ifconfig $IFACE up
   post-down ifconfig $IFACE down

Задание серверов имён (DNS)

Перед тем как компьютер сможет подключится внешнему сетевому ресурсу (например веб-серверу), он должен преобразовать буквенное-цифровое имя (такое как wiki.debian.org) в числовой адрес сети (например 140.211.166.4). (В Интернет идентификации компьютера в сети используется структурированный числовой IP адрес.)

Библиотека C и другие библиотеки за списком серверов имён обращаются к файлу /etc/resolv.conf. В простейшем случае Вы можете отредактировать этот файл, записав в него список серверов имён. Но, следует отметить, что различные программы динамической конфигурации будут рады переписать ваши настройки:

  1. Программа resolvconf

  2. Демон network-manager

  3. DHCP клиенты

В большинстве ситуаций необходимо отредактировать файлы конфигураций этих программ.

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

Конфигурационный файл resolv.conf

Конфигурационный файл resolv.conf располагается в /etc/resolv.conf, и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот конфигурационный файл с программой resolvconf , которая по неудачному стечению обстоятельств имеет такое же название.)

Файл resolv.conf обычно содержит IP адреса серверов имён (DNS) которые будут пытаться перевести имена в адрес для любого узла доступного в сети. Там будут строчки содержащие, примерно, следующие:

  nameserver 12.34.56.78
  nameserver 12.34.56.79

В этом примере, система исопользует сервера имён с IP адресами 12.34.56.78 и 12.34.56.79. Просто отредактируйте этот файл и введите IP адреса нужных Вам серверов, после слова nameserver. Можно добавить ещё строчки, если у Вас больше 2 серверов имён.

Не используйте этот метод если у Вас установлена программа resolvconf

Конфигурационный файл resolv.conf имеет множество других опций для определения режимов преобразования имён. См. man resolv.conf.

Программа resolvconf

Программа resolvconf следит за информацией о доступных на данных момент серверов имён. Не следует путать её с одноимённым конфигурационным файлом resolv.conf. Программа resolvconf является опциональной для систем Debian.

Конфигурационный файл resolv.conf содержит информацию о серверах имён, которые используются в системы. Однако, когда множеству программ необходимо динамически изменять файл resolv.conf они начинают мешать друг другу и файл становиться не синхронизируемым (out-of-sync). Программа resolvconf решает эту проблему. Она является посредником между программами которые поставляют информацию о серверах имён (например dhcp клиент) и программами которые используют эту информацию (например резолвер).

Если resolvconf правильно установлена, конфигурационный файл resolv.conf заменяется символьной ссылкой на файл /etc/resolvconf/run/resolv.conf и резолвер использует файл, который динамически генерируется программой resolvconf.

Программа resolvconf, в общем случае, необходима когда в системе присутствуют программы которым необходимо часто изменять информацию о серверах имён. В простых системах где нет таких программ, достаточно просто файла resolv.conf.

Если программа resolvconf установлена, то Вам не следует вручную редактировать файл resolv.conf , так как он будет динамически меняться программами в системе. Если Вам необходимо вручную задать сервера имён (например при статически сконфигурированном интерфейсе), добавьте в конфигурационный файл interfaces следующую строчку:

dns-nameservers 12.34.56.78 12.34.56.79

Разместите эту строчку в описании интерфейса iface, сразу после указания шлюза gateway. IP адрес сервера имёны необхожимо ввести после слова dns-nameservers. Если IP адресов несколько то они разделяются пробелом. Не забудьте написать «s» в конце слова dns-nameservers.

Программа resolvconf была добавлена в Debian сравнительно недавно и многие старые программы необходимо обновить и переконфигурировать для правильно работы. Если у Вас возникли проблемы, смотрите файл /usr/share/doc/resolvconf/README. Он содержит полную информацию по работе resolvconf с другими программами.

Конфигурирование DNS для network-manager

Предупреждение: Этот раздел не был протестирован с актуальной версией network-manager. Пожалуйста протестируйте и удалите это сообщение. Примечание: В этом разделе описаны примеры применяемые в системах подобных Red Hat, а не Debian.

Если Вы используете NetworkManager, настройки располагаются в файле /etc/sysconfig/network-scripts/ifcfg-*. Например так:

DNS1=127.0.0.1
DNS2=8.8.8.8
DNS3=8.8.4.4

Через графический интерфейс это можно сделать так:

  1. Systems menu > Preferences > Network Connections.

  2. Выберете соединение (на вкладке Wired(проводное) или Wireless(беспроводное) ) и нажмите Edit.
  3. На вкладке IPv4 Settings измените метод получения адреса “Automatic (DHCP)” на какой-нибудь другой. Например, “Automatic (DHCP) addresses only” is likely to be appropriate.
  4. Введите через пробел адреса DNS серверов в поле “DNS servers”.
  5. Нажмите “Apply.” Примечание, Ваш DHCP клиент может отменить эти настройки;

    Этот раздел основан на http://code.google.com/speed/public-dns/docs/using.html , где Вы можете найти более детальное описание.

DHCP Client Configuration

Example: dhclient3 uses /etc/dhcp/dhclient.conf. The setting you want is

supersede domain-name-servers 12.34.56.78, 12.34.56.79

or perhaps

prepend domain-name-servers 12.34.56.78, 12.34.56.79

See the dhclient.conf(5) manual page for details.

Howto use vlan (dot1q, 802.1q, trunk) (Etch, Lenny)

Manual config

modprobe 8021q

apt-get install vlan

vconfig add eth0 222    # 222 is vlan number
ifconfig eth0.222 up
ifconfig eth0.222 mtu 1496    #optional if your network card doesn't support MTU 1504B
ifconfig eth0.222 10.10.10.1 netmask 255.255.255.0

Caveats when using bridging and vlan

#/etc/network/interfaces
auto eth0 bri0
iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
iface eth0.110 inet manual
        vlan-raw-device eth0
iface bri0 inet static
        address 192.168.110.1
        network 192.168.110.0
        netmask 255.255.255.0
        broadcast 192.168.110.255
        bridge_ports eth0.110
        bridge_stp on
        bridge_maxwait 10

If you are using a brigded VLAN setup, which is probably useful for networking in virtualization environments, take care to only attach either a bridge device or VLAN devices to an underlying physical device — like shown above. Attaching the physical interface (eth0) to a bridge (eg. bri1) while using the same physical interface on apparently different VLANs will result in all packets to remain tagged. (Kernel newer than 2.6.37 and older than 3.2).

Network init script config

Into /etc/modules add line:

8021q

In /etc/network/interfaces to section iface add parameter:

        vlan-raw-device eth0

The interface name should be the raw interface name (the same as specified by vlan-raw-device), then a dot, then the VLAN ID, for example eth0.100. It can instead be «vlan» then the VLAN ID, for example vlan100. In either case, the VLAN ID is on the end, and this is the only place that it is configured. Eg:

auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1
        netmask 255.255.255.0
        network 10.10.10.0
        broadcast 10.10.10.255
        vlan-raw-device eth0

Howto create fault tolerant bonding with vlan (Etch)

[ATTACH]

debian_bonding.dia

Howto configure one of the above server active backup bonding 3 vlan {vlan10,vlan20,vlan30} Debian networking without SPOF without native vlan.

aptitude install vlan ifenslave-2.6

Network config

Cisco switch interface example config

interface GigabitEthernet1/2
 description eth1
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport mode trunk
 no ip address
 no cdp enable
 spanning-tree portfast trunk

bonding with active backup

Create a file /etc/modprobe.d/bonding.conf containing:

alias bond0 bonding
options bonding mode=active-backup miimon=100 downdelay=200 updelay=200 primary=eth1

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
        up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12
        netmask 255.255.0.0
        network 10.10.0.0
        broadcast 10.10.255.255
        vlan-raw-device bond0
        gateway 10.10.0.1
        dns-search hup.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12
        netmask 255.255.0.0
        network 10.20.0.0
        broadcast 10.20.255.255
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12
        netmask 255.255.0.0
        network 10.30.0.0
        broadcast 10.30.255.255
        vlan-raw-device bond0

Multiple IP addresses on One Interface

Interface aliasing allows one interface to have multiple IP addresses. This is useful when more than one server is to be visible via the Internet. Note that virtual hosts can support multiple Apache servers with a single IP address. Apache responds to the domain name supplied by the client in the HTTP header. In many other situations, one external IP is needed for each server using a port.

This /etc/network/interfaces text assigns three IP addresses to eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 192.168.1.44
    netmask 255.255.255.0

An alias interface should not have «gateway» or «dns-nameservers»; dynamic IP assignment is permissible.

The above configuration is the previous traditional method that reflects the traditional use of ifconfig to configure network devices. ifconfig has introduced the concept of aliased or virtual interfaces. Those types of virtual interfaces have names of the form interface:integer and ifconfig treats them very similarly to real interfaces.

Nowadays ifupdown uses ip utility from the iproute2 package instead of ifconfig. The newer ip utility does not use the same concept of aliases or virtual interfaces. However, it supports assigning arbitrary names to the interfaces (they’re called labels). ifupdown uses this feature to support aliased interfaces while using ip.

Also, ifupdown supports specifying multiple interfaces by repeating iface sections with the same interface name. The key difference from the method described above is that all such sections are treated by ifupdown as just one interface, so user can’t add or remove them individually. However, up/down commands, as well as scripts, are called for every section as it used to be.

This /etc/network/interfaces text assigns three IP addresses to eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

iface eth0 inet static
    address 192.168.1.44
    netmask 255.255.255.0

Additional information can be found on the http://www.shorewall.net/Shorewall_and_Aliased_Interfaces.html page.


CategoryNetwork

Contents

  1. Introduction
  2. Requirements
  3. Basics

    1. Setting/changing the hostname
    2. Finding your network interface
    3. Disable network managers and/or wicd
    4. Configuring an interface
    5. Setting up a second IP address or Virtual IP address
    6. Howto set MTU for a connection
    7. Setting up DNS
  4. Wireless

    1. ndiswrapper
    2. Configure your wireless interface
    3. WPA supplicant
  5. Configure laptops for multiple locations

    1. Map your physical interfaces to logical interfaces
    2. Define tests to select networks
    3. Result
    4. Bonus script
  6. See also

    1. Ubuntu resources
    2. External resources

Introduction

You can configure a network interface from the command line. You can configure your network client hosts with the command line by using commands to change your current settings or by editing a number of system files. This has several advantages over network managers in the GUI.

This guide had been developed for Ubuntu and Debian, other distributions can use a similar setup, but be aware that file locations may differ.

Requirements

An editor. This guide will use vi, but you can replace it with any other editor of your liking, gedit, nano, gvim, pico, emacs..

Have a working internet connection during the installation. We need to install packages and those are fetched from the online repositories.

Backup any files we touch. Just easier to recover when you have a backup.

Read this guide in full before actually configuring your network.

Basics

Setting/changing the hostname

The hostname command allows you to directly query, or set, the hostname from the command line.

You can see your current hostname by running hostname. To set the hostname directly you can run hostname newname as root. If you do this however, make sure you change the /etc/hosts file first. This is needed because otherwise you will need to boot into single user mode and change your hostname in /etc/hosts. This is because sudo requires DNS lookups in certain cases and it cannot resolve your newly set hostname.. To circumvent this you need to add the new name to the hosts file prior to setting the hostname and remove it once that action has succeeded.

sudo vi /etc/hosts
127.0.1.1 ubuntu newname

Set the hostname to newname.

sudo hostname newname
# or
echo newname | sudo tee /etc/hostname

Now you can remove the old hostname

sudo vi /etc/hosts
127.0.1.1 newname

When your system boots it will automatically read the hostname from the file /etc/hostname. You can add hostname and IP addresses to the file /etc/hosts for static lookups.

Finding your network interface

When setting up your network you will need to know the network interface cards on your computer. The interface name of cards for different vendors may be different, which is why this step is needed.

ls /sys/class/net
# or
ip addr

This will list the interface names for all NICs on your computer. It will probably include eth0 (hardwired NIC), lo (loopback interface for the localhost), and something for your wireless card (like wifi0, or wlan0).

Disable network managers and/or wicd

Configuring your network via the CLI will likely interfere with Network Manager or wicd. To counter this, disable the startup script of either application or completely remove the packages. Be aware that the rest of this guide will require packages which need to be installed from the online repositories.

## Network manager
# Stop the current process
sudo /etc/init.d/NetworkManager stop
# Start: sudo /etc/init.d/NetworkManager start

# The inofficial way:
sudo chmod -x /etc/init.d/NetworkManager
# Reverse: sudo chmod +x /etc/init.d/NetworkManager
# The official way:
sudo update-rc.d -f NetworkManager remove
# Reverse: sudo update-rc.d -f NetworkManager defaults 50

# Or remove the network manager package.
sudo aptitude purge network-manager
# Reverse: sudo aptitude install network-manager

## wicd
# Stop the current process
sudo /etc/init.d/wicd stop
# Start: sudo /etc/init.d/wicd start

# The inofficial way:
sudo chmod -x /etc/init.d/wicd
# Reverse: sudo chmod +x /etc/init.d/wicd

# The official way:
sudo update-rc.d -f wicd remove
# Reverse: sudo update-rc.d -f wicd defaults 20

# Or remove the wicd package.
sudo aptitude purge network-manager
# Reverse: sudo aptitude install network-manager

Note: At some point Ubuntu started using upstart instead of the /sbin/init/ daemon. Thus if the first command above does not stop Network Manager, try this.

sudo stop network-manager

Configuring an interface

Word of wisdom

We will use eth0 in this example, your interface can be named differently, see Finding your network interface.

If you have disabled the either wicd or the network manager you probably don’t have a network connection anymore. Connect via a regular UTP cable to your router, and assuming you have DHCP enabled do the following:

sudo ip link set dev eth0 down
sudo dhclient eth0

This will bring your eth0 up by using DHCP. Your network is now configured (for the time being).

If you don’t have DHCP enabled configure your network by issueing the commands below, the gateway address is the IP address of your router. And your IP should be in the same range as the router is.

sudo ip addr add 192.168.1.14/24 dev eth0
sudo ip link set dev eth0 up
sudo ip route add default via 192.168.1.1

These commands configure your interface but these changes will not survive a reboot, since the information is not stored anyhwere. This is where the interfaces file comes in handy. To configure a interface permanently you’ll need to edit the interfaces file, /etc/network/interfaces.

sudo vi /etc/network/interfaces
## To configure a dynamic IP address
auto eth0
iface eth0 inet dhcp

## Or configure a static IP
auto eth0
iface eth0 inet static
  address 192.168.1.14
  gateway 192.168.1.1
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255

For these settings to take effect you need to restart your networking services.

sudo /etc/init.d/networking restart

Setting up a second IP address or Virtual IP address

If you need to set up a second ip address you need to edit the /etc/network/interfaces.

sudo vi /etc/network/interfaces
auto eth0:1
iface eth0:1 inet static
  address 192.168.1.24
  netmask 255.255.255.0
  network 192.168.1.1
  broadcast 192.168.1.255
  gateway 192.168.1.1

For these new settings to take effect you need to restart networking services using the following command

sudo /etc/init.d/networking restart

Howto set MTU for a connection

You can set the MTU for an interface, you could do this by using the mtu keyword in the interface file or by using the ip link command.

iface eth0 inet dhcp
  # via mtu keyword
  mtu 1492
  # Via ip link command
  pre-up /sbin/ip link set $IFACE mtu 1492

The above example sets the MTU for device eth0 to 1492, the usual MTU for a PPPoE ISP connection. This however is only needed if connections seem to hang otherwise (with the default of 1500).

This tip was found on http://glasnost.beeznest.org/articles/290.

Setting up DNS

To cause your machine to consult with a particular server for name lookups you simply add their addresses to /etc/resolv.conf.

For example a machine which should perform lookups from the DNS server at IP address 192.168.1.1 would have a resolv.conf file looking like this

sudo vi /etc/resolv.conf

enter the following details

search example.com
domain example.com
nameserver 192.168.1.1

Wireless

We will not use un-encrypted wireless connections, but will make use of WEP/WPA/WPA2. Deviations from security/encryption method is an exercise left for the user. We also assume the network SSID is being broadcast.

Enabling wireless networking on your PC is pretty straight forward. If your network card is supported out of the box, then there are very little issues. If your card is not supported out of the box, you may need to use ndiswrapper, which will require the Windows drivers fo your card.

ndiswrapper

* Install a Windows driver with ndiswrapper for Dapper or ndiswrapper for 8.04 and up

# Ubuntu 6.06 (Dapper) and earlier
sudo aptitude install ndiswrapper-utils
# Ubuntu 8.04 and up (Hardy/Intrepid/Jaunty/Karmic)
sudo aptitude install ndiswrapper-utils-1.9

# All versions
sudo ndiswrapper -i /path/to/windows/driver.inf
sudo ndiswrapper -m
More information about ndiswrapper

https://help.ubuntu.com/community/WifiDocs/Driver/Ndiswrapper

ndiswrapper --help
man ndiswrapper

Configure your wireless interface

In the examples I will use wlan0 as your wireless card, this could be different on your machine! I will do the examples with a dynamic IP address (DHCP), the same principles applies to staticly configured IP’s.

Open the interfaces file

sudo vi /etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
pre-up  /etc/init.d/wpa.sh start
post-down /etc/init.d/wpa.sh stop

The pre-up command is run before the interface goes up. The post-down command is run after the interface goes down. There are also post-up and pre-down commands. E.g. You could use post-up to mount disks after an interface goes up. In this case we start wpa_supplicant before we enable the interface and we stop wpa_supplicant after we bring the interface down.

WPA supplicant

Before you start

(i) Before proceeding any further, it might be worthwhile to check whether your Wi-Fi Card is supported. Please see the wpa_supplicant website for more details. This will save you lots of time and frustration.

Install wpa_supplicant

sudo aptitude install wpasupplicant

Creating the password

You probably have given your wireless network a name (the ESSID or SSID), in this example we will use ubuntuwifi for our wireless network, our password will be OpenSesame. The SSID and password needs to be configured on your wireless router, how to do that is up to the reader. If you have problems coming up with a password, please have a look here.

If you are using WEP encryption (which is not advised) you may skip this step.

$ wpa_passphrase ubuntuwifi OpenSesame
network={
        ssid="ubuntuwifi"
        #psk="OpenSesame"
        psk=24f87a7583001eb7cea2394bbdb04eb2d3641f0b907dd31bd286be628c1841f8
}

Adding your network

Open the /etc/wpa_supplicant file and define your network.

sudo vi /etc/wpa_supplicant.conf
#
#  Please see /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz
#  for more complete configuration parameters.
#
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0

eapol_version=2
ap_scan=1
fast_reauth=1
country=NL

### Associate with any open access point
###  Scans/ESSID changes can be done with wpa_cli
network={
  ssid=""
  key_mgmt=NONE
  priority=1
}

# WEP
network={
  ssid="ubuntuwifi"
  scan_ssid=1
  key_mgmt=NONE
  wep_key0="OpenSesame"
  wep_key1="OpenOtherSesame"
  # Use the correct key..
  wep_tx_keyidx=0
  priority=5
}

# WPA/WPA2
network={
  ssid="ubuntuwifi"
  scan_ssid=1
  psk=24f87a7583001eb7cea2394bbdb04eb2d3641f0b907dd31bd286be628c1841f8
  priority=5
  ## The configuration items listed below do not need to be set, the defaults are
  ## pretty 'let us do it for you'.
  ## See /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz for more information.
  # key_mgmt=WPA-PSK
  # proto=WPA RSN
  # pairwise=CCMP TKIP
  # group=CCMP TKIP
}

Please beware, if you use WPA, remove the WEP section and vice versa.

The priority in this file determines to which network you will connect if more then 2 configured networks are available. This will always be the network with the highest priority.

WPA start script

Create the WPA startup script /etc/init.d/wpa.sh

sudo vi /etc/init.d/wpa.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides:          wpa
# Required-Start:    $network $syslog $local_fs
# Required-Stop:     $network $syslog $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop script for wpa supplicant
# Description:       Custom start/stop script for wpa_supplicant.
### END INIT INFO

SELF=`basename $0`
WPA=wpa_supplicant
PROGRAM=/sbin/${WPA}
CONF=/etc/${WPA}.conf
INTERFACE=wlan0
DRIVER=wext
DAEMONMODE="-B"
LOGFILE=/var/log/$WPA.log

function start() {

    # TODO: Support multiple interfaces and drivers
    OPTIONS="-c $CONF -i $INTERFACE -D $DRIVER $DAEMONMODE"

    ## You can remove this if you are running 8.10 and up.
    # Ubuntu 8.10 and up doesn't need the -w anymore..
    # And the logfile option is not valid on 8.04 and lower
    local ver=$(lsb_release -sr | sed -e 's/.//g');
    [ $ver -lt 810 ] && OPTIONS="$OPTIONS -w" && LOGFILE=""
    ##

    # Log to a file
    [ -n "$LOGFILE" ] && OPTIONS="$OPTIONS -f $LOGFILE"

    echo " * Starting wpa supplicant"
    eval $PROGRAM $OPTIONS
}

function stop() {
    echo " * Stopping wpa supplicant"
    wpa_cli -i $INTERFACE terminate
    #pkill $PROGRAM ## alternative method 
}

function debug() {
    stop
    DAEMONMODE="-ddd"
    start
}

function restart() {
    stop
    start
}

function status() {
    pgrep -lf $PROGRAM
}

function usage() {
    echo "Usage: $SELF <start|stop|status|debug>"
    return 2
}

case $1 in
    start|stop|debug|restart|status) $1 ;;
    *) usage ;;
esac

Make the start script executable.

sudo chmod +x /etc/init.d/wpa.sh

You can now start WPA supplicant as a service or in debugging mode:

# Service
/etc/init.d/wpa.sh start
# Debugging
/etc/init.d/wpa.sh debug

Make sure the script gets run on boot and stopped at shutdown

sudo update-rc.d wpa.sh defaults

With wpa_cli you can make changes to your wpa_supplicant config file and reload these changes:

sudo wpa_cli

Enter help to see what you can do with wpa_cli. Some of the options are: reconfigure, disconnect, reconnect, reassociate. These options speak for themself.

For more information about wpa_supplicant, please have a look at their respective manpages:

man wpa_supplicant
man wpa_supplicant.conf
man wpa_cli
man wpa_gui # Only when you have installed the wpagui package
gzip -dc /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz | less

Now that you have setup everything, you can try to connect to your network by restarting networking

sudo /etc/init.d/networking restart

You could also reboot your machine if you prefer that.

Configure laptops for multiple locations

When you have a laptop you don’t want to configure it to only be able to have a internet connection at only one location. You probably go to work and use a wired connection, you goto to coffeeshop and use the wifi hotspot overthere and at home you have another network configuration. That is exactly what we are going to configure now.

Guessnet, ifplugd and wpa_supplicant

Install guessnet and ifplugd

sudo aptitude install guessnet ifplugd

Configure ifplugd. Define which interfaces need to be hotplug and adjust the arguments. You should remove the -q.

sudo vi /etc/default/ifplugd
# Just an example
INTERFACES="eth0 wlan0"
#ARGS="-q -f -u0 -d10 -w -I"
ARGS="-f -u0 -d10 -w -I"
# Override ARGS for a particular interface
# This is for an Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
ARGS_wlan0="-F -u0 -d10 -w -I"
SUSPEND_ACTION=stop

Some cards do not really play well with the defaults of Ubuntu, adjust where needed.

More information for ifplugd

See ifplugd for more information. And their respective man pages

man ifplugd
man ifplugd.conf

You will need the wpa.sh script mentioned earlier in this guide and you will need to make sure it will be started and stopped:

# Start wpa_supplicant at boot
sudo ln -s /etc/init.d/wpa.sh /etc/rc2.d/S19wpa
sudo ln -s /etc/init.d/wpa.sh /etc/rc3.d/S19wpa

# Kill wpa_supplicant at shutdown
sudo ln -s /etc/init.d/wpa.sh /etc/rc5.d/K21wpa
sudo ln -s /etc/init.d/wpa.sh /etc/rc6.d/K21wpa

Map your physical interfaces to logical interfaces

First, we are going to make a mapping for eth0 and wlan0 and said which mapped interface could be used for each physical interface:

mapping eth0
  # Tell ifupdown to use guessnet to determine which network we can use
  script guessnet-ifupdown
  # Default location
  map default: missing-cable
  # How verbose we are
  map verbose: false
  map debug: false
  # Our different networks, order decides which network is picked
  # if two or more networks are available at the same time.
  map officelan homelan aruba missing-cable

mapping wlan0
  script guessnet-ifupdown
  map default: missing-cable
  map verbose: false
  map debug: false
  map workwifi homewifi wifi-open missing-cable

Normally ifupdown configures the interfaces, but now we’ve told it to use guessnet to determine the network being used.

Define tests to select networks

As you will see with the officelan, homelan and aruba examples below we will execute tests to see wheter a peer is present based on the MAC address. The simplest solution for this is to check whether your gateway is present. You can find out the MAC address of your gateway by running the ip neigh command. You need to be connected with your network for this.

$ ip neigh
192.168.1.254 dev eth0 lladdr 00:24:17:47:xx:xx

This my default gateway, has IP address 192.168.1.254 and 00:24:17:47:xx:xx as a MAC address. This gives us the needed information to define the test.

  test peer address 192.168.1.254 mac 00:24:17:47:xx:xx source 192.168.1.14

You don’t need to specify the source IP address, but in certain cases this is required. I always add it so I don’t have to worry about it in case I do need it.

So let’s define our fixed networks using the peer tests:

# Work
# Obfuscated some details about my work enviroment
iface officelan inet static
  # Test to see if our gateway is present with MAC address 00:00:xx:xx:xx:xx
  # from source address 194.134.x.x
  test peer address 194.134.x.x mac 00:00:xx:xx:xx:xx source 194.134.x.x
  address 194.134.x.x
  netmask 255.255.255.0
  gateway 194.134.x.x
  # Set our DNS, this is used by the resolvconf package
  dns-domain euronet.nl
  dns-search euronet.nl orange.nl wanadoo.nl online.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  # (post|pre)-(up|down) actions, which are optional
  # Mount samba shares at work after we brought the interface up
  post-up /home/my_user/bin/mount_smb start
  # And disable to mounts before we shut the interface down
  pre-down /home/my_user/bin/mount_smb stop
  # Which interface has preference, eth0 or wlan0, this is needed if you
  # are connected via both interfaces.
  metric 1

# One happy island (very nice weather ;))
iface aruba inet dhcp
  test peer address 192.168.1.1 mac 00:08:5C:89:xx:xx source 192.168.1.4
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl euro.net

# Home
iface homelan inet static
  test peer address 192.168.1.254 mac 00:24:17:47:xx:xx source 192.168.1.14
  address 192.168.1.14
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  # At home, wireless has precedence over our fixed network
  metric 2

For wireless networks you can also use the peer test, but there is a simpler way to see if you can connect to a wireless network. Test to see if the ESSID is present:

  test wireless essid ubuntuwifi
  # In case of spaces in the ESSID
  test wireless essid "ubuntu wifi"
Spaces in the ESSID
In older versions of guessnet you didn’t need to use quotes around the ESSID, but later versions do require it.
# Wifi at work
iface workwifi inet dhcp
  # Use this if we can find Online Wireless network
  test wireless essid "Online Wireless"
  dns-domain euronet.nl
  dns-search euronet.nl orange.nl wanadoo.nl online.nl sf6800.euronet.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  # This interface has a lesser precedence over eth0
  metric 2

# Wifi at home
iface homewifi inet static
  test wireless essid ubuntuwifi
  address 192.168.1.114
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl
  dns-nameservers 194.134.5.5 194.134.0.97
  # This interface is used in case we are both connected via wifi and
  # wired LAN
  metric 1

# Connect to any open network
iface wifi-open inet dhcp
  # Any ESSID is valid
  wireless-essid any
  # Is the wireless work open? Yes, then use this mapping
  test wireless open
  # Set the DNS
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl
  dns-nameservers 194.134.5.5 194.134.0.97

To see what kind of other test you can run to determine which network you are in, please have a look at the manpage of guessnet.

man guessnet

Use of metrics

Some of you might have noticed a metric statement for some of the interfaces. I do this because when you are connected via both wireless and wired networks, some things may go «bad» with the routing table. When you define a metric for these two interfaces you will tell the routing table which interface has preference over the other. The lowest metric has priority over the higher metric.

Or as I explained in a ubuntuforum post: The problem is that without the metric you will have 2 interfaces used for the same destinations. It will use either interface, which causes problems with the routing table.

By setting a metric you can avoid this, since the higher metric is more «expensive» to use. So the OS will use the interfaces with the lowest metric if it needs to route traffic. In case the lower metric interface is shutdown it will use the higher metric interface since it is the only interface which can be used to route traffic towards that particular network/destination.

See also http://en.wikipedia.org/wiki/Metrics_%28networking%29

The problem could also be solved by adding static routes, but that is used mostly to make sure specific networks/hosts are routed via a different interface then the default. You then force only those hosts to use link B even though normally the OS would use link A.

Result

When we put all the configuration segments together you will get a interfaces file which looks like this

auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

mapping eth0
  script guessnet-ifupdown
  map default: missing-cable
  map verbose: false
  map debug: false
  map officelan homelan aruba missing-cable

mapping wlan0
  script guessnet-ifupdown
  map default: missing-cable
  map verbose: false
  map debug: false
  map workwifi homewifi wifi-open missing-cable

# Work
iface officelan inet static
  test peer address 194.134.x.x mac 00:00:xx:xx:xx:xx source 194.134.x.x
  address 194.134.x.x
  netmask 255.255.255.0
  gateway 194.134.x.x
  dns-domain euronet.nl
  dns-search euronet.nl orange.nl wanadoo.nl online.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  post-up /home/my_user/bin/mount_smb start
  pre-down /home/my_user/bin/mount_smb stop
  metric 1

# One happy island (very nice weather ;))
iface aruba inet dhcp
  test peer address 192.168.1.1 mac 00:08:5C:89:xx:xx source 192.168.1.4
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl euro.net

# Home
iface homelan inet static
  test peer address 192.168.1.254 mac 00:24:17:47:xx:xx source 192.168.1.14
  address 192.168.1.14
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  metric 2

# Wifi at work
iface workwifi inet dhcp
  # Use this if we can find Online Wireless network
  test wireless essid "Online Wireless"
  dns-domain euronet.nl
  dns-search euronet.nl orange.nl wanadoo.nl online.nl sf6800.euronet.nl euro.net
  dns-nameservers 194.134.5.5 194.134.0.97
  # This interface has a lesser precedence over eth0
  metric 2

# Wifi at home
iface homewifi inet static
  test wireless essid ubuntuwifi
  address 192.168.1.114
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl
  dns-nameservers 194.134.5.5 194.134.0.97
  # This interface is used in case we are both connected via wifi and
  # wired LAN
  metric 1

# Connect to any open network
iface wifi-open inet dhcp
  # Any ESSID is valid
  wireless-essid any
  # Is the wireless work open? Yes, then use this mapping
  test wireless open
  # Set the DNS
  dns-domain opperschaap.net
  dns-search opperschaap.net euronet.nl wanadoo.nl online.nl
  dns-nameservers 194.134.5.5 194.134.0.97

You can now test if it all works like intended.

/etc/init.d/networking stop
/etc/init.d/wpa.sh stop
/etc/init.d/ifplugd stop

If you enter ip addr you will only see the lo interface being active.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000

And start all the required daemons:

/etc/init.d/ifplugd start
/etc/init.d/wpa.sh start
/etc/init.d/networking start

And now you will see your interfaces configured properly

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

Done.

Bonus script

This script will be a stop/start script for your complete network, which can be used when you want to enable networking after you have suspended your laptop or for other reasons

INT="eth0 wlan0"

stop() {
    /etc/init.d/networking stop
    /etc/init.d/wpa.sh stop
    /etc/init.d/ifplugd stop
    for i in $INT ; do
        ip link set dev "$i" down &>/dev/null
    done

}

start() {
    /etc/init.d/ifplugd start
    /etc/init.d/wpa.sh start
    /etc/init.d/networking start
}

restart() {
    stop
    sleep 5
    start
}

$1

See also

Ubuntu resources

  • http://ubuntuforums.org/showthread.php?t=124153 — This guide on the Ubuntu forums.

  • http://ubuntuforums.org/showthread.php?t=1055393 — Setting hostname gone wrong.

External resources

  • http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking — networking for Linux explained

  • http://wiki.debian.org/WPA — Debian wiki and configuring WPA

  • http://www.aaron-spettl.de/ubuntu/dynamische-netzwerkkonfiguration.php — This guide in German

  • http://vollink.com/gary/deb_wifi.html — Debian and Wireless networking (broken link)

  • http://wiki.fok.nl/index.php/Dig/linux/wireless — This guide in Dutch, rewrite of the Ubuntu forums thread (Dutch)


CategoryNetworking CategoryWireless CategoryCommandLine

NetworkConfigurationCommandLine/Automatic (last edited 2015-07-18 12:02:04 by peter-hentrich)

Содержание

  • Настраиваем сеть в Ubuntu
  • Подготовительные мероприятия
    • Способ 1: Терминал
    • Способ 2: Network Manager
  • Заключение
  • Вопросы и ответы

как настроить сеть в ubuntu

Многие пользователи сталкиваются с проблемами при попытке настроить интернет-соединение в Ubuntu. Чаще всего это связано с неопытностью, но могут быть и другие причины. В статье будет предоставлена инструкция по настройке нескольких типов подключений с подробным разбором всех возможных осложнений в процессе выполнения.

Существует множество видов подключений к интернету, но в этой статье будут рассмотрены самые популярные: проводная сеть, PPPoE и DIAL-UP. Также будет рассказано про отдельную настройку DNS-сервера.

Читайте также:
Как создать загрузочную флешку с Ubuntu
Как установить Ubuntu с флешки

Подготовительные мероприятия

Перед тем как приступать к установке соединения, стоит убедиться, что ваша система готова к этому. Сразу же надо уточнить, что команды, выполняемые в «Терминале», делятся на два вида: требующие права пользователя (перед ними будет стоять символ $) и требующие права суперпользователя (в начале стоит символ #). Обращайте на это внимание, так как без нужных прав большинство команд попросту откажутся выполняться. Также стоит уточнить, что сами символы в «Терминал» вписывать не нужно.

Вам необходимо будет выполнить ряд пунктов:

  • Убедиться, что утилиты, служащие для автоматического подключения к сети, выключены. Например, выполняя настройку через «Терминал», рекомендуется отключить Network Manager (значок сети в правой части верхней панели).

    Примечание: в зависимости от статуса соединения, индикатор Network Manager может отображаться по-разному, но он всегда располагается слева от языковой панели.

    иконка тetwork manager в ubuntu

    Чтобы произвести отключение утилиты, выполните следующую команду:

    $ sudo stop network-manager

    А для запуска можете использовать эту:

    $ sudo start network-manager

  • Удостовериться, что параметры сетевого фильтра настроены верно, и он никак не помешает при настройке сети.
  • Держать при себе необходимую документацию от провайдера, в которой указаны данные, необходимые для настройки интернет-соединения.
  • Проверить драйвера сетевой карты и правильность подключение кабеля провайдера.

Помимо прочего, нужно обязательно знать наименование сетевого адаптера. Чтобы это выяснить, введите в «Терминале» эту строку:

$ sudo lshw -C network

По итогу вы увидите примерно следующее:

выполнение команды lshw -C network в ubuntu

Lumpics.ru

Читайте также: Часто используемые команды в «Терминале» Linux

Имя вашего сетевого адаптера будет располагаться напротив слова «логическое имя». В данном случае «enp3s0». Именно это название и будет фигурировать в статье, у вас оно может быть другим.

Примечание: если в вашем компьютере установлено несколько сетевых адаптеров, то они будут пронумерованы соответственно (enp3s0, enp3s1, enp3s2 и так далее). Определитесь, с каким вы будете работать, и используйте его в последующих настройках.

Способ 1: Терминал

«Терминал» — это универсальное средство по настройке всего в Ubuntu. С его помощью можно будет установить интернет-соединение всех типов, о чем и пойдет сейчас речь.

Настройка проводной сети

Настройка проводной сети в Ubuntu выполняется путем внесения новых параметров в конфигурационный файл «interfaces». Поэтому для начала нужно открыть этот самый файл:

$ sudo gedit /etc/network/interfaces

Примечание: в команде для открытия файла настройки используется текстовый редактор Gedit, вы же можете прописать в соответствующей части любой другой редактор, например, vi.

Читайте также: Популярные текстовые редакторы для Linux

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

Для начала разберемся с динамическим IP — его настройка выполняется проще. После введения предыдущей команды, в открывшемся файле укажите следующие переменные:

iface [имя интерфейса] inet dhcp
auto [имя интерфейса]

Где:

  • iface [имя интерфейса] inet dhcp — ссылается на выбранный интерфейс, который имеет динамический IP-адрес (dhcp);
  • auto [имя интерфейса] — при входе в систему делает автоматическое подключение к указанному интерфейсу со всеми заданными параметрами.

После ввода у вас должно получиться примерно так:

настройка проводного подключения с динамическим ip

Не забудьте сохранить все внесенные изменения, нажав по соответствующей кнопке в верхней правой части редактора.

Статический IP настраивать несколько сложнее. Главное — знать все переменные. В конфигурационном файле вам нужно ввести следующие строки:

iface [имя интерфейса] inet static
address [адрес]
netmask [адрес]
gateway [адрес]
dns-nameservers [адрес]
auto [имя интерфейса]

Где:

  • iface [имя интерфейса] inet static — определяет IP-адрес адаптера как статический (static);
  • address [адрес] — определяет адрес вашего порта ethernet в компьютере;

    Примечание: IP-адрес можно узнать, выполнив команду ifconfig. В выдаче вам нужно посмотреть на значение после «inet addr» — это и есть адрес порта.

    команда ifconfig в терминале на ubuntu

  • netmask [адрес] — определяет маску подсети;
  • gateway [адрес] — указывает адрес шлюза;
  • dns-nameservers [адрес] — определяет сервера DNS;
  • auto [имя интерфейса] — осуществляет подключение к указанной сетевой карте при запуске ОС.

После ввода всех параметров вы увидите примерно следующее:

настройка проводного подключения со статическим ip в ubuntu

Не забудьте перед закрытием текстового редактора сохранить все внесенные параметры.

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

Все параметры задаются с помощью одной команды:

$ sudo ip addr add 10.2.119.116/24 dev enp3s0

Где:

  • 10.2.119.116 — IP-адрес сетевой карты (у вас он может быть другим);
  • /24 — количество бит в префиксной части адреса;
  • enp3s0 — интерфейс сети, к которой подключен кабель провайдера.

Введя все необходимые данные и выполнив команду в «Терминале», вы сможете проверить их корректность. Если интернет на ПК появился, то все переменные верны, и их можно вносить в конфигурационный файл.

Настройка DNS

Настройка DNS-подключения в разных версиях Ubuntu выполняется по-разному. В версиях ОС начиная с 12.04 — один способ, в более ранних — другой. Рассматривать мы будем только статический интерфейс подключения, так как динамический подразумевает автоматическое определение DNS-серверов.

Настройка в версиях ОС выше 12.04 происходит в уже известном файле «interfaces». В нем необходимо ввести строку «dns-nameservers» и через пробел перечислить значения.

Итак, сначала откройте через «Терминал» конфигурационный файл «interfaces»:

$ sudo gedit /etc/network/interfaces

Далее в открывшемся текстовом редакторе впишите следующую строку:

dns-nameservers [адрес]

По итогу у вас должно получиться примерно так, только значения могут быть другими:

настройка dns серверов в ubuntu

Если вы хотите настроить DNS в Ubuntu более ранней версии, то конфигурационный файл будет другим. Откроем его через «Терминал»:

$ sudo gedit /etc/resolv.conf

После в нем можно задать необходимые адреса DNS. Стоит взять в учет то, что в отличии от ввода параметров в «interfaces», в «resolv.conf» адреса пишутся каждый раз с абзаца, перед значением используется префикс «nameserver» (без кавычек).

настройка dns серверов в ранних версиях ubuntu

Настройка соединения PPPoE

Настройка PPPoE через «Терминал» не подразумевает внесение множества параметров в различные конфигурационные файлы на компьютере. Наоборот, использована будет всего одна команда.

Итак, чтобы совершить подключение типа «точка-точка» (PPPoE), вам необходимо выполнить следующие действия:

  1. В «Терминале» выполнить:

    $ sudo pppoeconf

  2. Подождать завершения процесса сканирования компьютера на наличие сетевых устройств и модемов, подключенных к нему.
    поиск концентратора доступа pppoe через сетвой адаптер

    Примечание: если утилита по итогу не найдет концентратор, то проверьте, правильно ли подключен кабель провайдера, а также питание модема, если таковой имеется.

  3. В появившемся окне выберите сетевую карту, к которой подключен кабель провайдера (если сетевая карта у вас одна, то это окно будет пропущено).
  4. В окне выбора «популярных параметров» нажмите «Yes».
    настройка pppoe подключения через pppoeconf в ubuntu шаг первый
  5. Введите логин, который был выдан вашим провайдером, и подтвердите действие. Затем укажите пароль.
    настройка pppoe подключения через pppoeconf в ubuntu шаг второй
  6. В окне выбора способа определения серверов DNS нажмите «Yes», если IP-адреса динамические, и «No», если статические. Во втором случае введите DNS-сервера вручную.
    настройка pppoe подключения через pppoeconf в ubuntu шаг четвертый
  7. Затем утилита запросит разрешение на ограничение размера MSS до 1452-х байт — дайте разрешение, нажав «Yes».
    настройка pppoe подключения через pppoeconf в ubuntu шаг пятый
  8. На следующем этапе нужно дать разрешение на автоматическое подключение к сети PPPoE при запуске компьютера, нажав «Yes».
  9. В последнем окне утилита запросит разрешение установить соединение прямо сейчас — нажмите «Yes».
    настройка pppoe подключения через pppoeconf в ubuntu шаг шестой

После всех проделанных действий ваш компьютер установит соединение с интернетом, если вы все сделали верно.

Обратите внимание, что по умолчанию утилита pppoeconf называет созданное подключение dsl-provider. Если вам нужно будет разорвать соединение, то выполните в «Терминале» команду:

$ sudo poff dsl-provider

Чтобы соединение установилось снова, введите:

$ sudo pon dsl-provider

Примечание: если вы подключаетесь к сети, используя утилиту pppoeconf, то управление сетью через Network Manager будет невозможным, ввиду внесения параметров в конфигурационный файл «interfaces». Чтобы сбросить все настройки и передать управление Network Manager, вам необходимо открыть файл «interfaces» и заменить все содержимое на текст, указанный ниже. После ввода сохраните изменения и перезапустите сеть командой «$ sudo /etc/init.d/networking restart» (без кавычек). Также перезапустите утилиту Network Manager, выполнив «$ sudo /etc/init.d/NetworkManager restart» (без кавычек).

сброс всех сетевых настроек через файл interfaces в ubuntu

Настройка соединения DIAL-UP

Чтобы совершить настройку DIAL-UP, можно воспользоваться двумя консольными утилитами: pppconfig и wvdial.

Настроить подключение с помощью pppconfig достаточно просто. В целом данный способ очень похож на предыдущий (pppoeconf): вам точно так же будут заданы вопросы, отвечая на которые по итогу вы установите соединение с интернетом. Сперва запустите саму утилиту:

$ sudo pppconfig

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

Что касается настройки с помощью wvdial, то она происходит немного сложнее. Для начала необходимо установить сам пакет через «Терминал». Для этого выполните следующую команду:

$ sudo apt install wvdial

В его состав входит утилита, предназначенная для автоматической конфигурации всех параметров. Называется она «wvdialconf». Запустите ее:

$ sudo wvdialconf

После ее выполнения в «Терминале» будет отображено множество параметров и характеристик — в них разбираться не нужно. Следует лишь знать, что утилита создала специальный файл «wvdial.conf», в который автоматически внесла необходимые параметры, считав их с модема. Далее надо отредактировать созданный файл «wvdial.conf», откроем его через «Терминал»:

$ sudo gedit /etc/wvdial.conf

конфигурационный файл wvdial.conf в ubuntu

Как можно заметить, большинство настроек уже прописано, но три последних пункта все равно нужно дополнить. Вам необходимо будет прописать в них номер телефона, логин и пароль, соответственно. Однако не спешите закрывать файл, для более удобной работы рекомендуется добавить еще несколько параметров:

  • Idle Seconds = 0 — соединение не будет разорвано даже при долгом бездействии за компьютером;
  • Dial Attempts = 0 — совершает бесконечные попытки установить соединение;
  • Dial Command = ATDP — набор номера будет осуществляться импульсным способом.

По итогу файл конфигураций будет иметь такой вид:

конфигурационный файл wvdial.conf с внесенными дополнительными параметрами

Обратите внимание, что настройки разбиты на два блока, озаглавленные названиями в скобках. Это необходимо для создания двух версий использования параметров. Так, параметры, находящиеся под «[Dialer Defaults]», будут выполняться всегда, а под «[Dialer puls]» — при указании соответствующей опции в команде.

После проведения всех настроек, чтобы установить соединение DIAL-UP, вам необходимо выполнить эту команду:

$ sudo wvdial

Если же вы хотите установить импульсное соединение, то пропишите следующее:

$ sudo wvdial pulse

Для того чтобы разорвать установленное соединение, в «Терминале» нужно нажать комбинацию клавиш Ctrl+C.

Способ 2: Network Manager

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

иконка network manager в ubuntu

Настройка проводной сети

Начнем мы точно так же с настройки проводной сети. Для начала необходимо открыть саму утилиту. Для этого кликните по ее иконке и нажмите «Изменить соединения» в контекстном меню. Далее в появившемся окне нужно сделать следующее:

  1. Кликнуть по кнопке «Добавить».
    Сетевые соединения в ubuntu кнопка добавить
  2. В окне, которое появится, из выпадающего списка, выбрать пункт «Ethernet» и нажать «Создать…».
    выбор типа соединения при настройке проводного соединения в ubuntu
  3. В новом окне указать имя подключения в соответствующем поле для ввода.
    ввод названия проводного соединения в network manager в ubuntu
  4. Во вкладке «Ethernet» из выпадающего списка «Устройство» определить используемую сетевую карту.
    выбор сетевой карты в network manager в ubuntu
  5. Перейти на вкладку «Общий» и поставить галочки рядом с пунктами «Автоматически подключаться к этой сети, когда она доступна» и «Все пользователи могут подключаться к этой сети».
    настройка доступа к соединению в network manager в ubuntu
  6. Во вкладке «Параметры IPv4» определить способ настройки как «Автоматически (DHCP)» — для динамического интерфейса. Если он у вас статический, то необходимо выбрать пункт «Вручную» и указать все необходимые параметры, что предоставил для вас провайдер.
    ручная настройка проводного соединения в network manager в ubuntu
  7. Нажать кнопку «Сохранить».

После всех проделанных действий проводное интернет-соединение должно быть установлено. Если этого не произошло, проверьте все введенные параметры, возможно, вы где-то допустили ошибку. Также не забудьте проверить, стоит ли галочка напротив «Управление сетью» в выпадающем меню утилиты.

пункт управление сетью в меню network manager в ubuntu

Порою помогает перезагрузка компьютера.

Настройка DNS

Для установки соединения может понадобиться ручная настройка DNS-серверов. Для этого выполните следующее:

  1. Откройте окно сетевых соединений в Network Manager, выбрав из меню утилиты «Изменить соединения».
  2. В следующем окне выделите созданное ранее соединение и нажмите ЛКМ по «Изменить».
    кнопка изменить в сетевых соединениях network manager в ubuntu
  3. Далее перейдите во вкладку «Параметры IPv4» и в списке «Способ настройки» нажмите по «Автоматическое (DHCP, только адрес)». Потом в строке «Серверы DNS» введите необходимые данные, после чего нажмите кнопку «Сохранить».
    ввод dns серверов в network manager в ubuntu

После этого настройку DNS можно считать завершенной. Если изменений нет, то попробуйте перезагрузить компьютер, чтобы они вступили в силу.

Настройка PPPoE

Настройка соединения по протоколу PPPoE в Network Manager выполняется так же просто, как и в «Терминале». По сути, вам надо будет указать только логин и пароль, полученные от провайдера. Но рассмотрим все более детальней.

  1. Откройте окно всех подключений, кликнув по иконке утилиты Network Manager и выбрав пункт «Изменить соединения».
  2. Кликните «Добавить», а затем из выпадающего списка выберите «DSL». После нажмите «Создать…».
    создание dsl соединения в network manager в ubuntu
  3. В появившемся окне введите имя подключения, которое будет отображаться в меню утилиты.
  4. Во вкладке «DSL» напишите логин и пароль в соответствующих полях. При желании можно также задать имя службы, но это необязательно.
    ввод логина и пароля при подключении pppoe в network manager в ubuntu
  5. Перейдите во вкладку «Общий» и поставьте галочки рядом с первыми двумя пунктами.
    вкладка общий в network manager в ubuntu
  6. Во вкладке «Ethernet» в выпадающем списке «Устройство» определите свою сетевую карту.
    определение сетевой карты в network manager в ubuntu
  7. Перейдите в «Параметры IPv4» и определите способ настройки как «Автоматически (PPPoE)» и сохраните свой выбор, нажав соответствующую кнопку. Если вам нужно будет вводить DNS-сервера вручную, то выберите «Автоматически (PPPoE, только адрес)» и задайте нужные параметры, после чего нажмите «Сохранить». А в том случае, если все настройки нужно вводить вручную, то выберите одноименный пункт и введите их в соответствующие поля.
    выбор параметров ipv4 в network manager в ubuntu

Теперь в меню Network Manager появилось новое DSL-соединение, выбрав которое вы получите доступ в интернет. Напомним, что иногда нужно перезагрузить компьютер, чтобы изменения вступили в силу.

Заключение

По итогу можно сказать, что в операционной системе Ubuntu есть множество инструментов, для осуществления настройки необходимого интернет-соединения. Утилита Network Manager обладает графическим интерфейсом, что в разы упрощает работу, особенно для новичков. Однако «Терминал» позволяет осуществить более гибкую настройку, вводя те параметры, которых в утилите нет.

Настройка сети в дистрибутиве Ubuntu может происходить при помощи таких сервисов, как Network Manager, Wicd и других, но графический интерфейс не всегда может быть доступен. В таком случае для полноценной работы нужно настроить сеть Ubuntu в консоли.

В статье мы даём базовую инструкцию по настройке сети и показываем, как через консоль можно:

  • посмотреть список сетевых интерфейсов,
  • настроить динамический и статический IP-адрес.

Для версий Ubuntu выше 18.04 сеть можно настроить через утилиту netplan.

Настройка сети в консоли

Для настройки сети в операционной системе Ubuntu:

  1. 1.

    Посмотрите список установленных сетевых интерфейсов (Ubuntu network interfaces). Для этого перейдите в консоль и введите команду:



    =788x379
    Ubuntu сетевые интерфейсы

    или



    =786x170
    Ubuntu сеть

    Вы увидите все сетевые подключения и их параметры.

    В нашем примере два сетевых интерфейса:

    • lo ― локальная петля. Служит для подключения по сети к этому же компьютеру и не требует дополнительной настройки;
    • enp0s3 ― сетевой адаптер Ethernet.

    Также эти команды позволят увидеть состояние сетевого интерфейса.
    Существует два состояния:

    • up ― активен,
    • down ― неактивен.

    Для дальнейшей настройки надо, чтобы сеть была в состоянии up:



    =788x214


    Как включить или выключить сетевой интерфейс

    Чтобы включить сетевой интерфейс, введите команду:

    Чтобы выключить:

    Где enp0s3 — имя сетевого интерфейса.

  2. 2.

    Чтобы настроить сеть, нужно изменить конфигурационный файл /etc/network/interfaces.
    Откройте файл командой:

    sudo nano /etc/network/interfaces

    Теперь вы можете настроить либо динамический IP-адрес, либо статический.

Как настроить динамический IP-адрес

  1. 1.

    Для настройки динамического IP-адреса по DHCP в конфигурационном файле введите:

    auto enp0s3
    iface enp0s3 inet dhcp

    Где enp0s3 — имя сетевого интерфейса.



    =785x562

  2. 2.

    Перезапустите службу сети:

    service networking restart

Готово, вы настроили динамический IP-адрес.

Как настроить статический IP-адрес

  1. 1.

    В файле /etc/network/interfaces введите:

    auto enp0s3
    iface enp0s3 inet static
    address 192.168.0.0
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8 192.168.0.10

    Где:

    • enp0s3 — имя сетевого интерфейса,
    • 192.168.0.0 — IP-адрес,
    • 255.255.255.0 — маска подсети,
    • 192.168.0.1 — шлюз для доступа к интернету,
    • 8.8.8.8 192.168.0.10 — IP-адреса DNS-серверов. Можно указать несколько адресов через пробел.



    =734x474
    Ubuntu сетевые настройки

  2. 2.

    Перезапустите службу сети:

    service networking restart

Готово, вы настроили статический IP-адрес.

Настройка DNS

Если вам нужно настроить DNS только для этого сеанса, добавьте строчку
в файле /etc/resolv.conf:

  1. 1.

    Откройте файл командой:

    sudo nano /etc/resolv.conf
  2. 2.

    Введите:

    Где 8.8.8.8 — IP-адрес DNS-сервера.




Готово, вы настроили DNS для одного сеанса. Настройки DNS сбросятся после перезагрузки сети.

Первоначальная настройка сети в консоли Ubuntu происходит всего в несколько этапов: проверка активности сетевого подключения и настройка динамического или статического IP-адреса. В статье мы показали, как просто можно выполнить каждый из этих этапов.

Как настроить сетевой интерфейс в Ubuntu 18.04:

  • Осмотрите каталог /etc/netplan.
  • Активируйте текущие настройки
  • Если система не использует netplan, получите список доступных интерфейсов
  • Настройте второй и последующий интерфейс аналогично, применив настройки
  • Если сервер не изменяет IP-адрес, перезапустите его

Конфигурирование сетевого интерфейса в Ubuntu 18.04 для многих стало сюрпризом. Хотя всем привычный конфигурационный файл /etc/network/interfaces существует, в нем сказано:

Настройка сетевого интерфейса в Ubuntu 18.04

Перевод.

Конфигурирование через ifupdown было заменено на netplan. настройка через /etc/netplan. Хотите вернуться к ifupdown установите его командой:

sudo apt install ifupdown

Устанавливать что-то иное не будем. Настроим то что есть. Для начала смотрим содержимое каталога /etc/netplan.

Настройка сетевого интерфейса в Ubuntu 18.04

Посмотрим что в этом файле.

Настройка сетевого интерфейса в Ubuntu 18.04

Конфигурационный файл пишется на языке YAML. Приведенные, в примере выше, настройки были сделаны еще на этапе установки операционной системы. Разберемся подробнее.

  • network — начало блока конфигурации сети;
  • ethernets — данный параметр сообщает, что далее пойдет настройка одноименного протокола;
  • enp0s3 — название конфигурируемого сетевого интерфейса. Вероятно, что в вашем случае название будет иным. Список всех интерфейсов можно посмотреть командой ifconfig -a;
  • addresses — блок IP-адресов назначаемых интерфейсу с префиксом сети. Один ip-адрес указывается как в примере, несколько адресов указываются в квадратных скобках “[ и ]”, разделяются запятыми;
  • gateway4 — сетевой шлюз IPv4;
  • nameservers — блок настройки серверов имен.
  • addresses — именно в блоке nameservers, указывают к каким серверам DNS обращаться. Указываются без сетевого префикса. Несколько адресов указываются в квадратных скобках “[ и ]”, разделяются запятыми.
  • version — версия языка YAML.

Активируем текущие настройки командой:

netplan apply

Мы рассмотрели основные опции. Больше примеров настройки — на официальном сайте.

Как быть, если система не использует netplan

Тут по старинке. Сначала получаем список доступных интерфейсов:

ifconfig -a

Список доступных интерфейсов | Serversapce

В данном случае имеется 2 сетевых интерфейса без IP-адресов (пока). Настраиваются средствами DHCP. Перейдем к настройкам.

sudo nano /etc/network/interfaces

Настройка сетевого интерфейса в Ubuntu 18.04

Сервер, получающий IP от DHCP-сервера не очень хорошее решение. Приводим файл к виду:

Настройка сетевого интерфейса в Ubuntu 18.04

Что это означает.

  • auto enp0s3 — автоматический запуск конкретного интерфейса;
  • iface enp0s3 inet static — сообщает о статическом конфигурировании;
  • address 10.10.2.6 — собственно, сам IPv4-адрес для данного интерфейса;
  • netmask 255.255.255.0 — сетевая маска
  • gateway 10.10.2.1 — IPv4-шлюз
  • dns-nameservers 8.8.8.8 — указываем DNS-серверы

Настройка второго и последующих интерфейсов выполняется аналогично, либо конфигурируется с помощью DHCP-сервера.

Применяем настройки:

sudo /etc/init.d/networking restart

Настройка сетевого интерфейса в Ubuntu 18.04

Если все выполнено правильно, то дожидаемся процесса перезапуска службы.

Важно. Бывает ситуация, что файл настроек верный, но сервер не изменяет IP-адрес. В этом случае помогает перезапуск сервера командой:

sudo reboot

Аverage rating : 4.8

Оценок: 4

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

700
300

Настройка сети – это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Debian 11.


Получение информации о сетевых интерфейсах

Так как в предыдущем уроке мы научились пользоваться и устанавливать sudo на debian, то для административных действий теперь будем использовать эту утилиту. А настройка сети – это административное действие на любой системе, в том числе и на Debian.

Определить какие интерфейсы есть у вашего сервера поможет утилита lshw. Но её предварительно нужно установить с помощью следующей команды:

$ sudo apt install lshw

Эта утилита предназначена для определения железа вашего сервера. Например, с её помощью можно посмотреть какой на сервере процессор или оперативная память. Используя параметр -С network получим информацию только по сетевым устройствам:

$ sudo lshw -C network
  *-network
       description: Ethernet controller
       product: Virtio network device
       vendor: Red Hat, Inc.
       physical id: 12
       bus info: pci@0000:00:12.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: msix bus_master cap_list rom
       configuration: driver=virtio-pci latency=0
       resources: irq:11 ioport:e0a0(size=32) memory:fea52000-fea52fff memory:fe408000-fe40bfff memory:fea00000-fea3ffff
     *-virtio2
          description: Ethernet interface
          physical id: 0
          bus info: virtio@2
          logical name: ens18
          serial: 2a:75:9e:4d:1d:fa
          capabilities: ethernet physical
          configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.31 link=yes multicast=yes

Из этого вывода вы можете получить следующую информацию:

  • logical name: ens18 – имя сетевого интерфейса;
  • serial: 2a:75:9e:4d:1d:fa – mac-адрес;
  • ip=172.28.90.31 – ip-адрес;
  • и другое.

Утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты. А для получения информации о mac и ip адресах нужно использовать другую утилиту – ip. Эта утилита командной строки не так проста, команда ip имеет множество подкоманд, которые мы изучим в этой статье. И первая подкоманда это address – она означает, что работать мы будем с ip-адресами. У подкоманды address, тоже есть свои подкоманды, например подкоманда show покажет информацию о назначенных ip-адресах. В самом конце команды можно указать имя сетевого интерфейса, чтобы получить информацию только по нему, а не по всем сетевым интерфейсам в системе.

Все эти подкоманды можно сокращать, например address = addr, show = sh. Но пока не будем этого делать, так как вначале нужно их запомнить.

Для того чтобы посмотреть, какие настройки использует сетевой интерфейс ens18 выполним команду ip address show ens18:

$ ip address show ens18
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2a:75:9e:4d:1d:fa brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 172.28.90.31/20 brd 172.28.95.255 scope global dynamic ens18
       valid_lft 258476sec preferred_lft 258476sec
    inet6 fe80::2875:9eff:fe4d:1dfa/64 scope link
       valid_lft forever preferred_lft forever

Здесь мы также видим mac и ip адрес с маской подсети.

Этот ip адрес был получен по dhcp.

Настройка IP адреса

Чтобы изменить ip адрес на какой-нибудь другой, нужно отредактировать конфигурационный файл “/etc/network/interfaces”. Но вначале глянем на него с помощью команды cat:

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet dhcp

Посмотрим внимательнее на блок настроек для интерфейса ens18:

  • # The primary network interface – это комментарий, так как в начале строки стоит символ #. Он ни на что не влияет, просто подсказывает нам, что следующие за ним настройки редактируют основной сетевой интерфейс (ens18).
  • allow-hotplug ens18 – разрешает горячее подключение для интерфейса ens18. То есть этот сетевой интерфейс будет включен при старте системы.
  • iface ens18 inet dhcp – интерфейс ens18 будет получать настройки с помощью dhcp.

Чтобы назначить другой статический ip адрес нужно отредактировать этот блок в файле, например с помощью текстового редактора nano.

$ sudo nano /etc/network/interfaces

***** пропущу другие блоки настроек *****

# The primary network interface
allow-hotplug ens18
iface ens18 inet static
        address 172.28.90.77/20
        gateway 172.28.80.1

То есть меняем dhcp на static и ниже указываем адрес интерфейса (address) и адрес шлюза по умолчанию (gateway).

Дальше нужно перезагрузить сетевую подсистему чтобы применились изменения. Для этого можно воспользоваться следующими командами:

  • $ sudo systemctl restart networking.service – перезагружает службу отвечающую за сеть на сервере, но если сетевых интерфейсов несколько, то все они на время окажутся недоступными. Также эта команда у меня не всегда срабатывала, то есть после перезапуска службы, интерфейс оказывался без назначенного ip адреса. Поэтому я не рекомендую этот способ.
  • $ sudo ifdown ens18; sudo ifup ens18 – это две команды, которые выполнятся по очереди. Первая команда (ifdown ens18) отключит сетевой интерфейс, а вторая (ifup ens18) включит. Эта команда меня ещё не подводила.
  • $ sudo reboot – эта команда перезагрузит сервер полностью. После чего сервер загрузится уже с новыми сетевыми настройками.

В любом случае вы отвалитесь от сервера, так как были подключены к нему по ssh по другому ip адресу. Вам придется заново подключиться к серверу, но использовать уже новый ip адрес.

Настройка DNS сервера

Чтобы указать серверу, какой ему использовать dns сервер, нужно редактировать конфигурационный файл /etc/resolv.conf. Давайте взглянем на него:

$ cat /etc/resolv.conf
nameserver 172.28.80.1

Этот адрес был получены от dhcp сервера. Но его можно изменить прям в этом файле:

$ sudo nano /etc/resolv.conf
nameserver 77.88.8.8

После редактирования этого файла ничего перезагружать не нужно, настройки подхватятся на лету. Проверить это можно с помощью команды nslookup, которая определит ip адрес по имени используя указанный dns сервер.

$ nslookup ya.ru
Server:         77.88.8.8
Address:        77.88.8.8#53

Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Как видим, был использован dns от Яндекса – 77.88.8.8. Именно его мы внесли в конфиг /etc/resolv.conf.

Утилита IP

Теперь более подробно разберем утилиту ip.

Работая с ней вы используете различные подкоманды. Все их рассматривать не будем. Разберём лишь некоторые из них:

  • address – позволяет назначать и удалять ip адреса, просматривать их и тому подобное.
  • link – можно включить или выключить сетевой интерфейс, посмотреть список интерфейсов и их mac адреса.
  • neigh – можно добавить или удалить mac адрес из arp таблицы, или полностью её очистить.
  • route – позволяет создавать новые маршруты и удалять их, а также просматривать уже созданные маршруты.

Шпаргалка по команде ip

У этих подкоманд есть свои подкоманды. Например, чтобы посмотреть информацию используется общая подкоманда show:

# ip address show - посмотреть ip адреса
# ip link show    - посмотреть физические устройства
# ip neigh show   - посмотреть arp таблицу
# ip route show   - посмотреть таблицу маршрутизации

Во всех случаях можно указывать конкретный интерфейс:

# ip address show ens18

Помимо просмотра информации можем настраивать сеть, например можно добавить или удалить ip адрес на интерфейсе. Но в отличии от правки конфигурационного файла, изменённый ip адрес этим способом будет действовать только до перезагрузки сервера:

# ip address add 192.168.0.44/24 dev ens18 - добавить ip для ens18
# ip address del 192.168.0.44/24 dev ens18 - удалить ip для ens18

Также можем добавлять или удалять маршруты. Такие маршруты тоже будут действовать только до перезагрузки сервера:

# ip route add 192.168.5.0/24 via 192.168.0.10 - добавить маршрут
# ip route delete 192.168.5.0/24               - удалить маршрут

Можем включать и выключать сетевые интерфейсы:

# ip link set ens18 up   - включить
# ip link set ens18 down - выключить 

Кстати, выключение и включение сетевых интерфейсов с помощью ip link set не перечитывают настройки из /etc/network/interfaces, поэтому если вы что-то там изменили, то выполняйте ifdown и ifup.

Можем очистить arp таблицу:

# ip neigh flush 

Если хотите, можете почитать мануал по команде ip. На русском языке он доступен тут.

Добавление статических маршрутов

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

up ip route add 192.168.5.0/24 via 192.168.0.10

То есть в конце файла, с новой строки пишите up, а дальше команду с помощью которой вы создаете маршрут.

Итог

Вот мы и прошли тему “Настройка сети Debian“.

Мы познакомились с командами lshw, и ip. Научились настраивать сеть с помощью конфигурационных файлов /etc/network/interfaces и /etc/resolv.conf, а также с помощью команды ip. Научились включать и выключать сетевые интерфейсы с помощью команд ifup и ifdown.

Настраивая сеть мы теперь можем указать ip адрес, адрес шлюза, адрес dns сервера, а также можем создать отдельные маршруты. Это не все сетевые настройки, которые можно сделать, их намного больше, можно даже создать свой роутер на Debian, но это выходит за рамки этого курса.


Сводка

Настройка сети на Debian

Имя статьи

Настройка сети на Debian

Описание

Настройка сети — это один из важнейших навыков системного администрирования, и в этой статье мы научимся настраивать сеть на Debian 11

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить файл etc hosts
  • Как изменить файл dot
  • Как изменить файл data win
  • Как изменить файл dat на exe
  • Как изменить файл dat на cfg

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии