1

Авторы:
WonderTalik
Кузнецов Константин

[size=7]Настройка сети (ifconfig, route)[/size]

План:
1. Введение
2. Определение состояния сетевых интерфейсов
3. Получаем настройки автоматически
4. Прописываем настройки вручную
5. Добавляем маршруты и шлюз
6. Прописываем DNS
7. Дополнительные адреса на одном интерфейсе
8. Запоминаем сделанные настройки
9. Проверяем соединение с сетью
10. Используемая и рекомендуемая литература

--------------------------------------------------------------------------------

[size=6]1. Введение[/size]

После того как мы разобрались с принципами построения компьютерных сетей и уже даже подвели шнур к нашей сетевой плате, нам необходимо разобраться с тем, как настроить наш компьютер под управлением операционной системы Gnu/Linux для работы в этой сети. В данной статье рассмотрен устаревший, но все еще рабочий способ управления сетевыми настройками в ОС Gnu/Linux.

--------------------------------------------------------------------------------

[size=6]2. Определение состояния сетевых интерфейсов[/size]

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

Команда ifconfig отображает информацию только об активных сетевых интерфейсах.
Просмотреть информацию по всем интерфейсам можно командой [font=Courier]ifconfig -a[/font], выбрать необходимый из них (eth0, или eth1, или eth0:1) и манипулировать им.
Команда ifconfig -a удобна в тех случаях, когда надо быстро выяснить состояние интерфейсов, в частности, если необходимо узнать их IP-адреса. Помимо сведений о конфигурации сетевых интерфейсов, команда выдает еще много полезной информации, например, количество отправленных и полученных пакетов(параметры RX и TX).
Еще один интересный адрес, который можно увидеть у сетевой карты - параметр HWaddr (Hardware Address, аппаратный адрес). Его еще часто называют MAC - адресом (Media Access Control, управление доступом к среде). Это 48-разрядный серийный номер сетевого адаптера, присваиваемый производителем. Так как lo создан программно, у него не может быть аппаратного адреса.

~$ ifconfig -a

http://s44.radikal.ru/i105/0908/3f/08dc665a5866.png



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

http://s13.radikal.ru/i186/0908/3d/fec255fe02fb.png

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

http://s60.radikal.ru/i169/0908/a6/ab28f3bd328b.png

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

http://s43.radikal.ru/i099/0908/27/d1fedf0e6cd9.png

--------------------------------------------------------------------------------

[size=6]3. Получаем настройки автоматически[/size]

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

~$ sudo dhclient eth0

Команду dhclient, как и любую другую команду, изменяющую настройки сети, надо запускать с правами суперпользователя.

--------------------------------------------------------------------------------

[size=6]4. Прописываем настройки вручную[/size]

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

~$ sudo ifconfig интерфейс параметры действие

Остановить интерфейс (выключить):

~$ sudo ifconfig eth0 down

Поднять интерфейс (включить):

~$ sudo ifconfig eth0 up

Для изменения только ip-адреса используется следующий формат команды:

~$ sudo ifconfig eth1 10.7.9.6

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

~$ sudo  ifconfig eth1 netmask 255.0.0.0

Меняем сразу адрес и маску:

~$ sudo ifconfig eth0 10.7.9.6 netmask 255.255.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

--------------------------------------------------------------------------------

[size=6]5. Добавляем другие маршруты и шлюз[/size]

Команда route манипулирует таблицами IP-маршрутизации ядра. Его основное применение - настроить статические маршруты для определенных хостов и сетей через интерфейс после того, как последний был настроен, например, через Ifconfig. При использовании опций ADD или DEL команда ROUTE изменяет таблицы маршрутизации. Во всех остальных случаях она выводит их содержимое на экран.

Примеры:

route add -net 127.0.0.0 netmask 255.0.0.0 dev lo

Добавляет обычную запись для петлевого сетевого устройства (предполагается, что устройство lo сконфигурировано)

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0

Добавляет маршрут до локальной сети 192.56.76.x через интерфейс eth0

route del default

Удаляет маршрут по умолчанию, обозначаемый "default", что равносильно сети 0.0.0.0

route add default gw 192.168.0.1

Добавляет маршрут по умолчанию.

route add -net 192.57.66.0 netmask 255.255.255.0 gw 10.0.0.4

Добавляет маршрут до сети 192.57.66.0/24 через шлюз 10.0.0.4

route -n

Вывод таблицы маршрутизации

--------------------------------------------------------------------------------

[size=6]6. Прописываем DNS[/size]

Используемые системой DNS-серверы перечислены в файле /etc/resolv.conf в таком виде:

nameserver 4.2.2.2

Сюда же можно написать и домен, которому принадлежит эта машина

search domain.local

Так же можно указывать имена компьютеров вручную в файле /etc/hosts:

192.168.0.1 gate gate.domain.local
192.168.0.2 mailserver mailserver.domain.local

После чего к ним можно обращаться по именам

--------------------------------------------------------------------------------

[size=6]7. Дополнительные адреса на одном интерфейсе[/size]

На одной сетевой карте может быть несколько 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 в статику, чего я в альтернативных операционных системах не нашел.

