Arch linux настройка сети

Обновлено: 08.07.2024

Бывают ситуации, когда мы не хотим использовать DHCP, а хотим назначить хосту статичный IP. Бывают ситуации, когда мы просто не можем использовать динамический IP адрес – на VDS, например. В этой небольшой инструкции будет показано, как установить статический IP на Arch Linux / BlackArch.

Настройка статического IP при установке Arch Linux / BlackArch

Если нам нужно установить статичный IP адрес на один раз, до перезагрузки (пример, когда это нужно, установка новой системы), то делается это так.

Для начала узнаём имя сетевого интерфейса:

После этого назначение статичного IP делается следующей командой (сам IP, маску подсети и имя сетевого интерфейса замените на свои):

Вы можете немного сократить её:

Тем не менее, этом этапе у вас ещё не будет соединения с Интернетом. Нам нужно прописать шлюз по умолчанию (адрес шлюза замените на свой):

И… всё равно на этом этапе ещё не будет интернета. Нужно прописать DNS сервер.

Для этого откройте файл

и добавьте туда строку:

Наконец-то, теперь можно проверять:

Сделанные таким образом изменения пропадут после перезагрузки.

Настройка статического IP в Arch Linux / BlackArch сохраняющегося после перезагрузки

Узнаем имя сетевого интерфейса:

Нам нужно создать файл с настройками сетевого интерфейса в каталоге /etc/netctl/. Нам необязательно писать его с нуля. Мы можем отредактировать один из примеров, которые поставляются с программой netctl. В следующей команде имя файла static.ens3 можете поменять на любое своё:

Отредактируем этот файл:

Вот пример моего файла:

  • ens3 – имя моего сетевого интерфейса
  • 185.87.49.81/22 – это IP и сокращённая запись маски подсети.
  • 185.87.48.1 – шлюз по умолчанию.
  • 8.8.8.8 – DNS сервер.

Больше ничего в этом файле я не менял.

После редактирования и сохранения файла активируйте и проверьте статус сетевого интерфейса (если вы поменяли имя файла на своё, то измените static.ens3 на имя своего файла):


Также наличие сети можно проверить пингом.

Чтобы изменения сохранились и после перезагрузки, выполните команду:

Близкие статьи

1 thought on “ Настройка статического IP адреса в Arch Linux / BlackArch ”

Конфигурация проводной сети с использованием NetworkМanager

Исходное состояние:

Если был установлен и сконфигурирован netctl то следует его удалить и удалить конфигурационный файл сетевых настроек /etc/netctl/<INTERFACE>

dhcpcd выключен

сетевой проводной интерфейс “опущен”

Просмотр текущих соединений (должно быть пусто)

NAME UUID TYPE DEVICE

dhcpd выключен

● dhcpcd.service - dhcpcd on all interfaces
Loaded: loaded (/usr/lib/systemd/system/dhcpcd.service; disabled; vendor preset: disabled)
Active: inactive (dead)

Создание нового проводного соединения со статическим адресом

Просмотр текущих сетевых устройств (я уже переименовал enp0s25 в net0 для удобства, см. раздел Привязка MAC-адресов к сетевым интерфейсам)

DEVICE TYPE STATE CONNECTION
net0 ethernet disconnected --
lo loopback unmanaged --

Создание соединения со статическим адресом (без автоконнекта)

Проверка что создано

NAME UUID TYPE DEVICE
myEthernet 504eed46-833e-4943-94d2-8c5b9ae02bfe 802-3-ethernet --

Проверка состояния

DEVICE TYPE STATE CONNECTION
net0 ethernet disconnected --
lo loopback unmanaged --

Поднятие соединения

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/0)

Контроль присвоения адреса на интерфейс

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:84:7b:60 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.64/32 brd 192.168.0.64 scope global net0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe84:7b60/64 scope link
valid_lft forever preferred_lft forever

Контроль связи с интернет и шлюзом

Интернета нет (DNS не разрешает адреса):

шлюз доступен:

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.52 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.873 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=1.21 ms
^C
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.873/1.204/1.527/0.270 ms

