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

Материал из ALT Linux Wiki
(Перенаправление на Настройка сети)
Метка: новое перенаправление
 
(не показано 5 промежуточных версий 3 участников)
Строка 1: Строка 1:
Краткое пособие для недавно «переехавших» на альт линукс, о том, как настроить вашу сетевую карту. Не рассматриваются графические конфигураторы, все изменения конфигурационных файлов производятся от имени пользователя '''root'''
#REDIRECT[[Настройка сети]]
 
== 1. Общая информация о сетевых настройках вашей системы ==
 
ВНИМАНИЕ, данный материал работает на alt desktop 4.1, вероятно работает на серверных версиях альт 4.х, на версиях 5.х некоторые настройки, в частности DNS, производятся несколько иначе
=== Узнаём имя компьютера ===
Для вывода имени комьютера введите команду <tt>hostname</tt>
<pre># hostname
alt777.altdomain.local</pre>
либо
cat /etc/HOSTNAME
Для изменения имени компьютера откройте файл <tt>/etc/sysconfig/network</tt> и найдите там директиву HOSTNAME:
<pre>HOSTNAME=alt777.altdomain.local</pre>
Вместо сгенерированного программой установки впишите нужное имя в формате FQDN.
После записи нового имени сохраните изменения в файле и перезагрузите компьютер.
 
''Примечания:''
# В процессе установки системы нужно было сразу назначить имя компьютера вида <tt>myhost.mydomain.tld</tt>, например, "lt777.altdomain.local" это поможет избежать возможных проблем, если в сети присутствует dns-сервер
# Если сетевые демоны ещё не сконфигурированы, вместо перезагрузки можно просто изменить значение hostname в ядре:
hostname myhost.mydomain.tld
Команду нужно выполнить с правами суперпользователя (с помощью su или sudo, либо из сеанса root).
 
=== Какие сетевые карты есть в системе ===
Теперь выясним, есть ли вообще у нас сетевые карты в компьютере, введем команду <tt>lspci -v</tt>, в ответ вы должны получить список многих ваших устройств, сетевой карте соответствуют примерно такой раздел
<pre>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</pre>
Обратите внимание, последняя строка это ''модуль'', который использует ваша сетевая карта, иногда эта информация бывает нужна.
Если вы хотите увидеть только сетевую карту, примените фильтр <tt>grep</tt>
<pre># lspci | grep Eth
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)</pre>
 
=== Получение информации о настройках сети ===
Узнаем сетевой адрес компьютера, воспользуемся командой <tt>ip addr show</tt> либо кратким вариантом этой же команды <tt>ip a</tt>, в ответ вы должны получить примерно следующее
<pre>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</pre>
'''eth0''' это имя вашего реального сетевого интерфейса, '''link/ether 00:1e:8c:da:6a:1e''' mac-адрес, обратите внимание, если сетевой кабель не будет физически подключен к разъему сетевой карты, в выводе команды появится слово '''NO-CARRIER'''
<pre>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</pre>
Команда <tt>ip route show</tt> (или ее краткий вариант <tt>ip r</tt>) покажет шлюз
<pre># 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</pre>
Команда <tt>ethtool имя_интерфейса</tt> покажет вам некоторые характеристики, с которыми работает ваша сетевая карта
<pre># 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</pre>
Посредством команды <tt>ethtool</tt> вы также можете изменять эти характеристики.
 
== Конфигурирование интерфейса ==
 
=== Конфигурирование сетевой карты на получение статического адреса ===
Сеть в ALT Linux настраивается с помощью [[Etcnet]], более подробно про это можно [[Etcnet|почитать тут]]. Будем исходить из того, что при инсталляции системы был установлен режим конфигурирования сети «Получение адреса автоматически», если в вашей сети настроен и правильно функционирует dhcp-сервер, ваш компьютер имеет динамически выделенный адрес, и в большинстве случаев на обычной рабочей станции никакое дополнительное конфигурирование не нужно.
ВНИМАНИЕ, если у вас есть '''ADSL-модем''', в нем может быть настроен '''внутренний dhcp-сервер''', и ваш компьютер по всей вероятности получит настройки сети от него. В этом случае не стоит конфигурировать вашу сетевую карту вручную. Но допустим, вам все-таки потребовался статический адрес, для этого отключим сетевой интерфейс eth0
<pre>#ip link set eth0 down</pre>
Файлы настройки сети в альт линукс находятся в папке <tt>/etc/net/ifaces</tt>, там, если у вас одна сетевая карта, должно быть четыре папки <tt>/default</tt>, <tt>/eth0</tt>, <tt>/local</tt>, <tt>/unknown</tt>. Непосредственное отношение к нашей сетевой карте имеет папка <tt>eth0</tt> (eth0 по умолчанию присваивоемое имя сетевого интерфейса вашей реальной сетевой карты), в ней будет лежать файл <tt>/etc/net/ifaces/eth0/options</tt>, в общем случае его содержимое будет примерно таким:
<pre>TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=dhcp</pre>
Последняя строка отвечает за способ получения сетевой картой сетевого адреса.
Какие значения может принимать параметр <tt>BOOTPROTO</tt>:
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. ВНИМАНИЕ, известна проблема, что в последних трех случаях запись через тире ('''-''') не работает, работает запятая (''',''') , т.е. например запись <tt>dhcp-static</tt> нужно записать как <tt>dhcp,static</tt>
Теперь изменим запись <tt>BOOTPROTO=dhcp</tt> на <tt>BOOTPROTO=static</tt>.
 
