Настройка сети вручную

В данной теме я постараюсь «на апельсинах» рассказать, как устроены компьютерные сети, а WonderTalik расскажет вам о настройке сети.

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


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

Компьютеры связываются между собой с помощью адресов, представленных цифрами. Cистема счисления у компьютеров двоичная, т.е. адрес компьютера представляет собой последовательность из нулей и единиц (1010010101...) и длина этой последовательности равна 32 знакам. Для удобства и наглядности для человека эту последовательность цифр разбили на 4 части и перевели в десятичную систему. Получилось, что 32 единицы = 255.255.255.255 (8 единиц = 2 в 8 степени — 1 = 256 — 1 = 255).

На апельсинах: телефонная связь тоже работает с цифровыми адресами (4951234567).

Маска подсети:

Для удобства компьютера и наглядности пользователя, разбили этот адрес, и получилось, что первая часть 32-значного адреса отвечает за адрес подсети, а вторая часть — за адрес хоста. Но разделили не пополам. Для определения длины подсети используется маска. Например, 255.255.255.0 — последовательность из 24 единиц и 8 нулей — говорит о том, что первые 24 символа (бита) адреса — подсеть, а остальные 8 бит — адрес хоста в этой подсети.

Это нужно для того, чтобы компьютер, формируя пакет для другого компьютера, посмотрел на свою и его подсеть и, сравнив их, понял, куда слать пакет. Если подсеть одинаковая — значит напрямую компьютеру-получателю, если разная — то шлюзу.

На апельсинах: в Москве телефонные номера могут быть в коде 495 или 499. Когда мы смотрим на весь номер (4991234567), то автоматически понимаем, в одной «подсети» мы с ним или нет. Если в одной, то звоним напрямую 1234567, а если в разных, то через «шлюз» — восьмерку.

Шлюз:

Когда я говорю «напрямую слать пакет туда-то» или «слать пакет шлюзу», я должен сразу рассказать о том, как же это происходит: сформированный пакет просто выбрасывается в провод, а дальше его ловят все, до кого он дошел. По идее, компьютеры сверяют информацию о получателе в пакете со своими данными и в случае ошибки просто отбрасывают его.

Информация, которая нас интересует: MAC-адрес получателя, ip-адрес получателя. Когда мы посылаем пакет через шлюз, то компьютер указывает MAC-адрес шлюза (который он сам получит из ip-адреса шлюза с помощью arp-запроса) и ip-адрес конечного компьютера.

На апельсинах: раньше нужно было звонить «девушке» и просить её соединить с «Ларисой Ивановной». Номер девушки и есть аналогия MAC-адресу шлюза.

DNS:

Когда мы пытаемся подключиться к «страничке» http://www.yandex.ru, компьютер должен сформировать пакет-запрос для удаленного компьютера, на котором эта страничка находится.

Для того, чтобы узнать адрес этого компьютера, ему необходимо сначала просмотреть локальный файл hosts (в windows — C:/windows/system32/drivers/etc/hosts, в linux — /etc/hosts) и, если там нет записей с этим именем, то послать запрос ДНС-серверу, который получит http://www.yandex.ru и вернет его 32-битный адрес. Если же ДНС-сервер не отвечает, то мы отправляем запрос второму ДНС-серверу.

На апельсинах: сначала идем в записную книжку своего мобильного телефона и ищем там «Серёгу», если там его нет, то звоним Антону (он знает номера всех людей на планете). Антон нам говорит номер Серёги, после чего звоним Сереге. Если же Антон сам не поднимает трубку, то звоним его брату Коляну, у них по идее одна записная книжка на двоих.

Соответственно: если Вам кто-то сказал, что у него не работает интернет, проверьте, может быть, у него просто не прописаны или прописаны неправильно ДНС-сервера. Проверить это можно «попинговав» сначала yandex.ru, а потом его ip-адрес: 77.88.21.11.

