Настройка сетевой карты, краткое пособие для начинающих
Краткое пособие для недавно «переехавших» на альт линукс, о том, как настроить вашу сетевую карту. Не рассматриваются графические конфигураторы, все изменения конфигурационных файлов производятся от имени пользователя 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. После записи нового имени сохраните изменения в файле и перезагрузите компьютер.
Примечания:
- В процессе установки системы нужно было сразу назначить имя компьютера вида myhost.mydomain.tld, например, "lt777.altdomain.local" это поможет избежать возможных проблем, если в сети присутствует dns-сервер
- Если сетевые демоны ещё не сконфигурированы, вместо перезагрузки можно просто изменить значение 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. Перезапустите сеть.
Переименование при использовании systemd
Если Вы используете systemd, то рекомендуется переименовывать сетевые интерфейсы следующим способом:
В файле /lib/udev/rules.d/79-net-name.rules (если его нет, то необходимо создать его) добавьте для каждого интерфейса следующую строчку:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:14:17:84:47:60", NAME="pve01"
Указав нужный mac-адрес и новое имя.
Закрепление порядка загрузки сетевых карт
Данный материал может быть актуален дистрибутиве 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.