--------------------------------------------------------------------------------

[size=6]8. Запоминаем сделанные настройки[/size]

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

$ sudo /etc/init.d/networking start

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

auto lo
iface lo inet loopback

Таким образом стартует только интерфейс петли, который мало чем нам может помочь. Добавим информацию о нашей сетевой карте:

# сетевая карта eth1 поднимается автоматически во время загрузки системы.
auto eth1
# iface eth1 inet static - указывает, что интерфейс (iface) сетевой карты (eth1) находится в диапазоне адресов ipv4 (inet) со статическим ip (static).
iface eth1 inet static
# address 10.7.9.6 - статический ip адрес, тут вы должны записать свой.
address 10.7.9.6
# netmask  — стандартная маска сети.
netmask 255.0.0.0
# gateway - ip адрес основного шлюза.
gateway 10.0.0.1

Редактирование закончено. Сохраните и закройте файл. Для вступления изменений в силу необходимо перезапустить сетевые интерфейсы командой

$ sudo /etc/init.d/networking restart

Для примера приведу разнообразные варианты настройки сетевых интерфейсов через описанный файл конфигурации

# сетевая карта eth0 получает все настройки автоматически у dhcp-сервера
auto eth0
iface eth0 inet dhcp

# для сетевой карты eth2 вручную вбиваем mac-адрес
auto eth2
iface eth1 inet dhcp
hwaddress ether 00:e0:4c:d0:99:28

# добавляем алиас на сетевую карту eth0
auto eth0:1
iface eth1 inet static
address 192.168.10.3
netmask 255.255.255.0

Так же можно установить выполнение каких-либо команд перед/после включения и перед/после выключения интерфейса
pre-up command
post-up command
pre-down command
post-down command
Для каждого из вышеупомянутых параметров существует каталог /etc/network/if-<up|down>.d/ , скрипты в которых запускаются (без аргументов) при обработке опции.

--------------------------------------------------------------------------------

[size=6]9. Проверяем соединение с сетью[/size]

Для проверки соединения нашего компьютера с сетью можно просто ввести команду:

$ ping ya.ru

но она не всегда может дать нам правильный ответ. Правильно делать это так:
а) проверяем кабель, горит ли лампочка
б) проверяем, для того ли сетевого устройства мы вводили настройки
в) правильно ли мы указали адрес и маску, для этого можно пробовать пинговать соседние в сети компьютеры, причем желательно именно по адресу, а не по имени
г) указали ли мы шлюз по-умолчанию (default gateway) и доступен ли он через ping
д) проверяем dns, его тоже можно сначала пинговать для проверки
е) и только после этого можем пробовать пинговать ya.ru
P.S. Имейте ввиду, что ping не дает 100% гарантии, что хост недоступен. На удаленном компьютере может быть установлен файервол, блокирующий все icmp соединения!

--------------------------------------------------------------------------------

[size=6]10. Используемая и рекомендуемая литература[/size]

http://ru.wikipedia.org/wiki/Ifconfig

2

Перенес сообщение: http://linuxforum.ru/viewtopic.php?id=1280

На мясокомбинате я работаю свиньёй.

3

Народ, подскажите, чем отличается

 Консоль:
allow-hotplug ethX

от
 Консоль:
auto ethX

Когда и в каких случаях использовать вышеперечисленные опции в interfaces?

4

Nigelist, тыц

It is good day to die ...
MS Windows 10
Заметки о главном...

5

i2ks, а можно чуть подробнее? Нашел статью в которой описаны настройки:

 Консоль:
# Первичный интерфейс, у меня он смотрит во внешнюю сеть.
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.39
netmask 255.255.255.0
gateway 192.168.56.254
auto eth0
# Вторичный интерфейс, у меня он смотрит во внутреннюю сеть.
allow-hotplug eth1
iface eth1 inet static
address 192.168.222.254
netmask 255.255.255.0
auto eth1

Зачем allow-hotplug, потом auto? Можно подробное описание каждой строчки одной из сетевух?

6

Nigelist пишет:

i2ks, а можно чуть подробнее? Нашел статью в которой описаны настройки:

 Консоль:
# Первичный интерфейс, у меня он смотрит во внешнюю сеть.
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.39
netmask 255.255.255.0
gateway 192.168.56.254
auto eth0
# Вторичный интерфейс, у меня он смотрит во внутреннюю сеть.
allow-hotplug eth1
iface eth1 inet static
address 192.168.222.254
netmask 255.255.255.0
auto eth1

Зачем allow-hotplug, потом auto? Можно подробное описание каждой строчки одной из сетевух?

Если обычные сетевые тогда auto. Если например usb тогда allow-hotplug (поднимает интерфейс когда ядро его определяет).

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

7

Nigelist, если стоит опция auto или allow-auto то это говорит о том что сетевой интерфейс будет поднят автоматически во время загрузки системы, а когда allow-hotplug то здесь поднимается уже сеть на том или ином интерфейсе, т.е. еще проще, поднимается сетевой интерфейс с заданным именем при подключенном кабеле. Вот как то так =)

Можно на ВМ по эксперементировать.

It is good day to die ...
MS Windows 10
Заметки о главном...