Все адреса делятся на два типа: уникальные (белые, реальные, внешние) и неуникальные (серые, внутренние). Было много причин для их разделения, например:

  • ограниченное количество реальных адресов (подключенных к услугам интернет компьютеров в мире намного больше, чем возможное количество внешних адресов)
  • какая-никакая защищенность (благодаря фильтрации на шлюзах)
  • и т.п.
Так уж договорились, что адреса, относящиеся к подсетям, представленным ниже, не используются в интернете в качестве реальных адресов.

  • 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 (пропуск) пакетов из одной сети в другую через него. Если у этого шлюза вторая сеть — интернет, и адрес как раз реальный (внешний), то необходимо настроить на нем технологию транслирования сетевых адресов (network address translation, NAT).

Это делается для того, чтобы сетевые пакеты из локальной сети, прошедшие через него в интернет, не имели серого адреса-отправителя, т.к. в этом случае сервер, для которого предназначен пакет, не поймет, кому именно из миллионов локальных сетей возвращать ответный пакет. При использовании NAT шлюз меняет адрес отправителя на свой внешний адрес, а у себя записывает «ответные пакеты с этого сервера перенаправлять такому-то компьютеру...». В этом случае используется SNAT (source network address translation).

Если же нам необходимо изменять адрес получателя (например, в нашей локальной сети есть почтовый сервер с серым адресом, а мы бы хотели иметь к нему доступ из интернета), то можно использовать на нашем шлюзе DNAT (destination network address translation) или, как говорят в простонародье, «проброс портов». То есть мы указываем в правилах файервола, что пакеты, предназначенные нам и пришедшие на порт 110, перенаправлять на внутренний серый адрес почтового сервера.

Определение состояния сетевых средств

Если рассматривать самое простое соединение, т.е. компьютер в локальной сети и получает настройки автоматически, то необходимо выполнить команду:

sudo dhclient eth0

(команду dhclient надо запускать с правами суперпользователя)

Команда ifconfig отображает информацию только об активных сетевых интерфейсах.

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

ifconfig -a

ifconfig-result

В Ubuntu имена сетевых устройств принимают вид ethN, где N — число, означающее номер устройства связи в системе. Нумерация устройств начинается с нуля. Если в компьютере две сетевых карты, то они получат имена eth0 и eth1. Если в сетевую карту ethN вставлен сетевой провод, идущий в модем, роутер или свитч, будет написано RUNNING, можно увидеть это примером выше в интерфейсе eth1.

Интерфейс eth0 — это карта Ethernet, к которой можно подключить сетевой кабель. В текущий момент сетевой кабель не подключен, поэтому интерфейс неактивен, и для него не отображаются ip-адрес, широковещательный адрес и маска подсети:

ifconfig-eth0

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

ifconfig-eth1

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

ifconfig-lo

Команда ifconfig -a удобна в тех случаях, когда надо быстро выяснить состояние интерфейсов, в частности, если необходимо узнать их IP-адреса. Помимо сведений о конфигурации сетевых интерфейсов команда выдает еще много полезной информации, например, количество отправленных и полученных пакетов (параметры RX и TX).

Еще один интересный адрес, который можно увидеть у сетевой карты — параметр HWaddr (Hardware Address, аппаратный адрес). Его еще часто называют MAC — адресом (Media Access Control, управление доступом к среде). Это 48-разрядный серийный номер сетевого адаптера, присваиваемый производителем. Так как lo создан программно, у него не может быть аппаратного адреса.

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

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

В этой части настроек вам потребуются права суперпользователя, поэтому далее для изменения параметров сети необходимо использовать sudo.

Если компьютер имеет статический ip-адрес, не имеет доступа к другим сетям (в том числе интернет), то команда настройки сетевого интерфейса будет выглядеть следующим образом:

sudo ifconfig eth0 10.7.9.6 netmask 255.255.0.0 up

Подробности:

sudo ifconfig ethN параметры

Параметры:

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

