Настройка сети в Debian 8,9,10

Статья для тех, кому нужна сеть, настроенная без GUI, сервер или когда графическая оболочка запускается лишь с целью запуска отдельного приложения, требующего доступ к ней.

Root

Когда настраивал свой сервер, то я столкнулся с такой проблемой как ручная настройка сети в Debian. Оказалось, что такой штуки, как ifconfig здесь просто нет, её можно установить из репозитория, но не нужно, здесь есть свои инструменты, не менее надёжные и на самом деле очень крутые.

Кстати, пока я писал статью, то нашёл страницу, описывающую мой опыт. Так что я не один такой. Я не влезаю в тонкости построения того или иного дистрибутива, поскольку это прерогатива их авторов. Дарёному коню, в зубы не смотрят.

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

Для начала вызовем команду на дуэль с ключом --help:

#ip --help

Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
                   netns | l2tp }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -f[amily] { inet | inet6 | ipx | dnet | link } |
                    -l[oops] { maximum-addr-flush-attempts } |
                    -o[neline] | -t[imestamp] | -b[atch] [filename] |
                    -rc[vbuf] [size]}

Чтобы понять, какие сетевые интерфейсы в Debian доступны к использованию на данный момент, требуется выполнить некоторую подготовку.

Для этого вводим команду:

ip addr, эта статья приводит упрощённый способ вызова команды, который явно не документирован manpage программы ip, но вы кто-то интересующийся может использовать команду ip a, так тоже можно.

данная команда даст вывод такой:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether bc:5f:f4:3e:96:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.45.2/24 brd 192.168.45.255 scope global eth0
    inet6 fe80::be5f:f4ff:fe3e:962a/64 scope link
       valid_lft forever preferred_lft forever
здесь наc интересует то, что мной отмечено красным цветом. eth0 -- конкретный сетевой интерфейс, который в более свежих системах имеет другие названия, inet означает IP адрес, назначенный непосредственно данной машине, inet6 это адрес ipv6, он конечно применяется, но в нашей стране не всегда, да и для мелких сетей использовать ip4 адресацию удобнее.

теперь нас интересует возможность назначить адрес конкретному интерфейсу. Это решение является дополнением к interfaces.

ip -f inet eth0 addr 192.168.1.1/24

Таким образом можно вручную поднять сеть на ПК или сервере, если по каким-то причинам не удалось это сделать при загрузке, к примеру, если не настроен interfaces, или в нём содержатся ошибки, либо необходимо без выключения сервера подключиться к другой сети с другого интерфейса без приостановки сетевых служб.
Конечно, это средства администрирования в стиле "раз настроил и забыл". И это основной костыль Linux систем.

Данная методика не годится, если не включить строку вышеуказанной команды в cron при загрузке. Для настройки сети по DHCP необходимо правильно заполнить файл interfaces.

Об этом написано много однотипных статей, в конце данной статьи я привёл пример заполнения файла /etc/network/interfaces . Вообще, если вам нужно администрировать сервер, то используйте по возможности человеко-понятные интерфейсы, их же можно отключить после настройки системы, это правила хорошего тона. Я например не знаю ни одного CLI менеджера настройки сети, поэтому кроме редактировния конфигурационных файлов ничего не смогу сделать. Или же я буду использовать Linux с графическим интерфейсом и серверными компонентами. Это удобнее, намного удобнее консоли.

Как подключиться к WIFI сети с WPA2-PSK у меня написано здесь.

Теперь опишу опыт настройки, когда вообще никакой сети нет, есть только консоль, клавиатура и к тому же необходимо переключить сеть со встроенного модуля на USB адаптер WIFI

Для начала нам необходимо узнать имя устройства wifi, которое подключено к системе:

# ip a

 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether bc:5f:f4:3e:96:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.45.2/24 brd 192.168.45.255 scope global eth0
    inet6 fe80::be5f:f4ff:fe3e:962a/64 scope link
       valid_lft forever preferred_lft forever

3: w6lyq71an: blah, blah, blah....

Грепаем:

# ip a | grep 3 > wlh.txt

# cat wlh.txt >> /etc/network/interfaces

# nano /etc/network/interfaces

Здесь 

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp

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

Вот примерное содержимое измененного файла.
auto lo
iface lo inet loopback

#auto wlan0
#iface wlan0 inet dhcp
 

auto w6lyq71an
iface
w6lyq71an inet dhcp

Далее сохраняем:

С+O, 

И выходим из nano:

C+X

#systemctl restart networking

Если ошибок не возникнет, то команда ip a выдаст настройки сети, выданные вашим роутером.

Всё.

P.s. Наибольшую проблему в работе с чистой консолью Linux вызывает отсутствие понятных принципов работы с ней. Например нас интересуют только сетевые интерфейсы и IP адреса. Мы вынуждены либо сразу направить вывод в файл, либо сначала найти нужный интерфейс, а потом уже через команду grep направить отсеченные результаты вывода в нужный нам файл. Здесь я сначала посмотрел, какой устройство у меня в ПК отвечает за WIFI, потом я отправил запись 3:* в файл /etc/networking/interfaces, затем я открыл его из nano и там уже поправил его. Слишком много операций, на которые расходуется много времени. Но, к счастью, настройка должны произвестись всего один раз.


Комментарии

Популярные сообщения из этого блога

Подключение локального репозтория для debian/ubuntu/mint/astra включая установочный диск

LibreCAD шрифты

Как пользоваться LibreCAD так, чтобы было удобно.