Linux network инструкция администратора

         

Интерфейсы Ethernet


Конфигурирование интерфейса Ethernet, идет почти также, как и интерфейса loopback, он только требует больше параметров когда вы используете подсети.


Интерфейсы Ethernet

Конфигурирование интерфейса Ethernet, идет почти также, как и интерфейса loopback, он только требует больше параметров когда вы используете подсети.

В Virtual Brewery мы с вами разбивали на подсети IP-сеть, которая была первоначально класса B на сети калсса С. При установке интерфейса для нее требовалось написать:

# ifconfig eth0 vstout netmask 255.255.255.0

Эта запись назначает интерфейсу eth0 IP-адрес vstout (172.16.1.2 ). Если бы мы опустили netmask, ifconfig вывел бы netmask из класса сети, что привело бы к неправильной маске подсети 255.255.0.0. Теперь быстренько проверим:

# ifconfig eth0

eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0

Вы можете видеть, что ifconfig автоматически устанавливает широковещательный адрес (поле Bcast ), равный обычному значению, которое является номером сети с битами хоста, равными 1. Также размер передаваемых сообщений (для данного интерфейса устанавливается максимальный размер Ethernet-пакета) был установлен равным максимальному значению в 1500 байт. Все эти значения могут быть исправлены специальными опциями, которые описаны ниже.

Также как в случае с loopback, вы должны теперь установить маршрутизационную запись, которая сообщает ядру о сети, которая может быть достигнута через eth0. Для Virtual Brewery, это:



# route add -net 172.16.1.0

Сначала это смотрится как волшебство, потому что, действительно, не очевидно, как route обнаруживает, какие сети с какими интерфейсами связаны. Однако, уловка довольно проста: ядро проверяет все интерфейсы, которые были отконфигурированы, и сравнивает адрес места назначения (в этом случае (172.16.1.0) с сетевой частью адреса интерфейса. Единственный интерфейс, который соответствует данному адресу, eth0.




Теперь подумаем, что такое опция -net? Она используется, потому что route может работать с маршрутами к сетям и с маршрутам к отдельным машинам (как вы видели в localhost). Когда route получает адрес в стандарте с точками, он пытается предположить, принадлежит ли этот адрес сети или машине, проверяя биты части машины. Если эта часть адреса ноль, route предполагает, что он обозначает сеть, в противном случае, что адрес машины. Поэтому route решил бы, что 172.16.1.0 означает адрес машины: он не может знать, что мы используем подсети. Поэтому мы должны явно сообщить, что это адрес сети, что делается опцией -net.

Конечно, вышеупомянутая команда немного утомительна для набора и дает много ошибок. Более удобный подход: использование сетевых имен, которые определены в /etc/networks.. Это делает команду более удобочитаемой. Даже опция -net может быть опущена, потому что route теперь знает, что 172.16.1.0 обозначает сеть:

# route add brew-net

Теперь, когда вы закончили основные шаги конфигурации, надо удостовериться, что Ваш Ethernet-интерфейс, действительно, работает правильно. Выберите машину в вашей Ethernet-сети, например, vlager, и наберите:

# ping vlager

PING vlager: 64 byte packets 64 bytes from 172.16.1.1: icmp_seq=0. time=11. ms 64 bytes from 172.16.1.1: icmp_seq=1. time=7. ms 64 bytes from 172.16.1.1: icmp_seq=2. time=12. ms 64 bytes from 172.16.1.1: icmp_seq=3. time=3. ms ^C ----vstout.vbrew.com PING Statistics---- 4 packets transmitted, 4 packets received, 0 round-trip (ms) min/avg/max = 3/8/12

Если вы не видите подобный вывод, значит что-то не так. Если вы сталкиваетесь с необычным количеством потерянных пакетов, это означает проблему аппаратных средств, типа плохого или отсутствующего терминатора и т.д.. Если вы не получаете пакеты вообще, вы должны проверить конфигурацию интерфейса с помощью netstat (описана ниже). Пакетная статистика, показанная ifconfig, должна сообщить, были ли вообще посланы какие-то пакеты. Если у вас есть доступ к удаленной машине, вы должны сходить к той машине и проверить там статистику интерфейса. Таким образом, вы можете точно решить, где пропали пакеты. Кроме того, вы должны посмотреть маршрутизационную информацию с помощью route, чтобы выяснить, имеют ли обе машины правильные записи в таблице маршрутов. route печатает всю таблицу маршрутизации, если его вызвать без аргументов (опция (-n указывает печа- тать вместо адресов имена машин):

# route -n

Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.1 * 255.255.255.255 UH 1 0 112 lo 172.16.1.0 * 255.255.255.0 U 1 0 10 eth0

Детальное значение этих полей объясняется ниже. Колонка Flags содержит список флагов, устанавливаемых для каждого интерфейса. U всегда установлен для активных интерфейсов, а H сообщает, что адрес места назначения обозначает машину (хост). Если флаг H установлен для маршрута, который вы считаете сетевым маршрутом, тогда вы должны использовать опцию -net с командой route. Чтобы проверить, используется ли маршрут, который вы ввели, посмотрите на поле Use, которое находится между двумя сообщениями ping.


Содержание раздела