интернет доступен по адресам:

PING 213.180.193.3 (213.180.193.3) 56(84) bytes of data.
64 bytes from 213.180.193.3: icmp_seq=6 ttl=57 time=19.9 ms
64 bytes from 213.180.193.3: icmp_seq=7 ttl=57 time=19.5 ms
^C
--- 213.180.193.3 ping statistics ---
10 packets transmitted, 5 received, 50% packet loss, time 9014ms
rtt min/avg/max/mdev = 19.589/19.733/19.956/0.131 ms

Контроль созданного соединения в конфигурационном файле

[connection]
id=myEthernet
uuid=504eed46-833e-4943-94d2-8c5b9ae02bfe
type=ethernet
autoconnect=false
interface-name=net0
permissions=
secondaries=

[ipv4]
address1=192.168.0.64/24,192.168.0.1
dns-search=
method=manual

[ipv6]
dns-search=
method=auto

Модификация соединения

Добавить DNS

Обновить соединение

Теперь работает интернет по именам

Для добавления дополнительной информации в поле используем символ +. Например можно добавить еще один ip адрес:

И второй маршрут в другую сеть:

Осталось обновить настройки и просмотреть технические данные соединения:

В статье описана настройка сетевого подключения на 3-м уровне модели OSI и выше. Отдельные способы передачи информации рассматриваются на подстраницах /Ethernet и /Wireless.

Contents

Проверка подключения

При проблемах с подключением к сети последовательно проверьте, что:

Для проверки соединения с хостом, используется утилита ping.

Утилита выводит информацию о каждом полученном ответе. Подробнее см. ping(8) . Учтите, что удалённый хост может быть настроен игнорировать ICMP-запросы [1].

Управление сетевым подключением

Для настройки сетевого подключения сделайте следующее:

  1. Убедитесь, что сетевой интерфейс обнаружен и включён.
  2. Подключитесь к сети. Вставьте Ethernet-кабель или подключитесь к беспроводной сети.
  3. Настройте сетевое подключение:
      .
    • динамический IP-адрес: используйте DHCP.
Примечание: В установочном образе в качестве DHCP-клиента используются systemd-resolved и systemd-networkd для всех типов сетевых интерфейсов — Ethernet, WLAN и WWAN.

net-tools

Утилиты net-tools считаются устаревшими; рекомендуется использовать пакет iproute2 [2].

Устаревшая команда Замена
arp ip neigh
ifconfig ip address, ip link
netstat ss
route ip route

iproute2

iproute2 (зависимость мета-пакета base ) предоставляет утилиту командной строки ip(8) для управления сетевыми интерфейсами, IP-адресами и таблицей маршрутизации. Учтите, что сделанные с помощью ip настройки исчезнут после перезагрузки. Для задания постоянных настроек используйте сетевой менеджер или автоматизируйте ip-команды с помощью сценариев или юнитов systemd. Также обратите внимание, что многие команды ip имеют сокращённую форму, но в этой статье для ясности они указываются полностью.

Сетевые интерфейсы

Обнаружение сетевых интерфейсов

Имена как проводных, так и беспроводных интерфейсов можно узнать командами ls /sys/class/net и ip link . Имейте в виду, что префиксом lo обозначается петлевое устройство, которое не используется для сетевых соединений.

Включение и отключение сетевых интерфейсов

Включение и выключение интерфейса производится командой ip link set интерфейс up|down (подробнее см. ip-link(8) ).

Для проверки текущего состояния интерфейса (например, enp2s0 ) выполните:

На состояние интерфейса указывает UP в <BROADCAST,MULTICAST,UP,LOWER_UP> , а не state UP .

Статический или динамический адрес?

Статический IP-адрес

Настройка статического IP-адреса производится либо посредством сетевого менеджера, либо с помощью демона dhcpcd.

IP-адреса

Для управления IP-адресами используется команда ip-address(8) .

Показать существующие IP-адреса:

