Настройка сетевой карты, краткое пособие для начинающих

Материал из ALT Linux Wiki

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

1. Общая информация о сетевых настройках вашей системы

ВНИМАНИЕ, данный материал работает на alt desktop 4.1, вероятно работает на серверных версиях альт 4.х, на версиях 5.х некоторые настройки, в частности DNS, производятся несколько иначе

Узнаём имя компьютера

Для вывода имени комьютера введите команду hostname

# hostname
alt777.altdomain.local

либо

cat /etc/HOSTNAME

Для изменения имени компьютера откройте файл /etc/sysconfig/network и найдите там директиву HOSTNAME:

HOSTNAME=alt777.altdomain.local

Вместо сгенерированного программой установки впишите нужное имя в формате FQDN. После записи нового имени сохраните изменения в файле и перезагрузите компьютер.

Примечания:

  1. В процессе установки системы нужно было сразу назначить имя компьютера вида myhost.mydomain.tld, например, "lt777.altdomain.local" это поможет избежать возможных проблем, если в сети присутствует dns-сервер
  2. Если сетевые демоны ещё не сконфигурированы, вместо перезагрузки можно просто изменить значение hostname в ядре:
hostname myhost.mydomain.tld

Команду нужно выполнить с правами суперпользователя (с помощью su или sudo, либо из сеанса root).

Какие сетевые карты есть в системе

Теперь выясним, есть ли вообще у нас сетевые карты в компьютере, введем команду lspci -v, в ответ вы должны получить список многих ваших устройств, сетевой карте соответствуют примерно такой раздел

02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)
        Subsystem: ASUSTeK Computer Inc. Device 8226
        Flags: bus master, fast devsel, latency 0, IRQ 219
        Memory at fe9c0000 (64-bit, non-prefetchable) [size=256K]
        Expansion ROM at fe9a0000 [disabled] [size=128K]
        Capabilities: [40] Power Management version 2
        Capabilities: [48] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable+
        Capabilities: [58] Express Endpoint, MSI 00
        Kernel driver in use: atl1
        Kernel modules: atl1

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

# lspci | grep Eth
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)

Получение информации о настройках сети

Узнаем сетевой адрес компьютера, воспользуемся командой ip addr show либо кратким вариантом этой же команды ip a, в ответ вы должны получить примерно следующее

ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:1e:8c:da:6a:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.20/24 brd 192.168.0.255 scope global eth0

eth0 это имя вашего реального сетевого интерфейса, link/ether 00:1e:8c:da:6a:1e mac-адрес, обратите внимание, если сетевой кабель не будет физически подключен к разъему сетевой карты, в выводе команды появится слово NO-CARRIER

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:1e:8c:da:6a:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.20/24 brd 192.168.0.255 scope global eth0

Команда ip route show (или ее краткий вариант ip r) покажет шлюз

# ip route show
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.20
default via 192.168.0.10 dev eth0

Команда ethtool имя_интерфейса покажет вам некоторые характеристики, с которыми работает ваша сетевая карта

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: umbg
        Wake-on: d
        Link detected: yes

Посредством команды ethtool вы также можете изменять эти характеристики.

Конфигурирование интерфейса

Конфигурирование сетевой карты на получение статического адреса

Сеть в ALT Linux настраивается с помощью Etcnet, более подробно про это можно почитать тут. Будем исходить из того, что при инсталляции системы был установлен режим конфигурирования сети «Получение адреса автоматически», если в вашей сети настроен и правильно функционирует dhcp-сервер, ваш компьютер имеет динамически выделенный адрес, и в большинстве случаев на обычной рабочей станции никакое дополнительное конфигурирование не нужно. ВНИМАНИЕ, если у вас есть ADSL-модем, в нем может быть настроен внутренний dhcp-сервер, и ваш компьютер по всей вероятности получит настройки сети от него. В этом случае не стоит конфигурировать вашу сетевую карту вручную. Но допустим, вам все-таки потребовался статический адрес, для этого отключим сетевой интерфейс eth0

#ip link set eth0 down

Файлы настройки сети в альт линукс находятся в папке /etc/net/ifaces, там, если у вас одна сетевая карта, должно быть четыре папки /default, /eth0, /local, /unknown. Непосредственное отношение к нашей сетевой карте имеет папка eth0 (eth0 по умолчанию присваивоемое имя сетевого интерфейса вашей реальной сетевой карты), в ней будет лежать файл /etc/net/ifaces/eth0/options, в общем случае его содержимое будет примерно таким:

TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=dhcp

