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

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

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

В этой статье будем использовать утилиту sudo для административных действий.

Определить какие интерфейсы есть у вашего сервера поможет утилита 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=192.168.0.30 link=yes multicast=yes

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

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

Утилита 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 192.168.0.30/24 brd 192.168.0.255 scope global dynamic ens18
       valid_lft 258476sec preferred_lft 258476sec

Здесь мы видим mac и ip адрес с маской подсети. Этот ip адрес был получен по dhcp.

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

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

$ cat /etc/network/interfaces

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

Чтобы назначить статический ip адрес нужно отредактировать этот блок в файле:

$ sudo nano /etc/network/interfaces

allow-hotplug ens18
iface ens18 inet static
        address 192.168.0.30/24
        gateway 192.168.0.1

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

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

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

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

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

$ cat /etc/resolv.conf
nameserver 192.168.0.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, а дальше команду с помощью которой вы создаете маршрут.


Вам может быть интересна статья — Настройка сети на Ubuntu.

Если тебе понравилась эта статья, подпишись на мой канал в VK.

2 комментария к “Настройка сети на Debian”

  1. up ip route add 192.168.5.0/24 via 192.168.0.10
    Здесь нет ошибки? Сеть 192.168.5.0/24 через 192.168.0.10.
    Это ведь разные сети. Маска 255.255.255.0 адрес 192.168.0.10

    Ответить
    • Здесь нет ошибки. Здесь имеется ввиду что к сети 192.168.5.0/24 (которой нет на сервере) нужно идти через роутер 192.168.0.10. Сервер при этом должен сам быть в сети 192.168.0.0/24 (в одной сети с роутером). И роутер уже должен знать про 192.168.5.0/24. Я в процессе написания статьи менял сети, это может путать, поправлю.

      Ответить

Оставьте комментарий