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


В этой статье я опишу простую настройку сети для сервера под управлением ОС Debian 5 (Lenny). Рассмотрим настройку сервера с одной сетевой картой. Это может быть файловый сервер, сервер баз данных или сервер ip-телефонии. Разговор о настройке идёт в контексте стека протоколов TCP/IP четвёртой версии. Настройка сети так же подразумевает первичную настройку системы разрешения имён. В этой статье мы коснёмся этой темы вскользь. Подробнее об этом читайте «Разрешение имён в Debian 5 (Lenny)». И так начнём. Обычно первичная настройка сети происходит ещё на этапе установки. Об этом можно прочесть в моей статье «Установка Debian 5 (Lenny)». Если по какой то причине это не было сделано при установке, то мы с вами попытаемся решить проблемы с сетью и настроить наш сервер.
Установка сетевой карты

В первую очередь нужно убедиться, что сетевые карты установлены, а если они интегрированы в материнскую плату, то включены в BIOSе, а так же подключены сетевые кабели. Проверим видит ли система наши сетевые карты (интерфейсы). Для этого смотрим сообщения ядра, которые выдавались при загрузке:

# dmesg | grep eth

В параметре команды grep мы написали eth. В Linux ядро определяет сетевые интерфейсы как eth0, eth1 и так далее. Так же можно вывести список устройств с помощью следующей команды:

# lspci | grep Ether

Убеждаемся что, система видит сетевые интерфейсы. Если на этом этапе вы получаете пустые строки или сообщения об ошибках, значит оборудование: либо не подключено, либо не исправно, либо не совместимо. В первом случае ещё раз проверяем правильность включения сетевой карты, поддержку BIOS и т. д. Во втором и третьем случае производим замену оборудования. Если проблема возникла после сборки своего ядра — проверяем ядро. Данная информация выходит за рамки этой статьи, но в последующих статьях мы с вами рассмотрим сборку, проверку и настройку ядра.
Настройка статического IP-адреса

И так, наше оборудование функционирует нормально. Нам нужно настроить статический IP-адрес со следующими параметрами: IP-адрес 192.168.123.254, маска подсети 255.255.255.0, основной шлюз 192.168.123.1.
Сначала посмотрим вывод команды ifconfig:

# ifconfig

или

$ sudo ifconfig

Второй вариант команды я написал для тех, кто при установке запретил вход суперпользователя. Далее в статье я не буду дублировать команды, просто запомните: если в начале кода есть значок #, значит команда выполняется от имени суперпользователя. Те, кто запретил вход суперпользователя в систему выполняют её с помощью sudo.
Если всё было настроено правильно ещё при установке системы, мы увидим следующее:
eth0
Link encap:Ethernet HWaddr 08:00:27:f1:d9:29

inet addr:192.168.123.254 Bcast:192.168.123.255 Mask:255.255.255.0

inet6 addr: fe80::a00:27ff:fef1:d929/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:6 errors:0 dropped:0 overruns:0 frame:0

TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:720 (720.0 B) TX bytes:852 (852.0 B)

Interrupt:10 Base address:0xd020

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:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)


В первой строке мы видим тип подключения и mac-адрес (по другому — физический адрес). Во второй строке ip-адрес, широковещательный адрес и маску подсети. Третья строка относится к шестой версии стека протоколов TCP/IP, но об этом разговор пойдёт в одной из следующих статей. Когда мы видим RUNNING в четвертой строке это означает, что сетевой кабель подключен. Далее следует статистическая информация. Если настройка сети не удалась при установке, то в лучшем случае мы увидим настроенным только локальный интерфейс:
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:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)


А то и не увидим никакой информации. В общих случаях, для проверки или устранения неисправностей можно настроить сетевые интерфейсы с помощью команд ifconfig и route. Об этом будет написано ниже в этой же статье. А пока приступим редактированию файлов конфигураций. Вообще, перед редактированием конфигурационных файлов для сети следует остановить сетевой интерфейс. Делается это следующим образом:

# ifdown eth0

Но в нашем случае интерфейс eth0 ещё не сконфигурирован и мы получим сообщение об ошибке:

interface eth0 not configured

Тогда, для начала, проверяем существование файла /etc/network/interfaces. Если он не существует, то создаём его, если существует, то редактируем текстовым редактором:

# vim /etc/network/interfaces

Для сервера с одним сетевым интерфейсом у нас должно получиться следующее:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.123.254
netmask 255.255.255.0
network 192.168.123.0
broadcast 192.168.123.255
gateway 192.168.123.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 213.177.96.1 213.177.97.1
dns-search aitishnik

В комментариях к файлу написано, что этот файл описывает доступные системе сетевые интерфейсы и как их активировать. Для получения большей информации следует посмотреть руководство interfaces(5). В предпоследней строке идёт перечисление через пробел dns-серверов, у вас там, естественно должны быть адреса dns-серверов вашего провайдера или вашей сети. В последней строке указывается ваша рабочая группа или домен. В моём примере это aitishnik.
Затем редактируем файл /etc/resolv.conf:

search aitishnik
nameserver 213.177.96.1
nameserver 213.177.97.1

В первой строке указываем название своей рабочей группы или домена после слова search. Во второй и третьей строках после слов nameserver пишем ip-адреса DNS-серверов вашей сети или вашего провайдера в зависимости от конфигурации вашей сети. Если DNS-сервер один, то третью строку не пишем. Например, если наш сервер стоит за интернет-шлюзом (о настройке сети для интернет-шлюза речь идёт в одноимённой статье) и он же является DNS-сервером, то файл /etc/resolv.conf будет выглядеть так:

search aitishnik
nameserver 192.168.123.1

Теперь нужно активировать сетевой интерфейс:

# ifup eth0

И перезапустить сетевые службы:

# /etc/init.d/networking restart

Проверяем что у нас получилось:

# ifconfig
eth0
Link encap:Ethernet HWaddr 08:00:27:f1:d9:29

inet addr:192.168.123.254 Bcast:192.168.123.255 Mask:255.255.255.0

inet6 addr: fe80::a00:27ff:fef1:d929/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:6 errors:0 dropped:0 overruns:0 frame:0

TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:720 (720.0 B) TX bytes:852 (852.0 B)

Interrupt:10 Base address:0xd020



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:8 errors:0 dropped:0 overruns:0 frame:0

TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:560 (560.0 B) TX bytes:560 (560.0 B)


Проверяем работу сети. Сначала проверяем локальный интерфейс (параметр -с 4 подразумевает отправку четырех пакетов):

$ ping 127.0.0.1 -с 4

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.245 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.501 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.140 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.041 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 0.041/0.231/0.501/0.172 ms

Затем проверяем сетевой интерфейс («пингуем» сами себя):

$ ping 192.168.123.254 -с 4

PING 192.168.123.254 (192.168.123.254) 56(84) bytes of data
64 bytes from 192.168.123.254: icmp_seq=1 ttl=64 time=0.135 ms
64 bytes from 192.168.123.254: icmp_seq=2 ttl=64 time=0.319 ms
64 bytes from 192.168.123.254: icmp_seq=3 ttl=64 time=0.170 ms
64 bytes from 192.168.123.254: icmp_seq=4 ttl=64 time=0.323 ms

--- 192.168.123.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.135/0.236/0.323/0.087 ms

Теперь основной шлюз:

$ ping 192.168.123.1 -с 4

PING 192.168.123.1 (192.168.123.1) 56(84) bytes of data
64 bytes from 192.168.123.1: icmp_seq=1 ttl=255 time=1.85 ms
64 bytes from 192.168.123.1: icmp_seq=2 ttl=255 time=2.02 ms
64 bytes from 192.168.123.1: icmp_seq=3 ttl=255 time=1.51 ms
64 bytes from 192.168.123.1: icmp_seq=4 ttl=255 time=3.12 ms

--- 192.168.123.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3016ms
rtt min/avg/max/mdev = 1.514/2.128/3.123/0.605 ms

И какой-нибудь удалённый хост по имени:

$ ping www.aitishnik.ru

PING www.aitishnik.ru (195.208.0.15) 56(84) bytes of data
64 bytes from 195.208.0.15: icmp_seq=1 ttl=56 time=119 ms
64 bytes from 195.208.0.15: icmp_seq=2 ttl=56 time=112 ms
64 bytes from 195.208.0.15: icmp_seq=3 ttl=56 time=113 ms
64 bytes from 195.208.0.15: icmp_seq=4 ttl=56 time=114 ms

--- www.aitishnik.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3030ms
rtt min/avg/max/mdev = 112.818/114.989/119.785/2.821 ms

На этом настройка статического IP-адреса для сервера с одним сетевым интерфейсом закончена.
Команды ifconfig и route

В случаях поиска неисправностей, для отладки и т.д. сетевые интерфейсы можно настроить с помощью команд ifconfig и route. Настроим сначала локальный интерфейс, если он не настроен, тем более что его нужно настроить в любом случае. Он используется для связи программ IP-клиентов с IP-серверами, запущенными на этой же машине :

# ifconfig lo 127.0.0.1

В параметрах команды не указываем маску подсети, т. к. по умолчанию устанавливается маска подсети 255.0.0.0
Проверяем:

$ ping 127.0.0.1 -с 3

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.276 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2014ms
rtt min/avg/max/mdev = 0.115/0.173/0.276/0.073 ms

Для нашего сетевого интерфейса даём команду:

# ifconfig eth0 192.168.123.254 netmask 255.255.255.0 broadcast 192.168.123.255 up

Проверяем:

$ ping 192.186.123.254 -c 3

PING 192.168.123.254 (192.168.123.254) 56(84) bytes of data.
64 bytes from 192.168.123.254: icmp_seq=1 ttl=64 time=0.312 ms
64 bytes from 192.168.123.254: icmp_seq=2 ttl=64 time=2.16 ms
64 bytes from 192.168.123.254: icmp_seq=3 ttl=64 time=0.248 ms

--- 192.168.123.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2025ms
rtt min/avg/max/mdev = 0.248/0.909/2.169/0.891 ms

Перед тем, как добавить маршруты посмотрим таблицу маршрутизации:

# route

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface

Для локального интерфейса выполняем команду:

# route add -net 127.0.0.0 netmask 255.0.0.0 lo

А для сетевого интерфейса выполняем сначала:

# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

А затем добавим основной шлюз:

# route add default gw 192.168.0.1 eth0

Посмотрим опять таблицу маршрутизации:

# route
Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

localnet * 255.255.255.0 U 0 0 0 eth0

loopback * 255.0.0.0 U 0 0 0 lo

default 192.168.123.1 0.0.0.0 UG 0 0 0 eth0

Проверяем работоспособность сети так же, как в предыдущем разделе.
Настройка динамического IP-адреса

В некоторых случаях сервер может получать динамический IP-адрес. Чаще всего это зарезервированный адрес или псевдодинамический. Т. е. на DHCP-сервере производится привязка определённого mac-адреса к определённому ip-адресу (об этом читайте в статье «Настройка DHCP в Debian 5 (Lenny)»). Такая ситуация может встретиться и в локальной сети, но чаще всего она встречается тогда, когда провайдер выдает ip-адреса динамически. В этом случае файл /etc/network/interfaces выглядит следующим образом:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Вот и всё!

http://www.aitishnik.ru

Обновлено: 13.03.2015