Автор Тема: Общие принципы устройства сети (для совсем новичков)  (Прочитано 17111 раз)

Azure

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2118
  • Карма: +275/-114
  • Обычно я му-р-р-р-чу
    • Просмотр профиля
    • Exilibris Web Development
Перенесено с форума Убунтологии
Авторы: Neonboy, WonderTalik, forkostya.


В данном посте автор "на апельсинах" пытается рассказать, как устроены компьютерные сети. У многих новичков, установивших на свой компьютер Ubuntu, возникают проблемы с настройкой сети. Постараемся дать вам представление о сети и разрушить миф о сложностях процесса настройки.

Принцип устройства сети.

Адрес компьютера (IP-адрес):
Компьютеры связываются между собой с помощью адресов, представленных цифрами. Cистема исчисления у компьютеров двоичная, т.е. адрес компьютера представляет собой последовательность из нулей и единиц (1010010101....) и длина этой последовательности равна 32 знакам. Для удобства и наглядности для человека эту последовательность цифр разбили на 4 части и перевели в десятичную систему. Получилось, что 32 единицы = 255.255.255.255 (8 единиц = 2 в 8 степени - 1 = 256 - 1 = 255).
На апельсинах: телефонная связь тоже работает с цифровыми адресами (495)123-45-67.
Маска подсети:
Для удобства компьютера и наглядности пользователя, разбили этот адрес так, что первая часть 32-значного адреса отвечает за адрес подсети, а вторая часть - за адрес хоста. Но разделили не пополам. Для определения какая часть адреса относится к подсети используется маска. Например, 255.255.255.0 - последовательность из 24 единиц и 8 нулей - говорит о том, что первые 24 символа (бита) адреса - подсеть, а остальные 8 бит - адрес хоста в этой подсети. Это нужно для того, чтобы компьютер, формируя пакет для другого компьютера, посмотрел на свою и его подсеть и сравнив их понял, куда слать пакет. Если подсеть одинаковая - значит напрямую компьютеру-получателю, если разная - то шлюзу.
На апельсинах: в Москве телефонные номера могут быть в коде 495 или 499. Когда мы смотрим на весь номер (499)123-45-67 мы автоматически понимаем, в одной "подсети" мы с ним или нет. Если в одной, то звоним напрямую 1234567, а если в разных, то через "шлюз" - восьмерку.
Шлюз:
Когда я говорю "напрямую слать пакет туда-то", или "слать пакет шлюзу", я должен сразу рассказать о том, как же это происходит: сформированный пакет просто выбрасывается в провод, а дальше его ловят все, до кого он дошел. По идее, компьютеры проверяют информацию в пакете о получателе (его адресе) со своими данными и в случае ошибки просто отбрасывают его. Информация, которая обязательно присутствует в пакете: MAC-адрес получателя и/или ip-адрес получателя (ну и конечно отправителя - т.е. получателю надо сообщить кому отвечать). Когда мы посылаем пакет через шлюз, то компьютер указывает MAC-адрес шлюза (который он сам получит из ip-адреса шлюза с помощью arp-запроса) + ip-адрес конечного компьютера.
На апельсинах: Чтобы соединиться с "Ларисой Ивановной" (у которой для примера нет "прямого городского" номера) надо позвонить в приемную организации, где она работает и попросить секретаря перевести звонок на внутренний номер "Ларисы Ивановны". Телефонный номер секретаря и есть аналог MAC-адресу шлюза.
DNS(domain name server) - сервер доменных имен:
Когда мы пытаемся подключиться к "страничке" http://www.yandex.ru, компьютер должен сформировать пакет-запрос для удаленного компьютера, на котором эта страничка находится. Для того, чтобы узнать адрес этого компьютера ему необходимо сначала просмотреть локальный файл hosts (в Windows - C:/windows/system32/drivers/etc/hosts, в Linux - /etc/hosts) и если там нет записей с этим именем, то послать запрос ДНС-серверу, который получит http://www.yandex.ru и вернет его 32-битный адрес. Если же ДНС-сервер не отвечает, то мы отправляем запрос второму ДНС-серверу.
На апельсинах: Сначала идем в записную книжку своего мобильного телефона и ищем там "Серёгу", если там его нет, то звоним Антону (он знает номера всех людей на планете). Антон нам говорит номер Серёги, после чего звоним Сереге. Если же Антон сам не поднимает трубку, то звоним его брату Коляну, у них, по-идее, одна записная книжка на двоих.

*STOP* если Вам кто-то сказал, что у него не работает интернет, проверьте, может быть у него просто не прописаны или прописаны неправильные ДНС-сервера. Проверить это можно "попинговав" сначала yandex.ru, а потом его ip-адрес 77.88.21.11ping yandex.ru -c 1
ping 77.88.21.11 -с 1

Типы адресов, подсеть:
Все адреса делятся на два типа: уникальные (белые, реальные, внешние) и не уникальные (серые, внутренние). Было много причин для их разделения, например:
  • ограниченное количество реальных адресов (подключенных к услугам интернет компьютеров в мире намного больше, чем возможное количество внешних адресов)
  • какая-никакая защищенность (благодаря фильтрации на шлюзах) и т.п
Так уж договорились, что адреса, относящиеся к подсетям, представленным ниже, не используются в интернете в качестве реальных адресов.
  • 10.0.0.0 — 10.255.255.255 (одна сеть класса A)
  • 172.16.0.0 — 172.31.255.255 (шестнадцать сетей класса B)
  • 192.168.0.0 — 192.168.255.255 (256 сетей класса C)
Это и есть "серые", "внутренние" адреса. Их используют в обособленных компьютерных сетях, которые если и имеют подключение к интернет, то через особый компьютер или устройство - роутер (шлюз), у которого есть внешний адрес (ну или он может быть в сети с тем компьютером, у которого внешний адрес и т.д.). Особый он тем, что у него настроен forwarding (пропуск) пакетов из одной сети в другую через него. Если у этого шлюза вторая сеть - интернет, и адрес как раз реальный (внешний), то необходимо настроить на нем NAT(network address translation) - технологию трансляции сетевых адресов . Это делается для того, чтобы сетевые пакеты из локальной сети, прошедшие через него в интернет не имели серого адреса-отправителя, т.к. в этом случае сервер, для которого предназначен пакет, не поймет, кому именно из миллионов локальных сетей возвращать ответный пакет. При использовании NAT, шлюз меняет адрес-отправителя на свой внешний адрес, а у себя записывает "ответные пакеты с этого сервера перенаправлять такому-то компьютеру...". В этом случае используется SNAT (source network address translation).
На апельсинах: Вы просите своего друга Васю (шлюз) "по дороге" сделать для Вас ксерокопию Вашего реферата(пакет) о компьютерных сетях. Девочка за ксероксом(адресат) общается с Васей, а копию доклада(ответный пакет) получаете Вы.
Если же нам необходимо изменять адрес получателя (например, в нашей локальной сети есть почтовый сервер с серым адресом, а мы бы хотели иметь к нему доступ из интернета), то можно использовать на нашем шлюзе DNAT (destination network address translation) или, как говорят в простонародье "проброс портов". То есть мы указываем в правилах файервола, что пакеты, предназначенные нам и пришедшие на порт 110 перенаправлять на внутренний серый адрес почтового сервера.
На апельсинах: Вы отправили факс с пометкой(порт) "Для Ларисы Ивановны". Умненькая девочка-секретарь(шлюз), знает(правило) что "Лариса Ивановна" --  глав.бух и значит этот факс надо отнести в 123 комнату
« Последнее редактирование: 23 Август 2011, 19:44:46 от Azure »

Azure

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2118
  • Карма: +275/-114
  • Обычно я му-р-р-р-чу
    • Просмотр профиля
    • Exilibris Web Development
Определение состояния сетевых средств.

