Настройка локальной сети вручную в Ubuntu
Принцип устройства сети.
IP-адрес:
Компьютер в сети, должен быть уникальным.
Уникальность ему предоставляет IP-адрес. IP-адрес — это последовательность единиц и нолей, равная 32 знакам (1100100111. ) — страшно и непонятно :).
Для наглядности и удобства эту последовательность разбили на 4 равные части и перевели в десятичную систему исчисления.
Что получилось? 32 знака (единицы и ноли) = 8 знаков * 4 группы = 255.255.255.255 (8 знаков = 2 в 8-й степени — 1 = 256 — 1 = 255).
То есть максимально возможная группа цифр — это 255.255.255.255.
Маска подсети:
Что такое маска подсети? А это часть ip-адреса. IP-адрес поделили на две неравные части. Первые 24 знака (бита) — маска, а остальные 8 — адрес хоста в подсети.
Маска подсети нужна для определения того, является ли компьютер которому отправляется пакет, компьютером той же подсети, что и наш. Если маска у нас одна, тогда шлем напрямки к компу-получателю, если же нет, то шлем пакет шлюзу (шлюз — это комп, маршрутизатор или программа для сопряжения компьютерных сетей, использующих разные протоколы).
Как работает сеть? Если сказать просто, то так: компьютер отсылает пакет абы куда :), но в пакете есть информация в которой записано кому он предназначен — информация о получателе. Пакет может прийти хосту, для которого он не предназначен. Хост проверит по записанной ключевой информации принадлежность пакета, убедится, что пакет не для него, и выбросит его как ненужный. И так происходит пока пакет не придет к получателю.
Что за информация записана в пакете, по которой хосты определяют принадлежность пакета получателю?
Записаны
MAC-адрес получателя и ip-адрес получателя. MAC-адрес вещь уникальная, в пределах земного шара :).
При тривиальных условиях, то есть когда компьютеры в одной подсети, записывается MAC-адрес получателя и ip-адрес получателя, а когда пакет шлем через шлюз, то в пакете указывается MAC-адрес шлюза (его мы узнаем из ip-адреса шлюза с помощью ARP-запроса) и ip-адрес компьютера-получателя.
DNS-сервер — это компьютер, который знают всё про всех :). Это глобальное определение.
Пример: Есть желание попасть на http://yandex.ru. Наш компьютер формирует запрос для сервера — это компьютер на котором размещена страничка http://www.yandex.ru :). Для того, чтобы узнать адрес этого сервера, ему нужно, сначала, посмотреть файл hosts (в windows — C:/windows/system32/drivers/etc/hosts, в linux — /etc/hosts) и, если в нём нет записи с этим именем, то послать запрос DNS-серверу, в котором прописаны символы — «yandex.ru». DNS-сервер посмотрит в таблицах соответствий имён ip-адресам, и найдет ip-адрес сервера. Этот 32-битный адрес он вернёт нам. Используя этот ip-адрес мы преспокойненько попадаем на нужную нам страничку.
Если же DNS-сервер не отвечает, то мы отправляем запрос второму DNS-серверу.
Если у вас не работает интернет, проверьте, может быть не прописаны или прописаны но неправильно DNS-серверы.
Проверить это можно «попинговав» сначала yandex.ru, а потом его ip-адрес: 77.88.21.11.
IP-адреса есть уникальные (белые, реальные, внешние) и неуникальные (серые, внутренние).
Адреса, относящиеся к подсетям, представленным ниже, не используются в интернете в качестве реальных адресов.
Это «серые», «внутренние» адреса. Они используются в локальных компьютерных сетях, которые если и имеют выход в интернет, то только через шлюз, у которого есть внешний ip-адрес. Если у этого шлюза вторая сеть — интернет, и адрес внешний, то необходимо настроить на нем технологию транслирования сетевых адресов (network address translation, NAT). Это делается для того, чтобы сетевые пакеты из локальной сети, прошедшие через него в интернет, не имели серого адреса-отправителя, т.к. в этом случае сервер, для которого предназначен пакет, не поймет, кому именно из миллионов локальных сетей возвращать ответный пакет. При использовании NAT, шлюз меняет адрес отправителя на свой внешний адрес, а у себя записывает, что «ответные пакеты с этого сервера перенаправлять такому-то компьютеру. ».
В этом случае используется SNAT (source network address translation).
Если же нам необходимо изменять адрес получателя (например, в нашей локальной сети есть сервер терминалов с серым адресом, а мы бы хотели иметь к нему доступ из интернета), то можно использовать на нашем шлюзе DNAT (destination network address translation) — «проброс портов».
То есть мы указываем в правилах файервола, что пакеты, предназначенные нам и пришедшие на порт 3160, перенаправлять на внутренний серый адрес сервера терминалов.
Определение состояния сетевых устройств и средств.
Если рассматривать самое простое соединение, т.е. компьютер в локальной сети и получает настройки автоматически, то необходимо выполнить команду:
Далее, для изменения настроек нам понадобятся права суперпользователя, по этому будем использовать программу sudo.
sudo dhclient eth0
(команду dhclient надо запускать с правами суперпользователя).
Команда ifconfig (без параметров), отображает информацию только об активных сетевых интерфейсах.
В Ubuntu имена сетевых устройств имеют вид ethN, где N — число, означающее номер устройства связи в системе.
Нумерация устройств начинается с нуля. Если в компьютере две сетевых карты, то они будут с идентификаторами eth0 и eth1. Если в сетевую карту ethN вставлен сетевой провод, идущий в модем, роутер или свитч, будет написано «RUNNING», на первом рисунке это видно.
Интерфейс eth0 — это карта Ethernet, к которой можно подключить сетевой кабель. В текущий момент сетевой кабель подключен, поэтому интерфейс активен, и для него отображаются ip-адрес, широковещательный адрес и маска подсети:
Интерфейс eth0 — карта Ethernet. Сетевой кабель подлючен, интерфейс активен, присвоен ip(192.168.1.254) и маска подсети(255.255.255.0):
Интерфейс lo — интерфейс обратной петли и позволяет компьютеру обращатся к самому себе. Интерфейс имеет ip-адрес 127.0.0.1 и необходим для нормальной работы системы:
Еще один интересный адрес, который можно увидеть у сетевой карты — параметр HWaddr (Hardware Address, аппаратный адрес). Это mac-адрес (Media Access Control, управление доступом к среде). Это 48-разрядный серийный номер сетевого адаптера, присваиваемый производителем. Так как lo создан программно, у него не может быть аппаратного адреса.
Настройка сетевого интерфейса при помощи ifconfig
Команда ifconfig позволяет конфигурировать сетевой интерфейс по вашему усмотрению и предлагает широкие возможности для этого.
Чтобы получить подробную информацию по команде, пишем в терминале:
man ifconfig
Если компьютер со статическим ip-адресом и не имеет доступа ни к другим сетям ни к интернету, то команда настройки сетевого интерфейса будет такой:
sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
eth0 — идентификатор сетевого оборудования (сетевая карта).
192.168.1.2 — присваеваемый ip-адрес.
netmask 255.255.255.0 — присваеваемая маска подсети.
up — поднять интерфейс (то есть применить изменения, начать работу сетевой карте).
down — остановить интерфейс.
Команда: sudo ifconfig eth0 down Т.е. остановить работу сетевой карты с eth0 идентификатором.
Бывает так, что провайдер интернет привязывает mac-адрес сетевой карты к учётке клиента. При замене сетевой карты или же компьютера, мы получим отсутствие интернета на нашей стороне. Как временное решение может подойти подмена реального mac-адреса, mac-адресом который был зарегистрирован у провайдера. Почему временное? Потому, что описанная ниже команда делает изменения которые удалятся, при перезагрузке компьютера.
Сначала выясняем наш старый mac-адрес, выполняем команду ifconfig без параметров.
Допустим он у нас такой: 00:00:00:00:00:01.
Производим следующие действия, то есть выполняем последовательность команд:
1) Отключаем интерфейс: ifconfig eth0 down
2) Изменяем MAC: ifconfig eth0 hw ether 00:00:00:00:00:01
3) Включаем интерфейс: ifconfig eth0 up
Все действия можно выполнить одной командой:
sudo ifconfig eth0 down && ifconfig eth0 hw ether 00:00:00:00:00:01 up
&& — означает, выполнить следующую команду при успешном выполнении предыдущей команды.
Как я писал выше, все эти настройки действительны лишь до перезагрузки системы. Сделаем их постоянными следующим образом:
Редактируем файл /etc/network/interfaces
Теперь приступим к редактированю файла настройки сетевых интерфейсов. Вот эти настройки и будут долговременными :), пока мы их не поменяем в файле снова.
На скриншоте вы видите три устройства:
еth0 — первая сетевая карта.
lo — локальная петля.
Локальная сеть подключена к сетевой карте eth0.
Почти вся информация о настройках сети и методах ее активации, хранится в файле /etc/network/interfaces, именно с ним мы и будем работать, используя редактор.
sudo gedit /etc/network/interfaces
auto lo — говорит о том, что интерфейс lo поднимается автоматически при загрузке системы.
Добавьте в файл строки:
auto eth0 iface eth0 inet static address 192.168.1.254 netmask 255.255.255.0 gateway 192.168.1.1
auto eth0 — сетевая карта eth0 поднимается автоматически во время загрузки системы.
iface eth0 inet static — указывает, что интерфейс (iface) сетевой карты (eth0) находится в диапазоне адресов ipv4 (inet) со статическим ip (static).
address 192.168.1.254 — статический ip адрес, тут пишем свой ip-адрес.
netmask — стандартная маска сети.
gateway — ip-адрес основного шлюза.
Редактирование закончено. Сохраняем и закрываем файл.
Запросите у вашего провайдера услуг Интернет (Internet Service Provider, ISP) адреса основного и вспомогательного серверов DNS и опишите их в файле /etc/resolv.conf.
На примере я укажу адрес DNS-сервер своего провайдера, вы должны ввести свои данные.
Откройте файл для редактирования:
sudo gedit /etc/resolv.conf
Вставьте свои данные:
nameserver 192.168.1.1 nameserver 172.16.0.1
Сохраните и закройте файл.
Для настройки DHCP и получения сетевых параметров автоматически, нужно добавить две строчки (пусть у меня так поднимется карта eth1).
sudo gedit /etc/network/interfaces
Вставьте строчки следующего содержания:
auto eth1 iface eth1 inet dhcp
Ваш файл будет выглядеть так:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.254 netmask 255.255.255.0 gateway 192.168.1.1 auto eth1 iface eth0 inet dhcp
Если по каким-либо причинам вы хотите чтобы при загрузке у сетевой карты eth0 был другой mac-адрес, для этого нужно дописать строчку hwaddress ether 00:00:00:00:00:01:
auto eth0 iface eth0 inet static address 192.168.1.254 netmask 255.255.255.0 gateway 192.168.1.1 hwaddress ether 00:00:00:00:00:01
Несколько IP-адресов на одной сетевой карте
На одной сетевой карте может быть несколько ip-адресов, это бывает необходимо, если в коммутатор идут два провода от разных сетей и один от компьютера. В этом случае можно настроить на компьютере адреса обоих сетей без использования дополнительной сетевой карты. Для этого необходимо идентифицировать так называемый алиас (alias) к определенному сетевому интерфейсу, и выглядеть это будет так: сетевой_интерфейс:1 или сетевой_интерфейс:2, т.е. eth0:1 или eth1:2. Идентифицировать его можно следующим образом:
ifconfig eth0:1 192.168.0.5 netmask 255.255.255.0 up
Интересно то, что можно настроить основной интерфейс через dhcp (автоматически) dhclient eth0, а алиас eth0:1 в статику, чего я в альтернативных операционных системах не нашел.
Настройка сети в Linux, диагностика и мониторинг
Содержание
Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).
Настройка TCP/IP в Linux для работы в сети Ethernet

