Здравствуйте, товарищи линуксоиды ;[
В данном топике я хочу рассказать всё что может потребоваться для настройки сети и подключения к интернету в 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, маршрутизация