Если рассматривать самое простое соединение, т.е. компьютер в локальной сети и получает настройки автоматически (какое-либо устройство в подсети обеспечивает "раздачу" адресов посредством DHCP(Dynamic Host Configuration Protocol) протокола динамической конфигурации узла, то для установки сетевого соединения достаточно выполнить командуsudo dhclient eth0*STOP*команду dhclient надо запускать с правами суперпользователя

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

В Ubuntu имена сетевых устройств принимают вид ethN, где N - число, означающее номер устройства связи в системе. Нумерация устройств начинается с нуля. Если в компьютере две сетевых карты, то они получат имена eth0 и eth1. Если в сетевую карту ethN вставлен сетевой провод, соединяющий его с другим работающим устройством (модемом, роутером или свитчом), то в выводе команды ifconfig для данного интерфейса будет присутствовать RUNNING, можно увидеть это на рисунке выше в интерфейсе eth1.
Разберем теперь немного подробнее.
Интерфейс eth0 - это карта Ethernet, к которой можно подключить сетевой кабель. В текущий момент сетевой кабель не подключен, поэтому интерфейс не активен и для него не отображается ip-адрес, широковещательный адрес (другими словами "все устройства подсети") и маска подсети:


Интерфейс eth1 - вторая карта Ethernet. Сетевой кабель подлючен, интерфейс активен, присвоен ip(10.7.9.6) и маска подсети(255.0.0.0):


Интерфейс lo - интерфейс обратной петли и позволяет компьютеру обращатся к самому себе. Интерфейс имеет ip-адрес 127.0.0.1 и необходим для нормальной работы системы:


Команда ifconfig -a удобна в тех случаях, когда надо быстро выяснить состояние интерфейсов, в частности, если необходимо узнать их IP-адреса. Помимо сведений о конфигурации сетевых интерфейсов, команда выдает еще много полезной информации, например, количество отправленных и полученных пакетов(параметры RX и TX).
Еще один интересный адрес, который можно увидеть у сетевой карты - параметр HWaddr (Hardware Address), аппаратный адрес). Его еще часто называют MAC-адресом, где аббревиатура МАС(Media Access Control) - управление доступом к среде. Это 48-разрядный серийный номер сетевого адаптера, присваиваемый производителем. Так как lo создан программно, у него не может быть аппаратного адреса.
« Последнее редактирование: 23 Август 2011, 18:53:48 от Azure »

Azure

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2118
  • Карма: +275/-114
  • Обычно я му-р-р-р-чу
    • Просмотр профиля
    • Exilibris Web Development
Настройка сетевого интерфейса посредством ifconfig

*STOP*Все эти настройки действительны лишь до перезагрузки системы.

Команда ifconfig позволяет сконфигурировать сетевой интерфейс и, кроме того, имеет очень широкие возможности, для подробной информации: man ifconfig
*STOP*Для изменения параметров сети необходимо использовать sudo, т.е. в этой части настроек Вам необходимы права суперпользователя

Если компьютер имеет статический ip-адрес, не имеет доступа к другим сетям (в том числе интернет), то команда настройки сетевого интерфейса будет выглядеть следующим образом: sudo ifconfig ethN параметры. Например sudo ifconfig eth0 10.7.9.6 netmask 255.255.0.0 upПараметры:
  • down - остановить интерфейс:
sudo ifconfig eth0 down
  • up - поднять интерфейс:
sudo ifconfig eth0 up
  • IP-адрес - для его изменения используется следующий формат команды:
sudo ifconfig eth1 10.7.9.6
  • Маска подсети - определить диапазон адресов для подсети:
sudo ifconfig eth1 netmask 255.0.0.0
Иногда администраторы сетей (в том числе и провайдеры) делают привязку к МАС-адресу сетевой карты. В случае смены сетевой карты или всего системного блока к такой сети невозможно будет подключиться. Можно позвонить и попросить изменить эту информацию, но днем провайдеру можно не дозвониться, а ночью он может спать. В таком случае можно изменить МАС-адрес на тот, что был у предыдущей сетевой карты вручную.
Но сначала нужно выяснить МАС-адрес по умолчанию, при помощи уже знакомой вам команды ifconfig без параметров. После этого дать команду, которая заменит текущий МАС-адрес на новый: sudo ifconfig eth1 hw ether 00:e0:4c:d0:99:28Все действия можно выполнить одной командой, например так: sudo ifconfig eth1 down && ifconfig eth1 10.7.9.7 netmask 255.0.0.0 hw ether 00:e0:4c:d0:99:28 up*STOP*Знак && - означает успешное выполнение предыдущей команды (т.е. если ifconfig eth1 down будет выполнено, передается на управление следующая команда ifconfig eth1 10.7.9.7 netmask 255.0.0.0 hw ether 00:e0:4c:d0:99:28 up).
« Последнее редактирование: 23 Август 2011, 18:54:23 от Azure »

Azure

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2118
  • Карма: +275/-114
  • Обычно я му-р-р-р-чу
    • Просмотр профиля
    • Exilibris Web Development
Настройка сети редактированием файла /etc/network/interfaces

1. Удалим Network Manager (выбирайте: или вручную, или с Network Manager - автоматом ;-)): sudo apt-get remove network-manager*STOP* В принципе можно и не удалять, но работать с измененным /etc/network/interfaces он не будет!
2. Введите команду ifconfig -a, отрывающую перед вами список всех(активных и неактивных) сетевых устройств, которые именуются как eth0, eth1, eth2 и т.д. В данном примере команда без ключа , так как все сетевые интерфейсы активны.


На скриншоте вы видите три устройства:
  • еth0 — первая сетевая карта.
  • eth1 — вторая сетевая карта.
  • lo — локальная петля.
В данном случае локальная сеть подключена к сетевой карте eth1, поэтому далее в примерах будет использоваться eth1.
3. Почти вся информация о настройках сети и методах ее активации, хранится в файле /etc/network/interfaces, именно с ним мы и будем работать, используя ваш любимый редактор.
Посмотрим на его содержимое:cat /etc/network/interfacesauto lo - говорит о том, что интерфейс lo поднимается автоматически при загрузке системы.
4. Добавьте в файл строки:sudo sed -i '$a\
auto eth1\
iface eth1 inet static\
address 10.7.9.6\
netmask 255.0.0.0\
gateway 10.0.0.1\
' /etc/network/interfaces
Рассмотрим подробнее:
  • auto eth1 - сетевая карта eth1 поднимается автоматически во время загрузки системы.
  • iface eth1 inet static - указывает, что интерфейс (iface) сетевой карты (eth1) находится в диапазоне адресов ipv4 (inet) со статическим ip (static).
  • address 10.7.9.6 - статический ip адрес, тут вы должны записать свой.
  • netmask — стандартная маска сети.
  • gateway - ip адрес основного шлюза.
5. Запросите у вашего провайдера услуг Интернет (Internet Service Provider, ISP) адреса основного и вспомогательного серверов DNS, и опишите их в файле /etc/resolv.conf. На примере я укажу адрес своего DNS провайдера, вы должны ввести свои данные.sudo sed -i '1i\
nameserver 10.0.0.1\
nameserver 172.16.0.1\
' /etc/resolv.conf
*STOP*Можно использовать не только DNS провайдера, но и глобальные DNS, например, того же Google 8.8.8.8 и 8.8.4.4 или любой из 4.2.2.1, 4.2.2.2, ... и т.д. до 4.2.2.6
6. Для настройки DHCP и получения сетевых параметров автоматически, нужно добавить две строчки (пусть для примера так поднимется карта eth0). sudo sed -i '$a\
auto eth0\
iface eth0 inet dhcp\
' /etc/network/interfaces

Ваш файл /etc/network/interfaces в итоге проделанных манипуляций должен будет выглядеть так:auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
address 10.7.9.6
netmask 255.0.0.0
gateway 10.0.0.1

auto eth0
iface eth0 inet dhcp

Если по каким-либо причинам вы хотите чтобы при загрузке у сетевой карты eth1 был другой MAC-адрес, для этого нужно дописать строчку hwaddress ether 00:e0:4c:d0:99:28sudo sed -i '/auto eth1/a\hwaddress ether 00:e0:4c:d0:99:28' /etc/network/interfaces
« Последнее редактирование: 23 Август 2011, 19:04:22 от Azure »