=== Настройка статического ip-адреса ===
Теперь нужно задать ip-адрес и маску сети, например 192.168.0.48/255.255.255.0 ([[Etcnet#cite_note-0|таблица для преобразования маски в CIDR]]), для этого создадим файл <tt>/etc/net/ifaces/eth0/ipv4address</tt> и запишем в него параметры соединения (файл именно с таким названием отвечает за настройку ip-адреса)
<pre>
# echo 192.168.0.48/24 > /etc/net/ifaces/eth0/ipv4address
</pre>
Если ваша сетевая карта предполагает наличие двух ip-адресов, то в файл ipv4address следует добавить ещё один адрес (обратите внимание на то, что используется ">>" вместо ">"; с ">" файл перезапишется, с ">>" вывод предыдущей команды будет дописан в конец файла):
<pre>
# echo 10.0.2.148/24 >> /etc/net/ifaces/eth0/ipv4address
</pre>
Теперь зададим шлюз соединения, например 192.168.0.10, для этого создадим файл <tt>/etc/net/ifaces/eth0/ipv4route</tt> и запишем в него имя шлюза по умолчанию (файл именно с таким названием отвечает за настройку шлюза)
<pre>
# echo default via 192.168.0.10 > /etc/net/ifaces/eth0/ipv4route
</pre>
Включаем интерфейс
<pre>
# ip link set eth0 up
</pre>
Перезапускаем сеть (после рестарта сети сетевая карта включится сама, так что вышеприведенную команду можно не выполнять, просто показано как это делать)
<pre>
# service network restart
</pre>
Также сеть можно перезапустить командой
<pre>
# /etc/init.d/network restart
</pre>
У двух последних команд есть флаги <tt>stop</tt> и <tt>start</tt>, которые соответственно гасят всю сеть и включают ее (на самом деле это касается только команды-сервиса "network", команда "service" только запускает скрипты из /etc/init.d/). Ваш IP, маску и шлюз Вы можете изменить командами <tt> ip addr {add|change|replace} ... </tt> и <tt> ip route { add | del | change } ... </tt>. Например
<pre>
# ip addr add 192.168.0.XX/24 dev eth0
# ip route add dev eth0 XX.XX.XX.XX
</pre>
добавят (но не удалят) IP адрес и маршрут. Синтаксис команды <tt>ip</tt> обширен и выходит за рамки этой статьи.
Однако эти команды изменяют конфигурацию сети до ближайшей перезагрузки компьютера. Для постоянного изменения Вам нужно отредактировать файлы, о которых говорилось выше.
Файл с описанием dns-сервера <tt>/etc/resolv.conf</tt> у Вас, по идее, должен быть, но если его нет, то создадим его и поместим туда адрес Вашего dns-сервера, например 192.168.0.9
<pre>
# echo nameserver 192.168.0.9 > /etc/resolv.conf
</pre>
Если у вас два dns (второй например 192.168.1.9), создать этот файл и внести туда адреса dns-серверов вы также можете следующим образом:
<pre>
# cat >>/etc/resolv.conf
nameserver 192.168.0.9
nameserver 192.168.1.9
</pre>
Для прекращения ввода и сохранения файла следует нажать <tt>Сtrl+D</tt>. Так же можно добавить в resolv.conf список доменов по-умолчанию:
<pre>
# echo search mydom1.local domain2.ru >> /etc/resolv.conf
</pre>
Домены перечисляются в порядке предпочтения поиска в одну строку. В версиях 5.х настройки dns настоятельно рекомендуется делать в файле /etc/net/ifaces/имя_интерфейса/resolv.conf
Отличия <tt>echo</tt> и <tt>cat</tt> читайте '''man echo''' и '''man cat'''.
Запускаем скрипт <tt>resolv.all</tt> (чтобы система увидела новые настройки dns)
<pre>
/etc/chroot.d/resolv.all
</pre>
 
== Дополнения ==
 
=== Переименование имени сетевого интерфейса ===
Если вы хотите дать имени вашего сетевого интерфейса какое-либо информативное имя (вообще является хорошей практикой переименовать ваш интерфейс из eth0 хотя бы в eth00), вам нужно выполнить следующий ряд действий.
Выполните команду ip a и запишите, какому сетевому интерфейсу какой mac-адрес соответствует.
Отключите интерфейс (где eth1 имя интерфейса)
<pre>#ip link set eth1 down</pre>
Переименуйте его (где eth1 старое имя, local новое имя)
<pre>#ip link set eth1 name local</pre>
Смените название папки с настройками eth1 на новое название
<pre>#mv /etc/net/ifaces/eth1 /etc/net/ifaces/local</pre>
Помня об [https://bugzilla.altlinux.org/show_bug.cgi?id=11786 ошибке 11786] делаем
<pre>#echo "MODULE=модуль_сетевушки" >> /etc/net/ifaces/local/options</pre>
В файле /etc/net/iftab сделайте запись
<pre>local mac 11:22:33:aa:bb:cc</pre>
где 11:22:33:aa:bb:cc мак-адрес карты, полученный ранее по команде ip a.
Перезапустите сеть.
==== Переименование при использовании systemd ====
Если Вы используете systemd, то рекомендуется переименовывать сетевые интерфейсы следующим способом:<br>
В файле {{path|/etc/udev/rules.d/79-net-name.rules}} (если его нет, то необходимо создать его) добавьте для каждого интерфейса следующую строчку:
<pre>SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:14:17:84:47:60", NAME="pve01"</pre>
Указав нужный mac-адрес и новое имя.
 
=== Закрепление порядка загрузки сетевых карт ===
Данный материал может быть актуален дистрибутиве 4.1. Была замечена следующая проблема. При наличии в компьютере двух сетевых карт (одна из которых включена, но не используется) периодически менялись местами имена сетевых интерфейсов, соответственно изменялись параметры сетевой карты и как следствие сетевая карта оказывалась подключена не к той сети (грубое решение — вытащить сетевой кабель и подключить к другой карте)
Для жесткого закрепления порядка загрузки сетевых карт используем <tt>udev</tt>, который загружает все модули одновременно, поэтому устройства иногда инициализируются в различном порядке. Однако мы можем управлять правилами загрузки модулей.
Вариант 1. Самостоятельное указание порядка загрузки модулей сетевых карты с помощью параметра MODULES в файле <tt>/etc/rc.conf</tt>. Модули, добавленные в этот список, будут загружены перед стартом udev, так что вы имеете полный контроль над порядком их загрузки (откуда взять имя модуля, было сказано ранее в этой статье).
<pre># Модуль 8139too всегда будет загружаться перед e100
MODULES=(8139too e100)</pre>
Вариант 2. Создадим правило для управления порядком инициализации сетевых карт
<pre>#echo -n>/etc/udev/rules.d/10-network.rules</pre>
Впишите в него следующие строки (где eth0 имя первого сетевого интерфейса, vykl имя второго интерфейса)
<pre>SUBSYSTEM=="net", ATTRS{address}=="00:1e:8c:da:6a:1e", NAME="eth0"
SUBSYSTEM=="net", ATTRS{address}=="00:14:d1:13:8b:96", NAME="vykl"</pre>
'''ATTRS{address}''' это mac-адрес сетевой карты, для его получения введите команду
<pre>#udevadm info -a -p /sys/class/net/<имя_интерфейса> | grep address</pre>
Вариант 3. На мой взгляд еще проще ('''Добавлено новичком''').
Создаем файл
<pre>#cat > /etc/iftab
inter mac 00:18:f3:bd:98:26
intra mac 00:c0:df:f9:58:35</pre>
или
<pre>#cat > /etc/net/iftab
inter mac 00:18:f3:bd:98:26
intra mac 00:c0:df:f9:58:35</pre>
Где 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 [http://lists.altlinux.org/pipermail/sisyphus/2009-June/340033.html в этом письме]
Замечание 4: плюс ко всему, этот способ будет работать только если etcnet сам будет загружать модули сетевушек. Тоесть в файле options какого либо интерфейса будет присутствовать строка наподобии:
<pre>#cat > /etc/net/ifaces/adsl/options
...
MODULE=e100 </pre>
 
Обратите внимание, mac-адрес записывается прописными буквами (маленькими). Также известно, что некоторые люди имели проблемы, именуя сетевые интерфейсы в старом стиле: <tt>eth0</tt>, <tt>eth1</tt>, и т.д. Попробуйте что-нибудь вроде <tt>lan</tt> или <tt>wlan</tt> или хотя бы <tt>eth00</tt>, если встретитесь с проблемами. Сохраните изменения, таким образом первым всегда будет грузиться первая карта в списке и получать нужное имя, в данном случае eth0.
Если названия ваших двух карт выглядят как eth0 и eth1, определиться какое имя принадлежит какому физическому устройству вам может помочь команда
<pre>#dmesg | grep -i eth</pre>
 
== Что еще почитать? ==
Более подробная информация о настройке сети в альт линукс находится в разделе [http://www.altlinux.org/Etcnet etcnet], а также '''man ip'''. О работе[http://wiki.archlinux.org/index.php/Udev_(Русский) udev].
{{Category navigation|title=Использование оборудования|category=использование оборудования|sortkey={{SUBPAGENAME}}}}

Текущая версия от 18:02, 13 октября 2023

Перенаправление на: