Настройка сети в Debian
Настройка сети в Debian
В этой статье я опишу простую настройку сети для сервера под управлением ОС Debian 5 (Lenny). Всё, что описано в этой статье так же может быть использовано и для настройки сети в Debian 6 (Squeeze). Изначально рассматривалась настройка сервера с одной сетевой картой, но со временем было решено написать цикл статей по Debian, в которых более подробно описывается установка и настройка коммуникационного сервера класса SOHO. Теперь эту статью можно рассматривать как руководство по настройке сети как для сервера с одной сетевой картой, так и для внешнего интерфейса коммуникационного сервера. Настройка сети так же подразумевает первичную настройку системы разрешения имён. В этой статье мы коснёмся этой темы вскользь. Подробнее об этом будет написано в статье «Разрешение имён в Debian». И так начнём. Обычно первичная настройка сети происходит ещё на этапе установки. Об этом можно прочесть в моей статье «Установка Debian на сервер». Если по какой-то причине это не было сделано при установке, то мы с вами попытаемся решить проблемы с сетью и настроить наш сервер.
Установка сетевой карты
В первую очередь нужно убедиться, что сетевые карты установлены, а если они интегрированы в материнскую плату, то включены в BIOSе, а так же подключены сетевые кабели. Проверим видит ли система наши сетевые карты (интерфейсы). Для этого смотрим сообщения ядра, которые выдавались при загрузке:
# dmesg | grep eth
В параметре команды grep мы написали eth. В Linux ядро определяет сетевые интерфейсы как eth0, eth1 и так далее. Так же можно вывести список устройств с помощью следующей команды:
# lspci | grep Ether
Убеждаемся что, система видит сетевые интерфейсы. Если на этом этапе вы получаете пустые строки или сообщения об ошибках, значит оборудование: либо не подключено, либо не исправно, либо не совместимо. Подразумевается, что при установке Debian 6 (Squeeze) использовался специальный набор проприетарных драйверов. В первом случае ещё раз проверяем правильность включения сетевой карты, поддержку 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 auto eth0
В комментариях к файлу написано, что этот файл описывает доступные системе сетевые интерфейсы и как их активировать. Для получения большей информации следует посмотреть руководство 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.p3.ru
PING p3.ru (195.182.8.32) 56(84) bytes of data. 64 bytes from www.p3.ru (195.182.8.32): icmp_req=1 ttl=64 time=0.024 ms 64 bytes from www.p3.ru (195.182.8.32): icmp_req=2 ttl=64 time=0.017 ms 64 bytes from www.p3.ru (195.182.8.32): icmp_req=3 ttl=64 time=0.016 ms 64 bytes from www.p3.ru (195.182.8.32): icmp_req=4 ttl=64 time=0.018 ms --- p3.ru ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 4997ms rtt min/avg/max/mdev = 0.016/0.019/0.024/0.004 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.123.1 eth0
Проверяем работоспособность сети так же, как в предыдущем разделе. Настройка динамического IP-адреса
В некоторых случаях сервер может получать динамический IP-адрес. Чаще всего это зарезервированный адрес или псевдодинамический. Т. е. на DHCP-сервере производится привязка определённого mac-адреса к определённому ip-адресу (об этом читайте в статье «Настройка DHCP в Debian»). Такая ситуация может встретиться и в локальной сети, но чаще всего она встречается тогда, когда провайдер выдает 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