&& — означает, успешное выполнение предыдущей команды. Т.е. если ifconfig eth1 down будет выполнено, передается на управление следующая команда ifconfig eth1 10.7.9.7 netmask 255.0.0.0 hw ether 00:e0:4c:d0:99:28 up

Все эти настройки действительны лишь до перезагрузки системы. Сделаем их постоянными следующим образом:

Настройка сети редактированием файла /etc/network/interfaces

1. Удалим Network Manager:

sudo apt-get remove network-manager

2. Введите команду ifconfig -a, открывающую перед вами список всех (активных и неактивных) сетевых устройств, которые именуются как eth0, eth1, eth4 и т.д. Я ввел без ключа , так как у меня все сетевые интерфейсы активны.

ifconfig

На скриншоте вы видите три устройства:
еth0 — первая сетевая карта.
eth1 — вторая сетевая карта.
lo — локальная петля.
У меня локальная сеть подключена к сетевой карте eth1, поэтому и в примерах будет использоваться eth1.

3. Почти вся информация о настройках сети и методах ее активации, хранится в файле /etc/network/interfaces, именно с ним мы и будем работать, используя ваш любимый редактор.

Откройте и посмотрите на его содержание:

sudo gedit /etc/network/interfaces

auto lo — говорит о том, что интерфейс lo поднимается автоматически при загрузке системы.

Добавьте в файл строки:

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


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. На примере я укажу адрес своего днс-провайдера, вы должны ввести свои данные. Откройте файл для редактирования:

sudo gedit /etc/resolv.conf

Вставьте свои данные:

nameserver 10.0.0.1
nameserver 172.16.0.1


Сохраните и закройте файл.

6. Для настройки DHCP и получения сетевых параметров автоматически, нужно добавить две строчки (пусть у меня так поднимется карта eth0).

Откройте файл:

sudo gedit /etc/network/interfaces

Вставьте строчки следующего содержания:

auto eth0
iface eth0 inet dhcp


Ваш файл будет выглядеть так:

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:28:

auto eth1 
iface eth1 inet static 
address 10.7.9.6 
netmask 255.0.0.0 
gateway 10.0.0.1 
hwaddress ether 00:e0:4c:d0:99:28


Несколько IP адресов на одной сетевой карте

На одной сетевой карте может быть несколько ip-адресов, это бывает необходимо, если в коммутатор идут два провода от разных сетей и один от компьютера. В этом случае можно настроить на компьютере адреса обоих сетей без использования дополнительной сетевой карты. Для этого неободимо идентифицировать так называемый алиас (alias) к определенному сетевому интерфейсу, и выглядеть это будет так: сетевой_интерфейс:1 или сетевой_интерфейс:2, т.е. eth0:1 или eth1:2. Идентифицировать его можно следующим образом:

ifconfig eth0:1 192.168.0.5 netmask 255.255.255.0 up

Интересно то, что можно настроить основной интерфейс через dhcp (автоматически) dhclient eth0, а алиас eth0:1 в статику, чего я в альтернативных операционных системах не нашел.

Все это хорошо, но после перезагрузки все настройки слетают. В Ubuntu есть файл /etc/network/interfaces. В него можно прописать опции сетевых карт, которые будут устанавливаться при загрузке системы (благодаря скрипту /etc/init.d/networking, запускающемуся автоматически).

Откройте файл для редактирования:

sudo gedit /etc/network/interfaces

Синтаксис простой:

multi-ips

5 комментариев

avatar
Столкнулся со следующей проблемой: при перезагрузке компьютера файл /etc/resolv.conf заменялся на дефолтное содержимое:

root@z-server:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN


Решается достаточно просто. Нужно добавить dns-сервера не в /etc/resolv.conf, а в /etc/network/interfaces. К примеру:

iface eth0 inet static
address 192.168.1.77
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
комментарий был удален
комментарий был удален
комментарий был удален
avatar
это очень ценная статья
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.