Добавить IP-адрес к сетевому интерфейсу:

  • адрес указан в CIDR-нотации с маской подсети;
  • спецсимвол + говорит утилите ip вычислить широковещательный адрес на основе IP-адреса и маски подсети.
Примечание: Убедитесь, что добавленные вручную IP-адреса не конфликтуют с адресами, выданными DHCP.

Удалить IP-адрес устройства:

Удалить все адреса определённого интерфейса:

Совет: IP-адрес можно вычислить с помощью ipcalc ( ipcalc ).

Таблицы маршрутизации

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

Настройка таблицы маршрутизации производится командой ip-route(8) .

В примерах ниже значение ПРЕФИКС либо указывается в CIDR-нотации, либо принимает значение default для шлюза по умолчанию.

Показать маршруты IPv4:

Показать маршруты IPv6:

Сервер DHCP предоставляет клиенту динамический IP-адрес, маску подсети, IP-адрес шлюза по умолчанию и опционально — сервер имён DNS.

Для использования DHCP нужен DHCP-сервер в вашей сети и DHCP-клиент на локальной машине:

Сервер

Сетевые менеджеры

Сетевой менеджер позволяет создавать т.н. "сетевые профили" с настройками подключений, что облегчает переключение между сетями.

Примечание: Выбор приложений довольно широк, но нужно помнить, что все варианты взаимоисключают друг друга. Запускать два сетевых демона одновременно запрещено.

Имя хоста

Имя хоста — уникальное имя-идентификатор машины в сети. Имя хоста хранится в файле /etc/hostname (см. hostname(5) и hostname(7) ). В файле также может храниться доменное имя системы, если таковое имеется. Чтобы задать имя хоста, добавьте в файл /etc/hostname одну строку:

Совет: Рекомендации по выбору имени хоста приведены в RFC 1178.

В качестве альтернативы имя хоста можно задать утилитой hostnamectl(1) :

Утилита hostname(1) из пакета inetutils позволяет задать имя хоста временно, до первой перезагрузки:

См. machine-info(5) о том, как настроить "красивое" имя машины и другие метаданные.

Локальное разрешение имён

Модуль nss-myhostname входящей в состав systemd службы Name Service Switch (NSS) позволяет выполнять разрешение имени локально без обращения к файлу /etc/hosts . Этот модуль включён по умолчанию. Однако следует иметь в виду, что некоторые программы всё же полагаются на файл /etc/hosts . [5], [6]

Добавьте следующие строки в /etc/hosts :

Примечание: Порядок имён/псевдонимов после IP-адреса имеет значение. Сразу после IP-адреса следует "каноническое" имя хоста, к которому при неоходимости может присоединиться название родительского домена, отделенное от имени точкой (как, например, .localdomain выше). Все последующие значения на той же строке считаются псевдонимами. Подробнее см. hosts(5) .

В результате система будет использовать оба варианта — и NSS, и файл /etc/hosts :

Если хост использует статический IP-адрес, то его следует указать вместо 127.0.1.1 .

Разрешение имён в локальной сети

Чтобы машина была доступна по локальной сети по имени хоста, следует выбрать один из вариантов:

Советы и рекомендации

Смена имени интерфейса

Вы можете изменить имя устройства, установив его вручную при помощи правила udev. Например:

Эти правила будут применяться автоматически при загрузке.

Кое-что на заметку:

  • Узнать MAC-адрес интерфейса можно командой cat /sys/class/net/имя_устройства/address
  • Убедитесь, что в правиле udev шестнадцатеричные значения указаны строго в нижнем регистре.

Если сетевой интерфейс имеет динамический MAC-адрес, вместо последнего можно использовать DEVPATH :

DEVPATH подключённых устройств можно узнать по символическим ссылкам в каталоге /sys/class/net/ :

Паттерн пути устройства (DEVPATH) должен подходить для обоих названий устройств, и нового, и старого, поскольку одно и то же правило udev может срабатывать несколько раз в процессе загрузки. Например, во втором правиле в примере выше шаблон "/devices/pci*/*1c.0/*/net/enp*" будет ошибочным, поскольку после изменения имени на en он перестанет совпадать, и если после этого сработает системное правило по умолчанию, то имя изменится обратно на что-то вида enp1s0 .