Параметры сети
Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:
Файлы настроек сети в Linux (конфигурационные файлы)
Соответственно, прочитав man interfaces (rus) или man interfaces (eng), становиться ясно, как же в Debian/Ubuntu настроить какой-либо сетевой интерфейс с помощью конфига /etc/network/interfaces. Ниже, пример данного конфигурационного файла для 3х интерфейсов: петлевой (lo), со статичным IP (eth2) и IP получаемым по dhcp (eth0):
/etc/hosts
Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:
/etc/networks
Данный файл хранит имена и адреса локальной и других сетей. Пример:
При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.
/etc/nsswitch.conf
Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:
Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.
/etc/resolv.conf
Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:
Настройка сети
Настройка сети подробно разобрана в отдельной статье.
Диагностика сети Linux
Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.
Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:
Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.
traceroute
Ручная настройка сети в Linux
Привязка интерфейса к карте
Конфигурационный файл переименования интерфейсов обновляется автоматически при первом обнаружении очередной сетевой карты и находится в файле /etc/udev/rules.d/70-persistent-net.rules. Файл состоит из строк такого содержания:
Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).
ifcfg
Классическая утилита конфигурации сетевых интерфейсов ifcfg
route
Настройка таблицы маршрутизации route
В современных дистрибутивах линукса на смену ifconfig и route приходит универсальная утилита ip
Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf
Ручная настройка сети в ArchLinux
Для просмотра доступных сетевых интерфейсов используется команда ip link
Содержимое enp1s0-work после редактирования
Базовые команды netctl
Ручная настройка сети в Ubuntu
Ручная настройка сети в CentOS 6
Общие настройки сети
Конфигурация интерфейса
Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0
Интерфейс, получающий адрес по DHCP
Дополнительный IP адрес на интерфейсе eth1
Инициализация VLAN на eth1
Настройка DNS
Файл /etc/resolv.conf
Ручная настройка имен хостов файл /etc/hosts
Настройка брандмауэра
Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall
Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.
После ручного изменения правил их можно сохранить командой service iptables save
Настройка сети вручную
Содержание
Краткое описание руководства
В руководстве приведены примеры редактирования конфигурационных файлов с помощью текстовых редакторов «nano» и «gedit». Обратите внимание на то, что первый редактор запускается в терминале и может быть использован как при запуске Ubuntu с графическим интерфейсом, так и без него, а «gedit» можно использовать только при включенной графической среде.
Требования к системе
Прежде чем Вы начнете, убедитесь, что:
Для настроек вам обязательно потребуется имя вашего сетевого адаптера. Его можно узнать из вывода команды:
Она позволяет посмотреть подключенные сетевые устройства.
Пример вывода команды:
Обратите внимание на строку:
Более подробно о наименовании сетевых интерфейсов в SystemD можно почитать тут (англ.).
Такое переименование можно отключить добавив в /etc/default/grub, в строку с переменной GRUB_CMDLINE_LINUX_DEFAULT строку net.ifnames=0. После этого нужно выполнить sudo update-grub
Настройка проводной сети
Настройка IP-адреса, шлюза по умолчанию, маски подсети
И допишите в него:
Для статического IP:
В итоге файл /etc/network/interfaces должен выглядеть примерно так:
(для одного проводного соединения со статическим IP)
Более подробно про синтаксис файла /etc/network/interfaces можно прочитать в документации.
Пример конфигурации для динамического IP:
Временная настройка IP-адреса и маски подсети
При необходимости задать пробные настройки, выполните:
Данные настройки пропадут после перезагрузки системы и не повлияют на файл /etc/network/interfaces
Настройка DNS
В итоге описание статического интерфейса в /etc/network/interfaces должно выглядеть примерно так:
Ubuntu до версии 12.04
В более старых версиях ubuntu, когда есть необходимость указать статические адреса DNS серверов (если они не выдаются автоматически) выполните:
Настройка соединений ppp
Соединение PPPoE
Перезагрузитесь или перезапустите Network Manager:
Соединение PPTP
И добавьте туда опции подключения, например такие:
После перезагрузки системы Вы сможете управлять соединением при помощи команд:
Процесс настройки VPN-соединения может сильно облегчить скрипт-помощник.
Настройка DIAL-UP подключения
При помощи pppconfig
Управлять соединением можно так:
При помощи wvdial
Вывод будет примерно следующим:
Теперь остается только отредактировать файл /etc/wvdial.conf и добавить в него номер телефона, логин и пароль.
В данном примере я дополнительно добавил несколько опций. См. комментарии.
Файл /etc/wvdial.conf разбит на секции, в качестве разделителей которых выступают сами названия секций, предварённые словом Dialer, в квадратных скобках. Если исполнять команду без параметров, то в дело пойдут установки, перечисленные в секции Defaults. В противном случае дополнительно будут исполнены указанные в добавочных секциях команды.
Теперь, когда все настроено, соединение можно установить набрав:
Если потребуется запустить wvdial с набором номера в импульсном режиме, то это можно сделать командой
Автоматическое подключение
Теперь при перезапуске сетевых служб соединение будет автоматически установлено.
Ручная настройка роутинга
со следующим кодом:
Теперь маршруты будут автоматически подключаться при установлении ppp-соединения.
Установка MTU и TTL
Для изменения величины TTL наберите:
Настройка WiFi
Настройка Wi-Fi при помощи wpa-supplicant и /etc/network/interfaces
В этой главе пойдет речь о настройке подключения к существующей Wi-Fi сети с использованием наиболее безопасного на сегодняшний день стандарта шифрования и аутентификации WPA2. Дополнительно приведены примеры настроек для менее безопасных соединений.
Замечания
Дополнительно к требованиям, указанным выше Вам следует учесть, что:
Подготовка
Установите пакеты wpa-supplicant и wireless-tools
Например так:
Теперь убедитесь в том, что Ваше беспроводное устройство (в данном примере это «wlan0») работает и «видит» беспроводные сети. Команда
должна выдать примерно такой результат:
а доступные сети можно посмотреть командой
которая должна выдать примерно такой результат:
Бывает, что Ваше устройство Wi-Fi не включено по умолчанию, тогда команда вместо рапорта, приведенного выше выдаст такое сообщение:
Ничего страшного, просто введите команду
соответственно выключить устройство можно командой
Настройка
Удаляем (или комментируем) все упоминания нашего беспроводного интерфейса и добавляем свои:
Генерация ключей
Теперь нам нужно сконвертировать нашу ключевую фразу (WPA ASCII ) в hex-ключ:
Результат будет примерно таким:
hex-ключ это все символы после «psk=».
Нужно его скопировать в буфер обмена и вставить в файл /etc/network/interfaces в поле wpa-psk.
Дополнительно
Отключаем чтение файла /etc/network/interfaces для others во избежания попадания пароля от сети к третьим лицам.
Примеры конфигураций
WPA2 + статический IP, скрытый ESSID.
Другие способы работы Wi-Fi оборудования
Решение проблем
Не устанавливается соединение по Wi-Fi/Ethernet с точкой доступа/маршрутизатором
Симптомы: сеть обычно изначально работает нормально, долго или недолго, а затем неожиданно пропадает и не появляется после перезагрузки. Эта проблема может быть непостоянной. Сеть «сама собой» начинает работать, а затем пропадает вновь. При перезапуске адаптера сети таким образом:
будет выводиться в консоль похожий текст
Причиной проблемы может быть то, что материнская плата полностью не обесточивается при выключении компьютера. При этом вероятно не обесточивается и некоторое периферийное оборудование, в т.ч. могут не обесточиваться usb порты. Если вы используете, например, Wi-Fi usb-адаптер, то в таком случае можно заметить горящий на адаптере светодиод (если он им оборудован). Вероятно проблема возникает из-за того, что сетевое оборудование в этом режиме работает не совсем корректно.
Простое решение проблемы состоит в выключении компьютера и выдергивании кабеля питания из розетки с последующим подключением шнура питания и включением компьютера.
Сложное решение проблемы состоит в настройке параметров BIOS-а на полное обесточиваение сетевого оборудования при выключении компьютера.
Иногда наглухо пропадает соединение по Wi-Fi с точкой доступа/маршрутизатором
Симптомы: сеть изначально работает, а затем после перезагрузки точки доступа/маршрутизатора неожиданно пропадает, и не появляется ни после перезагрузки, ни после танцев с бубном. При этом беспроводной адаптер в упор не видит точку доступа (хотя она может стоять рядом с компьютером), но прекрасно видит все соседские сети. Затем после
перезагрузки маршрутизатора сеть сама собой появляется вновь.
Причиной проблемы может быть то, что некоторые маршрутизаторы произвольно выбирают номер рабочего канала, игнорируя номер канала выбранный в настройках маршрутизатора. Если в файле /etc/network/interfaces номер канала для беспроводного интерфейса указан, то вероятно проблема состоит именно в этом. Номер 6 канала указывается в файле примерно так:
Простое решение проблемы состоит в комментировании этого параметра, чтобы адаптер не был ограничен только этим каналом, и перезапуске сети
Сложное решение проблемы состоит в регистрации бага на сайте производителя маршрутизатора (прошивки для него) и обновление прошивки маршрутизатора после (в случае) его исправления.
Перезапуск сети
Теперь, когда все необходимые действия выполнены, можно перезапустить сеть и проверить соединение. Для этого:
FAQ по сетям
Как зайти на мой компьютер извне (через интернет)?
Для начала надо узнать, какой IP-адрес даёт провайдер — серый или белый (не путать со статическим/динамическим). Если серый, то ничего не получится. Если белый, то возможны два варианта:
Мне кажется, у меня слишком медленно работает сеть!
Как узнать, какие программы слушают порты на моём компьютере?
Чтобы посмотреть список открытых портов и названия слушающих их программ, используйте команду:
Из вывода netstat не всегда понятно, о какой программе идёт речь (например, 2671/python), подробнее о процессе расскажет ps :
Как присвоить два IP-адреса одной сетевой карте?
Например, интерфейсу eth0 нужно добавить адрес 192.168.1.1. Кратковременно, до перезапуска сети:
Навсегда — добавить в /etc/network/interfaces следующее:
Как пробросить порт?
Например, нужно пробросить порт 8081. Адрес, на который обращается клиент, назовём внешний_ip, а адрес, на который он должен попасть — внутренний_ip.





