- Настройка сети из консоли в Ubuntu
- Как работает сеть?
- Настройка сети через терминал в Ubuntu
- Настройка динамического получения IP-адреса
- Настройка статического адреса Ubuntu
- Ручная настройка сети в Ubuntu
- Получение IP-адреса по DHCP
- Настройка статического IP
- Настройка DNS
- Выводы
- VirtualBox: виртуальная локальная сеть, маршрутизация в Linux
- Описание задачи
- Настройка виртуальных машин
- Настройка адресов сетей и сервера
- Маршрутизация через сервер
- Заключение
Настройка сети из консоли в Ubuntu
В Ubuntu подключение к сети настраивается с помощью сервиса Network Manager. Чтобы подключиться к сети, достаточно пару раз кликнуть мышкой, выбрать соединение — и готово. То же самое, и даже ещё проще, при использовании проводного соединения — тут интернет подключается автоматически, как только загрузился апплет.
Но не всегда доступен графический интерфейс: после неудачной установки драйвера или очередного обновления не запускается графическая оболочка, а на серверах она и вовсе не используется. В этой небольшой инструкции будет разобрана настройка сети Ubuntu из консоли. Мы поговорим о том, как настроить получение IP-адреса по DHCP, а также настроить работу DNS. Рассмотрим ручную и автоматическую настройку, также попробуем сделать это через системные конфигурационные файлы.
Как работает сеть?
Перед тем, как перейти к самим командам, давайте немного разберёмся в теории работы сети. Это нужно, чтобы вы не просто выполнили какие-то непонятные команды, а поняли всю суть того, что мы будем делать и как выполняется настройка локальной сети Ubuntu.
Компьютеры обмениваются между собой информацией с помощью пакетов. Все данные в сети интернет передаются с помощью пакетов небольшого размера. Если не углубляться в подробности, то каждый пакет содержит адрес отправителя, адрес получателя и сами данные. Эти адреса есть не что иное, как привычные нам IP-адреса. Кроме IP, у компьютера есть физический адрес, который используется для общения между компьютерами в локальной сети. Это MAC-адрес? и задается он производителем сетевой карты.
Как только компьютер подключился к сети, независимо от того проводное это соединение или беспроводное, он может общаться только с компьютерами в локальной сети и только по физическим адресам. Для того, чтобы получить доступ в Глобальную сеть, машине в ней нужно получить IP-адрес. Для этого используется протокол DHCP. Если кратко: наш компьютер спрашивает все компьютеры в локальной сети, кто здесь DHCP-сервер, DHCP ему отвечает и выдаёт IP-адрес. Таким же образом компьютер узнаёт IP маршрутизатора, через который он может получить доступ к Сети, а затем пытается найти DNS-серверы или узнать стандартные у маршрутизатора. С теорией разобрались, перейдем к практике.
Настройка сети через терминал в Ubuntu
Тут мы рассмотрим автоматическую настройку сети для Ubuntu 16.04 без Network Manager с помощью стандартных скриптов системы, которые остались от Upstart и пока всё ещё используются. Давайте сначала определим, какие шаги нам нужно предпринять, чтобы всё заработало:
- Включаем сетевой интерфейс и подключаемся к сети;
- Устанавливаем IP-адрес;
- Получаем адреса DNS-серверов.
Собственно, готово. Эти шаги очень символичны, потом что система всё сделает за нас сама. Нам нужно только выполнить нужные настройки. Но сначала давайте посмотрим, какие сетевые интерфейсы подключены к системе. Мне нравится команда:
Но если хотите, можете использовать ifconfig:
В нашей системе только один интерфейс — это enp0s3, есть еще lo, но он виртуальный и указывает на эту машину.
Настройки сети находятся в файле /etc/network/interfaces.
Нас будут интересовать в этом файле строчки auto и iface. Первая указывает, что нужно активировать интерфейс при загрузке, вторая же определяет настройки самого интерфейса.
Настройка динамического получения IP-адреса
Добавьте в этот файл такие строки, чтобы запускать интерфейс при загрузке и получать IP-адрес автоматически по DHCP:
auto enp0s3
iface enp0s3 inet dhcp
Синтаксис строки auto прост. Он состоит из самой команды и имени сетевого интерфейса. Рассмотрим подробнее:
$ iface интерфейс inet тип
Тип получения IP-адреса может иметь несколько значений, но нас в этой статье будут интересовать только два: dhcp и static.
После завершения настройки сохраните файл и перезапустите сетевой сервис:
sudo service networking restart
Всё, если сетевой кабель подключён, и вы всё сделали правильно, Сеть будет работать.
Настройка статического адреса Ubuntu
При настройке статического IP-адреса компьютер не будет связываться с DHCP-сервером, поэтому здесь придётся указать намного больше параметров.
Содержимое нашего конфигурационного файла будет выглядеть вот так:
auto eth0
iface eth0 inet static
address 192.168.1.7
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
С первыми двумя строчками все понятно, а следующие задают параметры настройки интерфейса:
- address — наш IP-адрес;
- gateway — шлюз, через который будем получать доступ в интернет;
- netmask — маска сети;
- network — адрес сети, имеет тот же адрес, что и шлюз, только с нулем вместо единицы;
- broadcast — широковещательный адрес сети, отправленный на него пакет придет всем компьютерам локальной сети.
Как видите, network и broadcast — это первый и последний IP-адреса сети. Теперь сохраните файл и перезапустите сеть:
sudo service networking restart
Если все параметры были указаны правильно, всё будет работать. Но если допущена хоть одна ошибка, доступ к сети вы не получите.
Это была автоматическая настройка локальной сети Гbuntu, но я ещё расскажу, как всё сделать вручную, без конфигурационных файлов.
Ручная настройка сети в Ubuntu
Предыдущий вариант хорош, если вы собираетесь его использовать постоянно, но если нужно только один раз настроить сеть через терминал, то редактировать конфигурационные файлы необязательно. Мы можем всё сделать с помощью команды ip. Дальше будет рассмотрена настройка сети вручную Ubuntu.
Эта команда используется для управления сетью и входит во все дистрибутивы по умолчанию.
Как и в предыдущем примере, смотрим сетевые интерфейсы:
После того, как мы узнали интерфейс, можно переходить к настройке.
Получение IP-адреса по DHCP
Сначала включаем интерфейс:
sudo ip link set enp0s3 up
Затем с помощью команды dhclient запрашиваем ip:
Всё, настройка сети Ubuntu 16.04 завершена, у нас есть IP-адрес, и осталось только настроить DNS, но это мы рассмотрим ниже.
Настройка статического IP
sudo ip link set enp0s3 up
Устанавливаем IP-адрес, маску сети и broadcast-адрес для нашего интерфейса:
sudo ip addr add 192.168.1.7/255.255.255.0 broadcast 192.168.1.255 dev enp0s3
sudo ip route add default via 192.168.1.1
Здесь 192.168.1.7 — наш IP-адрес, 255.255.255.0 — маска сети, 192.168.1.255 — широковещательный адрес. Замените эти значения на свои.
Как видите, сеть работает. Если хотите поэкспериментировать на машине с рабочей сетью, её можно сбросить командой:
sudo ip -4 addr flush dev enp0s3
Настройка DNS
Служба DNS используется для преобразования доменных имен сайтов в IP-адреса. При получении IP-адреса автоматически через DHCP мы используем правильные DNS-серверы, но если мы выбрали статический IP, то DNS можно и не получить, поэтому придётся сделать всё вручную.
Если вам нужно настроить DNS так, чтобы он не сбивался после перезагрузки, необходимо использовать систему настройки сети Ubuntu. Для этого откройте файл /etc/network/interfaces и добавьте в него строчку после директив для нужного интерфейса:
Здесь 8.8.8.8 и 4.4.4.4 это IP-адреса DNS серверов, можете заменить их на свои. И можно использовать один, а не два. Дальше сохраните файл и перезапустите сеть:
sudo service networking restart
Если же вам нужно настроить DNS только для этого сеанса, то добавьте строчку в /etc/resolv.conf
nameserver 8.8.8.8
nameserver 4.4.4.4
После сохранения файла сеть будет работать полностью так, как нужно. Но последний способ пригоден только до перезагрузки, поскольку файл /etc/resolv.conf генерируется автоматически.
Выводы
В этой статье была рассмотрена настройка сети Ubuntu из консоли. Я пытался не просто показать команды, с помощью которых это можно сделать, но и объяснить, как это работает. Теперь вы будете знать, что нужно делать, если у вас нет доступа к графическому интерфейсу, но срочно нужно попасть в сеть. Если остались вопросы, пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
VirtualBox: виртуальная локальная сеть, маршрутизация в Linux
На 4 курсе Бауманки я получил задание: сделать виртуальную локальную сеть на базе Linux. Информации на эту тему оказалось довольно много, но ее поиск может занять много времени, а порой даже запутать. Поэтому я решил расписать самые основные шаги для построения локальной сети с использованием VirtualBox, а также пролить свет на некоторые неочевидные настройки Linux.
Описание задачи
Создать виртуальную сеть в VirtualBox, включающую в себя первую сеть на 2048 хостов, вторую сеть на 256 хостов и сервер, выступающий в роли маршрутизатора. В последствии на сервере можно будет настроить файервол для вывода в интернет обоих сетей.
Любой компьютер первой сети должен успешно выполнять пинг любого другого компьютера второй сети и наоборот. ICMP-пакеты должны проходить через сервер. Сети и сервер должны быть представлены в виде компьютеров с соответствующими ipv4-адресами.
Настройка виртуальных машин
Если говорить максимально коротко, то сервер одновременно находится и в первой локальной сети, и во второй. Это значит, что по одному сетевому интерфейсу он видит все компьютеры из сети на 2048 хостов, а по другому — все компьютеры из сети на 256 хостов. Для объединения виртуальных машин, допустим сервера и машины первой сети, будем использовать тип подключения «Внутренняя сеть». Внутренняя сеть позволит объединить сервер (SERVER) и первую сеть (LAN 1) на физическом уровне (аналог — соединение кабелем).
Следует обратить внимание на то, что имя внутренней сети LAN1 на первом адаптере должно совпадать с именем внутренней сети SERVER’а на первом адаптере. Таким образом, можно реализовать физическое соединение любого адаптера виртуальной машины LAN 1 с любым адаптером виртуальной машины SERVER. Аналогичным образом соединим вторую сеть (LAN 2) с другим сетевым адаптером сервера, за одним исключением, название внутренней сети должно отличаться.
На данном этапе машины соединены физически, но отправлять ICMP пакеты еще нельзя, для этого необходимо настроить ip-адреса.
Настройка адресов сетей и сервера
Для первой сети на 2048 хостов зададим адрес 192.168.1.0/21, для второй — 192.168.2.0/24. Про ip-адресацию написано уже достаточно большое количество статей, поэтому на ней останавливаться не будем. Соответственно, необходимо задать адреса каждой виртуальной машине.
Для начала стоит посмотреть на сетевые интерфейсы сервера с помощью команды ifconfig:
- eth0 — из предыдущего пункта адаптер 1 с типом подключения «Сетевой мост», сейчас его рано разбирать
- eth1 — адаптер 2 с типом подключения внутренняя сеть, соединяется с адаптером 1 (там это будет eth0) первой виртуальной машины LAN 1, имя подключения LAN 1
- eth2 — адаптер 2 с типом подключения внутренняя сеть, соединяется с адаптером 1 второй виртуальной машины LAN 2, имя подключения LAN 2
Следующими двумя командами зададим ip-адреса сервера в первой и второй сетях соответственно:
- ifconfig eth1 192.168.1.10 netmask 255.255.248.0
- ifconfig eth2 192.168.2.10 netmask 255.255.255.0
Затем необходимо настроить ip-адреса на eth0 виртуальных машин LAN1 и LAN2. Выполнив команду ifconfig на каждой из машин можно увидеть следующее:
На данном этапе LAN 1 видит SERVER по адресу 192.168.1.10, а SERVER видит LAN 1 по 192.168.1.1. Похожая ситуация и со второй сетью, LAN 1 видит SERVER по адресу 192.168.2.10, а SERVER видит LAN 1 по 192.168.2.1.
Убедиться в этом можно с помощью команды ping, которая отсылает icmp пакеты по определенному ip-адресу и принимает ответ. При пинге с SERVER’а адреса 192.168.2.1 (команда ping 192.168.2.10) должен получиться следующий результат:
Пакеты идут, значит все правильно.
Маршрутизация через сервер
Данная часть статьи легче для понимая, поэтому коротко и по делу. LAN 1 и LAN 2 находят в разных сетях, но у них есть общая точка соприкосновения — SERVER. Это значит, что две сети могут общаться между собой именно через него. Но для этого надо настроить маршрутизацию.
Для начала стоит разрешить на сервере пересылку пакетов между различными сетевыми интерфейсами командой: echo 1 > /proc/sys/net/ipv4/ip_forward. С помощью утилиты маршрутизации route добавим статические маршруты из сети LAN 1 в LAN 2 через SERVER, и из сети LAN 2 в LAN 1 через SERVER.
LAN 1: route add -net 192,168.2.0 netmask 255.255.255.0 gw 192.168.1.10 dev eth0
LAN 2: route add -net 192.168.0.0 netmask 255.255.248.0 gw 192.168.2.10 dev eth0
Следует отметить, что атрибут -net указывается для того, чтобы провести маршрут именно до сети, а не до отдельного хоста, а после атрибута gw указывается адрес сервера для той сети, в которой начинается маршрут.
Такая маршрутизация позволяет первой сети направлять пакеты из одной сети в другую через сервер.
Заключение
Данная статья должна ответить на базовые вопросы читателей по поводу практической реализации и расставить по местам некоторые вопросы о создании виртуальных локальных сетей в VirtualBox с использованием Linux.
Также стоит отметить, что на практике стоит выбрать другой адрес для первой подсети, например 10.0.0.0/21, чтобы избежать пересекающихся диапазонов адресов.