Настройка сети и интернета в Debian/Ubuntu - часть 1 - Настройка сетевых интерфейсов

Здравствуйте, товарищи линуксоиды ;[

networkВ данном топике я хочу рассказать всё что может потребоваться для настройки сети и подключения к интернету в linux. Я буду рассматривать на примере своего любимого дистрибутива - Debian, но я думаю это будет действительно и для других дистрибутивов, особенно для Ubuntu, т.к. эти дистрибутивы близкие родственники. Итак, приступим...

Настройка сетевых интерфейсов

Первым делом мы рассмотрим конфигурирование самих сетевых интерфейсов. Для этих целей в ОС Linux используется команда ifconfig.

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

Для того что-бы просмотреть информацию о сетевых интерфейсах выполните команду ifconfig -a. В результате вы получите полный перечень всех сетевых интерфейсов вашего компьютера в не зависимости от того активны они или нет:

ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:b3:65:78:12:a2  
          inet addr:10.32.1.40  Bcast:10.32.3.255  Mask:255.255.252.0
          inet6 addr: fe80::2b3:65ff:fe78:12a2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:108514 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52791 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:53877045 (51.3 MiB)  TX bytes:7714438 (7.3 MiB)
          Interrupt:17

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:1567 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1567 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:49660 (48.4 KiB)  TX bytes:49660 (48.4 KiB)

Как вы видите данная команда выводит такую информацию, как ip-адрес (inet addr), mac-адрес (HWaddr), маска подсети (Mask), статистика по переданным/принятым пакетам (RX packets - полученные пакеты, TX packets - переданные пакеты). В моём случае команда вывела информацию о двух сетевых интерфейсах: eth0 и lo. Рассмотрим каждый из них в отдельности. Первый - это сетевая карта ethernet имеет ip-адрес 10.32.1.40, маску подсети - 255.255.252.0 и mac-адрес - 00:b3:65:78:12:a2. Второй - lo или local loopback (локальная петля) используется для того, что-бы компьютер мог обращаться к самому себе и имеет по-умолчанию ip-адрес 127.0.0.1 на всех компьютерах. Оба интерфейса запущены, это можно определить по четвёртой строке, как вы видите она начинается со слова "UP".

Команда ifconfig с параметром -a выводит информацию о всех сетевых интерфейсах, если же этот параметр опустить, то будет выведена информация только о активных (запущенных) сетевых интерфейсах.

Активация/дезактивация интерфейса

Для того что-бы активировать/дезактивировать сетевой интерфейс необходимо воспользоваться уже знакомой нам командой ifconfig передав первым параметром название, а вторым одно из ключевых слов up или down. Также вы можете воспользоваться командами ifup и ifdown которым нужно передать название интерфейса. Пример:

ifconfig
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:1567 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1567 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:49660 (48.4 KiB)  TX bytes:49660 (48.4 KiB)
ifconfig eth0 up
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:b3:65:78:12:a2  
          inet addr:10.32.1.40  Bcast:10.32.3.255  Mask:255.255.252.0
          inet6 addr: fe80::2b3:65ff:fe78:12a2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:108514 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52791 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:53877045 (51.3 MiB)  TX bytes:7714438 (7.3 MiB)
          Interrupt:17

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:1567 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1567 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:49660 (48.4 KiB)  TX bytes:49660 (48.4 KiB)

Настройка параметров сетевого интерфейса

Перейдем непосредственно к настройке параметров интерфейсов. Разберем на примере. Сначала настроим ip-адрес интерфейса eth0

ifconfig eth0 10.32.1.40

Просто указываем название интерфейса и адрес в стандартном формате. Далее настроим маску подсети:

ifconfig eth0 netmask 255.255.252.0

Здесь тоже всё просто, указали название интерфейса, ключевое слово netmask и собственно саму маску подсети. Иногда может понадобится сменить mac-адрес интерфейса, особенно с этим часто встречаются при смене оборудования к адресу которого привязана авторизация у интернет-провайдера. В этом нам тоже может помочь утилита ifconfig:

ifconfig eth0 hw ether 00b3657812a2

Сохранение параметров после перезагрузки

С настройкой интерфейсов вроде разобрались. Но при перезагрузке системы вы увидите, что параметры не сохраняются. Для того что-бы интерфейс автоматически конфигурировался при каждом старте системы нам нужно прописать все параметры в файле /etc/network/interfaces. Ниже я приведу пример своего файла interfaces и мы сможем на нём разобраться в структуре описания параметров интерфейсов.

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
    address 10.32.1.40
    netmask 255.255.252.0
    network 10.32.0.0
    broadcast 10.32.3.255
    gateway 10.32.0.1
    dns-nameservers 10.32.0.1
    dns-search dizballanze

На данном этапе нас не интересуют параметры маршрутизации и серверов имён, об этом мы поговорим в следующем топике, поэтому последние 3 строки мы не рассматриваем. Итак, у нас есть секции iface каждая из которых описывает один сетевой интерфейс. Также у нас секции allow-* которые описывают правила по которым должны активироваться интерфейсы. Теперь рассмотрим подробнее вторую секцию iface файла. Первая строка секции содержит директиву address, которая задаёт ip-адрес интерфейса. Директива netmask задаёт маску подсети, network - адрес подсети, broadcast - широковещательный адрес. Основные параметры мы настроили, осталось только установить mac-адрес. Здесь всё немного сложнее, нам необходимо написать простой bash-скрипт, который будет запускаться перед активацией интерфейса. Для этого создадим от пользователя root файл в директории /etc/network/if-pre-up.d и назовем его например init. В файле будет содержаться уже знакомая нам команда:

#! /bin/sh
ifconfig eth0 hw ether 00b3657812a2

Теперь перед активацией интерфейсов будет запущена программа ifconfig, которая выставит нужный нам аппаратный адрес. На этом первая часть статьи окончена. В следующих частях я планирую рассказать про настройку маршрутизации и dns. Спасибо за внимание, вопросы в комментах!

Настройка сети и интернета в Debian/Ubuntu – часть 2 – DHCP, DNS, маршрутизация