Суббота, 20.04.2024, 08:29
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

interfaces + DHCP
2009 Денис Колисниченко. Перепечатка в любой форме запрещена!
Настройка интерфейсов по DHCP

В файле /etc/network/interfaces хранятся настройки всех сетевых интерфейсов. Рассмотрим, как конфигурируется сетевой интерфейс. Сетевой интерфейс lo – обратная петля (его IP-адрес 127.0.0.*), использующийся для тестирования сетевой подсистемы, всегда конфигурируется автоматически. Нет необходимости настраивать его как-нибудь иначе. Для настройки этого интерфейса используются строки:

auto lo
iface lo inet loopback

Мы пытаемся настроить сетевой Ethernet-интерфейс. Имя этого интерфейса – ethN, где N – это номер. Нумерация начинается с 0. Обычно в системе только одна сетевая плата, поэтому имя интерфейса будет eth0. Если у вас две сетевые платы, то имена у них будут, соответственно, eth0 и eth1. По умолчанию интерфейс eth0 настраивается так:

auto eth0
iface eth0 inet dhcp

Строка auto eth0 указывает на то, что этот интерфейс должен автоматически "подниматься" при запуске системы. Вторая строка говорит о том, что интерфейс настраивается автоматически по DHCP.
Настройка интерфейсов вручную

Для ручной настройки нужно указать строку в файле interfaces:

iface eth0 inet static address адрес netmask маска gateway шлюз

Например, если у вас IP-адрес 192.168.1.10, маска сети 255.255.255.0, то строка конфигурации будет такой:

iface eth0 inet static address 192.168.110 netmask 255.255.255.0 gateway 192.168.1.1

Необязательно все записывать в одну строчку, можно еще записать так:

iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Параметр gateway – необязательный. Если шлюза нет (сеть без выхода в Интернет), то этот параметр можно не указывать:

iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0

Можно использовать необязательные параметры network и broadcast, задающие, соответственно, адрес сети и широковещательный адрес:

iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.0.255
gateway 192.168.1.1

Запуск программ при поднятии и закрытии интерфейса

При настройке сетевого интерфейса можно запускать определенные конфигурационные программы:

up <программа и ее параметры>

Обычно это используется для запуска программы route, управляющей маршрутизацией. Например, следующая команда сообщает, что путь к сети 192.168.2.0 будет осуществляться через шлюз 192.168.1.2:

up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2

При этом шлюзом по умолчанию, на который будут отправлены все остальные пакеты (которые не адресованы сети 192.168.2.0), будет шлюз 192.168.1.1:

up route add default gw 192.168.1.1

Аналогично, команда down используется для запуска программ при "закрытии" сетевого интерфейса:

down route del default gw 192.168.1.1
down route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2

Первая команда удаляет маршрут по умолчанию, а вторая – маршрут к сети 192.168.2.0

Внимание! Очень важно удалить маршруты при закрытии интерфейса. Когда поднимается интерфейс, в таблицу маршрутизации вносятся обслуживаемые ним маршруты. Когда интерфейс закрывается, очень важно эти маршруты удалить из таблицы маршрутизации ядра, поскольку сетевое соединение, обслуживаемое эти маршруты, уже закрыто.

Чтобы интерфейс eth0 запускался автоматически при старте системы, нужно добавить команду auto eth0:

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Сложные конфигурации

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

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

Интерфейс eth0 настраивается по DHCP, а интерфейс eth1 настраивается вручную. В этой главе мы упомянули технологию VLAN (Virtual Local Area Network), позволяющую одному сетевому адаптеру присвоить несколько IP-адресов. Так как у нас всего одна сетевая плата, то имя первого виртуального интерфейса – eth0, имя второго – eth0:1. Обратите внимание: не eth1, а eth0:1, что указывает, что это виртуальный интерфейс, работающий через физический интерфейс eth0.

Вот пример такой конфигурации:

auto eth0 eth0:1
iface eth0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1

iface eth0:1 inet static
address 192.168.0.200
network 192.168.0.0
netmask 255.255.255.0

