Настройка сетевой карты, краткое пособие для начинающих
Краткое пособие для недавно «переехавших» на альт линукс, о том, как настроить вашу сетевую карту. Не рассматриваются графические конфигураторы, все изменения конфигурационных файлов производятся от имени пользователя root
1. Общая информация о сетевых настройках вашей системы
ВНИМАНИЕ, данный материал работает на alt desktop 4.1, вероятно работает на серверных версиях альт 4.х, на версиях 5.х работоспособность не проверялась
Узнаем имя компьютера
Для вывода имени комьютера введите команду hostname
# hostname alt777.altdomain.local
Для изменения имени компьютера откройте файл /etc/sysconfig/network и найдите там строку
HOSTNAME=alt777.altdomain.local
После записи нового имени сохраните изменения в файле и перезагрузите компьютер. Примечание: лучше еще при инсталляции системы назначить имя компьютера вида myhost.mydomain.local, это поможет избежать возможных проблем, если в сети присутствует dns-сервер
Какие сетевые карты есть в системе
Теперь выясним, есть ли вообще у нас сетевые карты в компьютере, введем команду 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 -v | 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 вы также можете изменять эти характеристики.
Конфигурирование интерфейса
Конфигурирование сетевой карты на получение статического адреса
Будем исходить из того, что при инсталляции системы был установлен режим конфигурирования сети «Получение адреса автоматически», если в вашей сети настроен и правильно функционирует 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, для этого создадим файл /etc/net/ifaces/eth0/ipv4address и запишем в него параметры соединения (файл именно с таким названием отвечает за настройку ip-адреса)
#echo -n>/etc/net/ifaces/eth0/ipv4address #echo 192.168.0.48/24>/etc/net/ifaces/eth0/ipv4address
Теперь зададим шлюз соединения, например 192.168.0.10, для этого создадим файл /etc/net/ifaces/eth0/ipv4route и запишем в него имя шлюза по умолчанию (файл именно с таким названием отвечает за настройку шлюза)
#echo -n>/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, которые соответственно гасят всю сеть и включают ее. Ваш IP, маску и шлюз вы можете изменить командами
#ip addr add 192.168.0.XX/24 dev eth0 #ip route add dev eth0 XX.XX.XX.XX
Однако эти команды изменяют ip и шлюз до ближайшей перезагрузки компьютера, для постоянного изменения вам нужно отредактировать файлы, о которых говорилось выше. Файл с описанием dns-сервера /etc/resolv.conf у вас по идее должен быть, но если его нет, то создадим его и поместим туда адрес вашего dns-сервера, например 192.168.0.9
#echo -n>/etc/resolv.conf #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 сохранить (ctrl+d)
Отличия echo и cat читайте man echo и man cat. Запускаем скрипт resolv.all (чтобы система увидела новые настройки dns)
/etc/chroot.d/resolv.all
Дополнения
Переименование имени сетевого интерфейса
Если вы хотите дать имени вашего сетевого интерфейса какое-либо информативное имя (вообще является хорошей практикой переименовать ваш интерфейс из eth0 хотя бы в eth00), вам нужно выполнить следующий ряд действий. Отключите интерфейс (где eth1 имя интерфейса)
#ip link set eth1 down
Переименуйте его (где eth1 старое имя, vykl новое имя)
#ip link set eth1 name vykl
Смените название папки с настройками eth1 на новое название
#mv /etc/net/ifaces/eth1 /etc/net/ifaces/vykl
Перезапустите сеть.
Закрепеление порядка загрузки сетевых карт
Данный материал может быть актуален дистрибутиве 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
Обратите внимание, mac-адрес записывается прописными буквами (маленькими). Также известно, что некоторые люди имели проблемы, именуя сетевые интерфейсы в старом стиле: eth0, eth1, и т.д. Попробуйте что-нибудь вроде lan или wlan или хотя бы eth00, если встретитесь с проблемами. Сохраните изменения, таким образом первым всегда будет грузиться первая карта в списке и получать нужное имя, в данном случае eth0. Если названия ваших двух карт выглядят как eth0 и eth1, определиться какое имя принадлежит какому физическому устройству вам может помочь команда
#dmesg | grep -i eth
Что еще почитать?
Более подробная информация о настройке сети в альт линукс находится в разделе etcnet, а также man ip. О работе udev [1].