Последняя строка отвечает за способ получения сетевой картой сетевого адреса. Какие значения может принимать параметр BOOTPROTO: static — адреса и маршруты будут взяты из файлов ipv4address и ipv4route (о них будет рассказано ниже). dhcp — интерфейс будет сконфигурирован по DHCP. ipv4ll — интерфейс будет сконфигурирован с помощью IPv4LL (link-local). Это значит, что из сети 169.254.0.0/16 (169.254.0.1-169.254.255.254) будет подобран ещё не использованный адрес и назначен на интерфейс. Существует несколько комбинированных способов: dhcp-static — если конфигурация по DHCP не удалась (не удалось получить сетевой адрес с помощью dhcp-сервера), конфигурировать методом static (получить адрес статически из файлов ipv4address и ipv4route). Данный метод бывает очень удобен, например на мобильных ПК (в корпоративной сети ноутбук получает адрес через dhcp-сервер, при отстутсвии оного (дома/в командировке/ets) получает статический адрес). dhcp-ipv4ll — если конфигурация по DHCP не удалась, конфигурировать методом ipv4ll. dhcp-ipv4ll-static — если конфигурация по DHCP не удалась, конфигурировать методом ipv4ll. Если и это не удалось, конфигурировать методом static. ВНИМАНИЕ, известна проблема, что в последних трех случаях запись через тире (-) не работает, работает запятая (,) , т.е. например запись dhcp-static нужно записать как dhcp,static Теперь изменим запись BOOTPROTO=dhcp на BOOTPROTO=static.

Настройка статического ip-адреса

Теперь нужно задать ip-адрес и маску сети, например 192.168.0.48/255.255.255.0 (таблица для преобразования маски в CIDR), для этого создадим файл /etc/net/ifaces/eth0/ipv4address и запишем в него параметры соединения (файл именно с таким названием отвечает за настройку ip-адреса)

# echo 192.168.0.48/24 > /etc/net/ifaces/eth0/ipv4address

Если ваша сетевая карта предполагает наличие двух ip-адресов, то в файл ipv4address следует добавить ещё один адрес (обратите внимание на то, что используется ">>" вместо ">"; с ">" файл перезапишется, с ">>" вывод предыдущей команды будет дописан в конец файла):

# echo 10.0.2.148/24 >> /etc/net/ifaces/eth0/ipv4address

Теперь зададим шлюз соединения, например 192.168.0.10, для этого создадим файл /etc/net/ifaces/eth0/ipv4route и запишем в него имя шлюза по умолчанию (файл именно с таким названием отвечает за настройку шлюза)

# echo default via 192.168.0.10 > /etc/net/ifaces/eth0/ipv4route

Включаем интерфейс

# ip link set eth0 up

Перезапускаем сеть (после рестарта сети сетевая карта включится сама, так что вышеприведенную команду можно не выполнять, просто показано как это делать)

# service network restart

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

# /etc/init.d/network restart

У двух последних команд есть флаги stop и start, которые соответственно гасят всю сеть и включают ее (на самом деле это касается только команды-сервиса "network", команда "service" только запускает скрипты из /etc/init.d/). Ваш IP, маску и шлюз Вы можете изменить командами ip addr {add|change|replace} ... и ip route { add | del | change } ... . Например

# ip addr add 192.168.0.XX/24 dev eth0
# ip route add dev eth0 XX.XX.XX.XX

добавят (но не удалят) IP адрес и маршрут. Синтаксис команды ip обширен и выходит за рамки этой статьи. Однако эти команды изменяют конфигурацию сети до ближайшей перезагрузки компьютера. Для постоянного изменения Вам нужно отредактировать файлы, о которых говорилось выше. Файл с описанием dns-сервера /etc/resolv.conf у Вас, по идее, должен быть, но если его нет, то создадим его и поместим туда адрес Вашего dns-сервера, например 192.168.0.9

 
# echo nameserver 192.168.0.9 > /etc/resolv.conf

Если у вас два dns (второй например 192.168.1.9), создать этот файл и внести туда адреса dns-серверов вы также можете следующим образом:

# cat >>/etc/resolv.conf
nameserver 192.168.0.9
nameserver 192.168.1.9

Для прекращения ввода и сохранения файла следует нажать Сtrl+D. Так же можно добавить в resolv.conf список доменов по-умолчанию:

# echo search mydom1.local domain2.ru >> /etc/resolv.conf

Домены перечисляются в порядке предпочтения поиска в одну строку. В версиях 5.х настройки dns настоятельно рекомендуется делать в файле /etc/net/ifaces/имя_интерфейса/resolv.conf Отличия echo и cat читайте man echo и man cat. Запускаем скрипт resolv.all (чтобы система увидела новые настройки dns)

/etc/chroot.d/resolv.all

Дополнения

Переименование имени сетевого интерфейса

Если вы хотите дать имени вашего сетевого интерфейса какое-либо информативное имя (вообще является хорошей практикой переименовать ваш интерфейс из eth0 хотя бы в eth00), вам нужно выполнить следующий ряд действий. Выполните команду ip a и запишите, какому сетевому интерфейсу какой mac-адрес соответствует. Отключите интерфейс (где eth1 имя интерфейса)

#ip link set eth1 down

Переименуйте его (где eth1 старое имя, local новое имя)

#ip link set eth1 name local

Смените название папки с настройками eth1 на новое название

#mv /etc/net/ifaces/eth1 /etc/net/ifaces/local

Помня об ошибке 11786 делаем

#echo "MODULE=модуль_сетевушки" >> /etc/net/ifaces/local/options

В файле /etc/net/iftab сделайте запись

local mac 11:22:33:aa:bb:cc

где 11:22:33:aa:bb:cc мак-адрес карты, полученный ранее по команде ip a. Перезапустите сеть.

Закрепеление порядка загрузки сетевых карт

Данный материал может быть актуален дистрибутиве 4.1. Была замечена следующая проблема. При наличии в компьютере двух сетевых карт (одна из которых включена, но не используется) периодически менялись местами имена сетевых интерфейсов, соответственно изменялись параметры сетевой карты и как следствие сетевая карта оказывалась подключена не к той сети (грубое решение — вытащить сетевой кабель и подключить к другой карте) Для жесткого закрепления порядка загрузки сетевых карт используем udev, который загружает все модули одновременно, поэтому устройства иногда инициализируются в различном порядке. Однако мы можем управлять правилами загрузки модулей. Вариант 1. Самостоятельное указание порядка загрузки модулей сетевых карты с помощью параметра MODULES в файле /etc/rc.conf. Модули, добавленные в этот список, будут загружены перед стартом udev, так что вы имеете полный контроль над порядком их загрузки (откуда взять имя модуля, было сказано ранее в этой статье).

# Модуль 8139too всегда будет загружаться перед e100
MODULES=(8139too e100)

Вариант 2. Создадим правило для управления порядком инициализации сетевых карт

#echo -n>/etc/udev/rules.d/10-network.rules

Впишите в него следующие строки (где eth0 имя первого сетевого интерфейса, vykl имя второго интерфейса)

SUBSYSTEM=="net", ATTRS{address}=="00:1e:8c:da:6a:1e", NAME="eth0"
SUBSYSTEM=="net", ATTRS{address}=="00:14:d1:13:8b:96", NAME="vykl"

ATTRS{address} это mac-адрес сетевой карты, для его получения введите команду

#udevadm info -a -p /sys/class/net/<имя_интерфейса> | grep address

Вариант 3. На мой взгляд еще проще (Добавлено новичком). Создаем файл

#cat > /etc/iftab
inter mac 00:18:f3:bd:98:26
intra mac 00:c0:df:f9:58:35

или

#cat > /etc/net/iftab
inter mac 00:18:f3:bd:98:26
intra mac 00:c0:df:f9:58:35

Где inter и intra имена ваших сетевых интерфейсов. Замечание 1: Использование /etc/iftab удобно, поскольку позволяет сохранять традиционные имена интерфейсов (например, eth0), но этот механизм не поддерживает расширенную функциональность /etc/net (в частности, профили /etc/net). Средством, позволяющим использовать все возможности etcnet, является файл /etc/net/iftab, обрабатываемый не утилитой ifrename, а непосредственно etcnet. Синтаксис этого файла совпадает с синтаксисом /etc/iftab. Ограничением же является невозможность использовать стандартные имена интерфейсом (ethX, pppX) (т.е. в случае использования /etc/net/iftab вы обязательно должны переименовать ваши сетевые интерфейсы из автоматически присваиваемых во что-либо более звучное). Замечание 2: отличие приведенного выше метода udev в том, что он позволяет кроме привязки имени интерфейса к сетевой карте именно жестко назначить порядок загрузки сетевых карт. Замечание 3: в версиях Desktop 5.0 переименование интерфейсов возложено на udev в этом письме Замечание 4: плюс ко всему, этот способ будет работать только если etcnet сам будет загружать модули сетевушек. Тоесть в файле options какого либо интерфейса будет присутствовать строка наподобии:

#cat > /etc/net/ifaces/adsl/options
...
MODULE=e100 

Обратите внимание, mac-адрес записывается прописными буквами (маленькими). Также известно, что некоторые люди имели проблемы, именуя сетевые интерфейсы в старом стиле: eth0, eth1, и т.д. Попробуйте что-нибудь вроде lan или wlan или хотя бы eth00, если встретитесь с проблемами. Сохраните изменения, таким образом первым всегда будет грузиться первая карта в списке и получать нужное имя, в данном случае eth0. Если названия ваших двух карт выглядят как eth0 и eth1, определиться какое имя принадлежит какому физическому устройству вам может помочь команда

#dmesg | grep -i eth

Что еще почитать?

Более подробная информация о настройке сети в альт линукс находится в разделе etcnet, а также man ip. О работеudev.