Прежде, чем рассмотреть следующую конфигурацию, нужно рассмотреть команды pre-up и pre-down:

* pre-up – позволяет запускать команды перед поднятием интерфейса
* pre-down – позволяет запускать команды перед закрытием интерфейса

Вот пример запуска интерфейса eth0 при условии, что файл /etc/network/local-network-ok существует. Если такой файл не существует, интерфейс eh0 не поднимется:

auto eth0
iface eth0 inet dhcp
pre-up [ -f /etc/network/local-network-ok ]

Но это только теоретический пример, на практике команды pre-up и pre-down используются для более серьезных вещей. Предположим, что у вас есть два сетевых интерфейса – eth0, подключенный к локальной сети и eth1, подключенный к Интернету. Это типичная конфигурация компьютера-шлюза

auto eth0 eth1
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq
iface eth1 inet dhcp
pre-up /usr/local/sbin/firewall

Перед поднятием этих интерфейсов неплохо бы проверить их MAC-адреса (уникальные аппаратные адреса). Сейчас поясню, для чего. Сегодня у вас есть два интерфейса eth0 с MAC-адресом А и eth1 с MAC-адресом Б. Завтра вы установили новое ядро, использующее иной порядок поиска сетевых интерфейсов и сетевая карта с MAC-адресом Б стала интерфейсом eth0, а плата с MAC-адресом А стала интерфейсом eth1. Сами понимаете, что ваша конфигурация не будет работать. Поэтому нужно проверить MAC-адреса интерфейсов:

auto eth0 eth1
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /path/to/check-mac-address.sh eth0 XX:XX:XX:XX:XX:XX
pre-up /usr/local/sbin/enable-masq
iface eth1 inet dhcp
pre-up /path/to/check-mac-address.sh eth1 AA:BB:CC:DD:EE:FF
pre-up /usr/local/sbin/firewall

Программа check-mac-address.sh – это сценарий, проверяющий MAC-адрес. Его можно найти в каталоге /usr/share/doc/ifupdown/examples, но не нужно этого делать, поскольку сейчас мы опишем более совершенную конфигурацию, идентифицирующую интерфейсы по MAC-адресу, а не по имени интерфейса:

auto eth0 eth1
mapping eth0 eth1
script /path/to/get-mac-address.sh
map 11:22:33:44:55:66 lan
map AA:BB:CC:DD:EE:FF internet
iface lan inet static
address 192.168.42.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq $IFACE
iface internet inet dhcp
pre-up /usr/local/sbin/firewall $IFACE

Сценарий get-mac-address.sh можно найти в каталоге /usr/share/doc/ifupdown/examples. Лучше всего скопировать его в каталог /usr/bin и сделать исполнимым:

cp /usr/share/doc/ifupdown/examples/get-mac-address.sh /usr/bin
chmod +x /usr/bin/get-mac-address.sh

Если по какой-то причине этого файла у вас нет, то его листинг приведен ниже (лист. 8.1)

Листинг 8.1. Файл get-mac-address.sh

#!/bin/sh

set -e

export LANG=C

iface="$1"
mac=$(/sbin/ifconfig "$iface" | sed -n -e '/^.*HWaddr \([:[:xdigit:]]*\).*/{s//\1/;y/ABCDEF/abcdef/;p;q;}')
which=""

while read testmac scheme; do
if [ "$which" ]; then continue; fi
if [ "$mac" = "$(echo "$testmac" | sed -e 'y/ABCDEF/abcdef/')" ]; then which="$scheme"; fi
done

if [ "$which" ]; then echo $which; exit 0; fi
exit 1

Файл /etc/network/interfaces может использоваться для настройки любых сетевых интерфейсов, а не только для настройки Ethernet-интерфейсов. Вот пример настройки DSL-интерфейса dsl-provider, созданного программой pppoeconf:

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up
provider dsl-provider

Источник: http://www.dkws.org.ua/index.php?page=show&file=a/ubuntu/network-interfaces

Категория: Об ОС *Nix | Добавил: admin (28.03.2010)
Просмотров: 2779 | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024