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

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

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

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

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

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

Для вывода имени комьютера введите команду 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

Если ваша сетевая карта предполагает наличие двух ip-адресов, то в файл ipv4address следует добавить строку с адресом:

192.168.0.48/24
10.0.2.148/24

Теперь зададим шлюз соединения, например 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), вам нужно выполнить следующий ряд действий. Выполните команду 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

В файле /etc/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

Подробнее об iftab

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

#dmesg | grep -i eth

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

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