Если вы используете USB-интерфейс (например, подключаясь через Android-смартфон) с динамическим MAC-адресом и хотите иметь возможность использовать разные USB-порты, можно создать правило на основе данных о производителе и ID устройства:

Проверить созданное правило из пространства пользователя можно командой udevadm --debug test /sys/class/net/* . Не забудьте предварительно отключить интерфейс, который собираетесь переименовать (например, выполнив ip link set enp1s0 down ).

Примечание: При выборе статических имен вы должны избегать использования формата "ethX" и "wlanX", поскольку это может привести к состоянию гонки между ядром и udev во время загрузки системы. Вместо этого лучше взять имена интерфейсов, которые не используются по умолчанию в ядре, например: net0 , net1 , wifi0 , wifi1 . Подробнее см. документацию systemd.

Традиционные названия интерфейсов

Если вы предпочитаете традиционные названия интерфейсов вроде eth0 , отключите назначение предсказуемых имён интерфейсов, создав маску для правила udev.

Другой способ — добавить net.ifnames=0 в параметры ядра.

Установка MTU и длины очереди

Вы можете изменить MTU и длину очереди для устройства, определив их вручную в правиле udev. Например:

tx_queue_len : Малые значения — для медленных устройств с высокой задержкой (ADSL, ISDN). Большие значения рекомендованы для высокоскоростных соединений с серверами, где предполагается передача значительных объёмов данных.

Объединение сетевых интерфейсов (bonding) или LAG

Бондинг — объединение нескольких сетевых интерфейсов в одно логическое устройство. См. статьи netctl, systemd-networkd и Wireless bonding.

Псевдонимы для IP-адресов

Псевдонимы (aliases) необходимы для назначения нескольких IP-адресов одному сетевому интерфейсу. Благодаря этому один узел сети может иметь несколько подключений, каждое из которых будет использоваться для конкретной цели. Типичное применение этой возможности — виртуальный хостинг Web- и FTP-серверов или реорганизация серверов без необходимости обновления каких-либо других машин (особенно полезно для серверов имен).

Пример

Чтобы вручную назначить псевдоним для определенного сетевого интерфейса (например, enp2s0 ) используйте утилиту ip из пакета iproute2 :

Для удаления псевдонима выполните:

По умолчанию для исходящих из определённой подсети пакетов используется основной псевдоним устройства. Если же отправитель находится в подсети вторичного псевдонима, то IP-адрес отправителя в заголовке пакета будет соответствующим. В случае наличия более чем одного сетевого интерфейса маршруты по умолчанию можно узнать командой ip route .

Promiscuous mode

Promiscuous mode ("неразборчивый" режим) предполагает, что (беспроводной) сетевой интерфейс перенаправляет весь входящий трафик ядру операционной системы для дальнейшей обработки. Это противоположность "нормальному режиму", при котором интерфейс отбрасывает пакеты, которые не ожидались быть полученными. Чаще всего эта возможность используется для решения сетевых проблем и анализа пакетов.

Чтобы включить "неразборчивый" режим для интерфейса eth0 , выполните:

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

Показать все TCP-сокеты с названиями сервисов:

Показать все TCP-сокеты с номерами портов:

Показать все UDP-сокеты:

За подробной информацией обращайтесь к справочной странице ss(8) .

Решение проблем

Проблема масштабирования TCP window

Заголовк TCP-пакета содержит поле "Window", которое определяет, какое количество данных может быть прислано в ответ другим хостом. Ширина поля составляет 16 бит, следовательно, размер окна не может превышать 64 Kбайт. С учётом кэширования пакетов, связанного с необходимостью восстановить их исходный порядок, значение окна легко может быть превышено.

Некоторые сломанные маршрутизаторы и межсетевые экраны переопределяют это значение на 0, что вызывает недопонимание между хостами. В ядре Linux версии 2.6.17 была введена в действие новая методика вычисления коэффициента масштабирования, в результате чего проблема с неправильно настроенными маршрутизаторами и экранами стала проявляться очень ярко.

В итоге соединение в лучшем случае очень медленное или часто прерывается.

Диагностика

Если у вас появилась такая проблема, вывод dmesg будет нормальным, логи - чистыми, а ip addr сообщит о нормальном состоянии. Все будет выглядеть нормально.

Если вы не можете просматривать никакие веб-сайты, но можете отправлять запросы ping на некоторые узлы, высока вероятность, что у вас именно эта проблема: ping использует ICMP, поэтому проблемы TCP на него не влияют.

С помощью Wireshark можно будет увидеть, что UDP- и ICMP-соединения работают, а TCP-соединение с внешними узлами установить не удаётся.

Способы решения проблемы

Плохой

Плохой способ заключается в изменении значения tcp_rmem , на основе которого вычисляется коэффициент масштабирования. Скорее всего, это решит проблему, кроме случая связи с особо удалёнными хостами.

Хороший

Просто отключите масштабирование. Эта функция — довольно приятное дополнение к стандартному TCP, и без неё может быть некомфортно, особенно если вы не имеете возможности перенастроить неправильно работающий маршрутизатор. Есть несколько способов отключения масштабирования, и, кажется, наиболее надёжный из них (работает с большинством ядер) — добавить следующую строку в файл /etc/sysctl.d/99-disable_window_scaling.conf (см. также sysctl):

Лучший

Проблема вызвана неправильно работающим маршрутизатором/межсетевыми экранами, поэтому просто замените его. Некоторые пользователи отмечали, что таким маршрутизатором был их собственный маршрутизатор DSL.

Дополнительная информация

Этот раздел основывается на статье LWN TCP window scaling and broken routers и архивной статье Kernel Trap Window Scaling on the Internet.

На странице LKML есть также несколько ссылок по теме.

Нет подключения к локальной сети через мост

Первый компьютер подключён к двум локальным сетям. Второй — к одной локальной сети и первому компьютеру. Выполните следующие команды, чтобы дать второму компьютеру доступ к сети за мостовым интерфейсом (на первой машине):

Для доступа к сетевым картам в Linux используются так называемые интерфейсы. Интерфейсы это не файлы устройств и их нет в каталоге /dev. Интерфейсы создаются динамически и не всегда связаны с сетевыми картами. Например интерфейс ppp0 - это интерфейс VPNа, организованного по протоколу PPTP, а интерфейс lo это виртуальная сетевая карта с адресом localhost (127.0.0.1). В Linux имена интерфейсов традиционно состоят из мнемонического типа интерфейса и его порядкового номера. Карты ethernet доступны через интерфейсы eth0, eth1 и т.д. В системах, использующих systemd способ именования другой - интерфейсы имеют имена вида enp2s0 (en -Ethernet, p - PCI, 2 - номер на шине) Список всех интерфейсов можно посмотреть командой ifconfig -a или ip link .

Привязка интерфейса к карте

При наличии нескольких сетевых карт возникает вопрос о порядке их нумерации. В CentOS 6 эта задача возложена на подсистему обнаружения и конфигурации устройств - udev. В системах с systemd правила именования встроены в udev, но могот быть переопределены, как написано ниже.

Видно, что нумерация опирается на аппаратный (MAC) адрес карты. Если в компьютере заменить карту, то интерфейс eth0 станет недоступным, а новая карта получит имя eth1. Если есть желание вручную назначить имена картам, то можно отредактировать этот файл, выставив желаемые соответствия между MAC адресами именами интерфейсов (возможно потребуется перезагрузка).

ifcfg

Классическая утилита конфигурации сетевых интерфейсов ifcfg

route

Настройка таблицы маршрутизации route

В современных дистрибутивах линукса на смену ifconfig и route приходит универсальная утилита ip

Адреса серверов DNS и имя локального домена вписываются в файл /etc/resolv.conf

Для просмотра доступных сетевых интерфейсов используется команда ip link

ArchLinux использует для настройки сети systemd/netctl . Для конфигурации используются файлы профилей, которые хранятся в /etc/netctl/ . В данном каталоге есть подкаталог examples/ из которого можно копировать файлы с образцами профилей в /etc/netctl/ . Например:

Содержимое enp1s0-work после редактирования

Базовые команды netctl

Просмотр доступных интерфейсов - ifcfg -a

Файл конфигурации интерфейсов - /etc/network/interfaces . auto - говорит о том, что интерфейс надо конфигурировать при старте системы.

После смены настроек в /etc/network/interfaces , необходимо отключить и снова включить интерфейс.

Общие настройки сети

Файл /etc/sysconfig/network используется стартовыми скриптами и содержит ключевые параметры - нужна ли сеть, нужно ли конфигурировать IP v6, имя компьютера. Сюда можно вписать шлюз по умолчанию, но CentOS 6 ориентируется на динамическое подкючение к сетям через WiFi и вписывает его в конфигурацию подходящего интерфейса.

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

Файлы в каталоге /etc/sysconfig/network-scripts с именами вида ifcfg-eth0

Интерфейс, получающий адрес по DHCP

Дополнительный IP адрес на интерфейсе eth1

Инициализация VLAN на eth1

Настройка DNS

Файл /etc/resolv.conf

Ручная настройка имен хостов файл /etc/hosts

Настройка брандмауэра

Файл /etc/sysconfig/system-config-firewall правила для настройки программой system-config-firewall

Файл /etc/sysconfig/iptables текущие правила, сохраненные на случай перезагрузки.

После ручного изменения правил их можно сохранить командой service iptables save

Arch Linux ‒ это один из немногих дистрибутивов Linux, использующих модель роллинг-релизов. Это означает, что в нем доступны самые последние версии пакетов. Это одновременно является его как преимуществом так и недостатком. Пересесть на него меня заставила необходимость: мое компьютерное железо (процессор ryzen 5 2600 и видеоадаптер rx 590) оказались не совместимы с версией Linux Kernel младше 4.20.

image

На самом деле все не так плохо, но неприятные инциденты имеют место хотя и очень редко.

Качаем образ и записываем его с помощью команды:

Где sdX – имя нашего USB устройства. Перегружаемся после удачного завершения операции.

В Windows для создания загрузочной флешки можно использовать Rufus. При этом образ лучше записывать в dd режиме.

При загрузке системы нажимаем F2 или Del (зависит от производителя материнской платы). Во вкладке BIOS в приоритете загрузки делаем первым наше USB-устройство. Нажимаем F10 и сохраняем настройки.

При подключении от кабеля ничего настраивать не надо. Настройка wifi требует ввода пары команд:

Следует отметить, что не все usb wifi адаптеры гараниторованно поддерживаются. Например, у меня не захотел работать dexp wfa 301, а вот с tp-link все ок.

Для начала посмотрим все доступные устройства:

Создадим новый раздел:

В меню fdisk вводим n для создания нового раздела, порядковый номер раздела, потом начальное и конечные смещения. При задании конечного смещения можно отрицательное значение, например, -10G , так мы оставим свободными 10 Гб в конце диска. Для записи изменений на жесткий диск вводим w и выходим - q .

Теперь нужно разметить раздел по LVM. Касательно LVM: единственное удобство в нем для меня – это возможность динамически менять размер разделов. Самая частая проблема, которая у меня была раньше – это то, что я не угадывал размер для корня. Когда в нем кончалось место, я с установочной флешки через gparted пытался отщепнуть от виндового раздела кусок (а у меня разделы всегда шли так: recovery, efi, reserved, windows, root, home), из этого куска создавал временный раздел, копировал в него файлы с хомяка, удалял хомяка, изменял размер корневого, опять создавал хомяка и из временного раздела копировал в него файлы, потом удалял временный раздел, расширял виндовый, правил /etc/fstab … А с LVM я могу просто выполнить пару команд: ужать хомяка, расширить корневой, причем, на лету. Но эксперты могут возразить: «Хомяк на отдельном разделе не нужен!» — Да, если хочешь потерять все данные при переустановке.

Читайте также: