Ubuntu поставляется с несколькими графическими инструментами для настройки сетевых устройств. Этот документ рассчитан на продвинутых пользователей и фокусируется на управлении сетью с помощью командной строки.
Интерфейсы Ethernet Интерфейсы Ethernet обозначаются в системе как ethX, где X является числом. Первый интерфейс Ethernet обычно обозначается eth0, второй eth1, и так далее в порядке возрастания чисел.
Определение Ethernet интерфейсов Для быстрого определения всех доступных сетевых интерфейсов вы можете использовать команду ifconfig, как показано ниже. ifconfig -a | grep eth eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a Другое приложение, которое может помочь идентифицировать все доступные вашей системе сетевые интерфейсы — это команда lshw . В приведённом ниже примере lshw показывает один Ethernet интерфейс с логическим именем eth0 вместе с информацией по шине, сведениями о драйвере и всеми поддерживаемыми возможностями. sudo lshw -class network *-network description: Ethernet interface product: BCM4401-B0 100Base-TX vendor: Broadcom Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: eth0 version: 02 serial: 00:15:c5:4a:16:5a size: 10MB/s capacity: 100MB/s width: 32 bits clock: 33MHz capabilities: (snipped for brevity) configuration: (snipped for brevity) resources: irq:17 memory:ef9fe000-ef9fffff
Логические имена интерфейсов Ethernet Логические имена интерфейсов настраиваются в файле /etc/udev/rules.d/70- persistent-net.rules. Если вы захотите определить, какой интерфейс получит определённое логическое имя, найдите строку, соответствующую физическому MAC-адресу интерфейса, и измените значение NAME=ethX на желаемое логическое имя. Перегрузите систему для применения изменений.
Настройки интерфейса Ethernet ethtool — это программа, которая показывает и изменяет настройки сетевых карт, такие как автосогласование (auto-negotiation), скорость порта, режим дуплекса и функция Wake-on-LAN (пробуждение системы через сеть). Эта программа не устанавливается по умолчанию, но доступна к установке из репозиториев. sudo apt-get install ethtool
Ниже приведён пример того, как посмотреть возможности карты и настроить параметры интерфейса Ethernet. sudo ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) Link detected: yes
Изменения, сделанные с использованием команды ethtool, временные и будут утеряны после перезагрузки. Если вы хотите сохранить настройки, просто добавьте требуемую команду ethtool в строку pre-up в файле /etc/network/interfaces. Ниже приведен пример того, как интерфейс, определённый как eth0, может быть постоянно настроен на скорость порта 1000 Мб/с в режиме полного дуплекса. auto eth0 iface eth0 inet static pre-up /sbin/ethtool -s eth0 speed 1000 duplex full
Несмотря на то, что пример выше показывает интерфейс, настроенный статично, это работает и с другими методами, такими как DHCP. Этот пример призван просто продемонстрировать правильное размещение строки pre-up по отношению к остальной части конфигурационного файла интерфейса.
Адресация IP Следующий раздел описывает процесс настройки IP-адреса вашего компьютера и шлюза по умолчанию, необходимых для подключения к локальной сети и интернету.
Временное назначение IP-адреса Для временной настройки сети вы можете использовать стандартные команды, такие как ip, ifconfig и route, которые присутствуют также и в других системах на базе GNU/Linux. Эти команды позволят изменить настройки, которые будут применены мгновенно, но они не будут постоянными и будут утеряны после перезагрузки. Для временной настройки IP-адреса вы можете использовать команду ifconfig следующим образом. Только замените IP-адрес и маску подсети на соответствующие требованиям вашей сети. sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0 Для проверки настройки IP-адреса eth0 вы можете использовать команду ifconfig таким образом: ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0 TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB) Interrupt:16
Для настройки шлюза по умолчанию вы можете использовать команду route следующим образом. Измените адрес шлюза по умолчанию на требуемый для вашей сети. sudo route add default gw 10.0.0.1 eth0
Для проверки настройки шлюза по умолчанию используйте команду route таким образом: route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
Если вам требуется DNS для временной настройки сети, вы можете добавить IP-адреса DNS-серверов в файл /etc/resolv.conf. Пример ниже показывает как указать два DNS-сервера в /etc/resolv.conf, которые могут быть заменены на сервера использующиеся в вашей сети. Более пространное описание настройки клиента DNS приведено в следующей секции. nameserver 8.8.8.8 nameserver 8.8.4.4 Если вам больше не требуется эта конфигурация и вы хотите отменить все IP настройки интерфейса, вы можете использовать команду ip с опцией flush как показано ниже: ip addr flush eth0 Сброс IP настроек с использованием команды ip не очистит содержимое /etc/resolv.conf. Вам придётся удалять или менять эти значения вручную.
Динамическое назначение IP-адреса (клиент DHCP) Чтобы настроить ваш сервера на использование DHCP для динамического присвоения адреса, добавьте dhcp метод в адресную секцию inet для соответствующего интерфейса в файле /etc/network/interfaces. Пример ниже предполагает, что вы настраиваете ваш первый интерфейс Ethernet, обозначенный как eth0. auto eth0 iface eth0 inet dhcp
Добавив настройку интерфейса как показано выше, вы можете вручную включить интерфейс командой ifup, которая активизирует процесс DHCP через dhclient. sudo ifup eth0
Для отключения интерфейса вручную вы можете воспользоваться командой ifdown, которая запустит процесс освобождения DHCP и остановки интерфейса. sudo ifdown eth0
Статическое назначение IP-адреса Для настройки вашей системы под использование статического присвоения IP-адреса добавьте метод static в секцию inet для соответствующего интерфейса в файле /etc/network/interfaces. Пример ниже предполагает, что вы настраиваете ваш первый интерфейс Ethernet, обозначенный как eth0. Измените значения адреса, маски сети, и шлюза для соответствия требованиям вашей сети. auto eth0 iface eth0 inet static address 10.0.0.100 netmask 255.255.255.0 gateway 10.0.0.1
Добавив настройку интерфейса как показано выше, вы можете вручную включить интерфейс командой ifup. sudo ifup eth0
Для отключения интерфейса вручную вы можете воспользоваться командой ifdown. sudo ifdown eth0
Интерфейс Loopback (обратной петли) Интерфейс loopback определяется системой как lo и по умолчанию задает адрес 127.0.0.1. Он может быть выведен командой ifconfig. ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2718 errors:0 dropped:0 overruns:0 frame:0 TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB) По умолчанию в /etc/network/interfaces должны присутствовать две строки, отвечающих за автоматическую настройку интерфейса loopback. Рекомендуется оставить эти настройки по умолчанию, пока не возникнет специфической причины для их изменения. Пример этих двух строк приведён ниже. auto lo iface lo inet loopback
Разрешение имён Под разрешением имени по отношению к IP-сетям подразумевается процесс определения IP-адреса по имени хоста, упрощающий идентификацию ресурса в сети. В следующем разделе показано, как правильно настроить вашу систему для разрешения имён с помощью DNS и статических записей имен хостов.
Настройка клиента DNS Традиционно файл /etc/resolv.conf был статическим файлом настроек, который очень редко требовалось изменять или он менялся автоматически по запросам DHCP клиента. В настоящее время компьютер может переключаться с одной сети на другу слишком часто и структура resolvconf теперь используется для отслеживания этих изменений и автоматического обновления настроек разрешений. Это выглядит как промежуточный слой между программами, которые предоставляют информацию от серверов имён, и приложениями, которым она требуется. Resolvconf делает доступной информацию через подключение сценариев, связанных с настройкой сетевых интерфейсов. Наиболее значимое отличие для пользователя в том, что любые ручные изменения /etc/resolv.conf будут потеряны при перезаписи по каждому срабатыванию триггеров resolveconf. Вместо этого resolveconf использует ловушки клиента DHCP и /etc/network/ interfaces для генерации списка серверов имен и доменов, чтобы положить в /etc/resolv.conf, который теперь является символьной ссылкой: /etc/resolv.conf -> ../run/resolvconf/resolv.conf
Для настройки разрешений добавьте IP-адреса серверов имён, соответствующие вашей сети, в файл /etc/network/interfaces. Вы также можете добавить необязательный список подбора DNS суффиксов для получения доменных имен. Для каждой другой разрешенной опции настройки resolv.conf вы можете добавить внутри абзаца по отдельной строке с этой опцией с префиксом имени dns-. Результирующий файл может выглядеть так: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com dns-nameservers 192.168.3.45 192.168.8.10
В опции search можно также указать несколько доменных имён, в этом случае DNS-запросы будут добавляться в том порядке, в котором они введены. Например, в вашей сети может быть несколько поддоменов для поиска: родительский домен example.com и два поддомена, sales.example.com и dev.example.com. Если у вас несколько доменов, в которых должен выполняться поиск, ваша конфигурация может выглядеть так: iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com sales.example.com dev.example.com dns-nameservers 192.168.3.45 192.168.8.10 Если вы попытаетесь проверить командой ping хост с именем server1, ваша система автоматически запросит DNS по их полным доменным именам (FQDN) в следующем порядке: 1. server1.example.com 2. server1.sales.example.com 3. server1.dev.example.com Если совпадений не будет, DNS сервер предоставит результат notfound и запрос DNS потерпит неудачу.
Статические имена хостов Статические имена хостов — это локально определённые соотношения «имя хоста - IP», находящиеся в файле /etc/hosts. Значения, определённые в файле hosts, по умолчанию превалируют над DNS. Это означает, что если система пытается разрешить имя и находит его в /etc/hosts, она не будет пытаться смотреть записи в DNS. В некоторых конфигурациях, особенно когда доступ в интернет не требуется, сервера, соединённые с ограниченным количеством ресурсов, могут просто использовать статический список имён вместо DNS. Далее приведен пример файла hosts, где ряд локальных серверов определены обычными именами хостов, алиасами и их эквивалентами полных имен (FQDN). 127.0.0.1 localhost 127.0.1.1 ubuntu-server 10.0.0.11 server1 vpn server1.example.com 10.0.0.12 server2 mail server2.example.com 10.0.0.13 server3 www server3.example.com 10.0.0.14 server4 file server4.example.com В примере выше обратите внимание, что каждый сервер имеет алиас вдобавок к их правильным коротким и полным именам. Server1 соотносится с именем vpn, server2 определен как mail, server3 как www, and server4 как file.
Настройка переключения сервиса имён Последовательность, в которой ваша система выбирает метод разрешения имен по IP адресам управляется конфигурационным файлом переключателя сервиса имён (NSS) /etc/nsswitch.conf. Как отмечено в предыдущей секции, обычно статические имена хостов, определенные в системном файле /etc/hosts, имеют приоритет перед разрешением имён через DNS. Далее следует пример строки, отвечающей за этот порядок перебора имён хостов в файле /etc/hosts. hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 • files сперва пытается разрешить статическое имя хоста в /etc/hosts. • mdns4_minimal пытается разрешить имя с использованием параллельного (multicast) DNS. • [NOTFOUND=return] означает, что любой ответ notfound, предшествующий процессу mdns4_minimal должен считаться значимым (авторитетным), и что система не будет пытаться продолжать искать ответ. • dns представляет собой наследуемый последовательный (legacy unicast) DNS-запрос. • mdns4 представляет параллельный (multicast) DNS-запрос. Для изменения последовательности вышеупомянутых методов разрешения имен вы можете просто заменить строку hosts: на значение по вашему выбору. Например, если вы предпочитаете использовать последовательный DNS до параллельного DNS, вы можете изменить строку в /etc/nsswitch.conf как показано ниже: hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4
Использование моста Соединение нескольких интерфейсов — наиболее продвинутая настройка, но очень полезная во множестве сценариев. Один вариант — установка взаимодействия между несколькими сетевыми интерфейсами и затем использование защитного экрана (firewall) для фильтрования трафика между двумя сегментами сети. Другой сценарий — использование связывания на системе с одним интерфейсом для разрешения виртуальным машинам иметь прямой доступ во внешнюю сеть. Следующий пример раскрывает последний сценарий. Перед настойкой взаимодействия вам потребуется установить пакет bridgeutils. Для установки пакета введите в терминале: sudo apt-get install bridge-utils Далее настройте взаимодействие, отредактировав /etc/network/interfaces: auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off Введите соответствующие значения для вашего физического интерфейса и сети.
Теперь перезапустите сеть для разрешения взаимодействия интерфейсов: sudo /etc/init.d/networking restart Теперь новый мост между интерфейсами поднят и работает. Утилита application>brctl
|