Работа с сетевыми интерфейсами на Debian

В этой стать будет рассмотрено множество способов по работе с сетевыми интерфейсами.
Все сетевые настройки прописаны в файле /etc/network/interfaces, который и изменяется под нужные сетевые настройки для Вашего компьютера.
В Debian все изменения файла /etc/network/interfaces делаются через команду sudo, так как требуются права супер пользователя на изменение конфигурационных файлов, пример:

для использование редактора vi:
sudo vi /etc/netwotk/interface
для использование редактора nano:
sudo nano /etc/netwotk/interface
для использование редактора mcedit:
sudo mcedit /etc/netwotk/interface

Зависит от того, с каким редактором Вам больше нравится работать.

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

auto lo
iface lo inet loopback

Далее настраиваем сетевую карту, если сетевая карта у Вас одна, то она будет называться eth0, если две, то вторая будет идти как eth1, можно также устанавливать на одну сетевую карту по два и более IP адресов, что будет рассмотрено ниже...
Настройка сетевой карты eth0 под автоматическое получения рабочей группы (DHCP):

auto eth0
iface eth0 inet dhcp

Строка "auto eth0" указывает системе запускать автоматически этот интерфейс с настройкой при загрузке системы и при перезапуске службы сети.
И наш конфигурационный файл /etc/network/interfaces, теперь выглядит таким образом:

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp

Также можно написать и таким образом:

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

Теперь можно сделать перезапуск службы сети коммандой:

sudo /etc/init.d/networking restart

И проверить, что у Вас получилось, смотрим по команде:
ifconfig

Настройка интерфейсов вручную
Для ручной настройки нужно указать строку в файле /etc/network/interfaces:
iface eth0 inet static
      address адрес
      netmask маска
      gateway шлюз

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

iface eth0 inet static
      address 192.168.0.200
      netmask 255.255.255.0
      gateway 192.168.0.1

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

iface eth0 inet static 
      address 192.168.0.200
      netmask 255.255.255.0
      gateway 192.168.0.1

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

iface eth0 inet static 
      address 192.168.0.200 
      netmask 255.255.255.0

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

iface eth0 inet static 
      address 192.168.0.200 
      netmask 255.255.255.0 
      network 192.168.0.0
      broadcast 192.168.0.255
      gateway 192.168.0.1

Интерфейс eth0 настраивается по DHCP, а интерфейс eth1 настраивается вручную.
Если у вас два сетевых адаптера, то они настраиваются аналогично, только указываются разные имена интерфейсов. Вот пример настройки двух сетевых адаптеров:
auto eth0 
iface eth0 inet dhcp
 
auto eth1
iface eth1 inet static 
      address 192.168.0.200 
      netmask 255.255.255.0 
      gateway 192.168.0.1

Несколько IP адресов на одном интерфейсе
Так как у нас всего одна сетевая плата, то имя первого виртуального интерфейса – eth0, имя второго – eth0:1, имя третьего - eth0:2 и так далее.
Обратите внимание: не eth1, а eth0:1, что указывает, что это виртуальный интерфейс, работающий через физический интерфейс eth0.
Приведем конфигурацию такого примера:
auto eth0 eth0:1 eth0:2
iface eth0 inet static
      address 192.168.0.201
      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.202
      network 192.168.0.0
      netmask 255.255.255.0
 
iface eth0:2 inet static
      address 192.168.0.203
      network 192.168.0.0
      netmask 255.255.255.0

Команды pre-up и pre-down
Рассмотрим, что такое 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 xx:xx:xx:xx:xx:xx 
      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 xx:xx:xx:xx:xx:xx lan 
map xx:xx:xx:xx:xx:xx 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

Если по какой-то причине этого файла у вас нет, то его содержимое приведен ниже.
Файл 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

Вот мы и рассмотрели основы настройки сетевых интерфейсов.

Если есть вопросы, то просим Вас посетить наш форум, на котором Вы сможете попросить бесплатно описание...



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов