Network configuration (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Network configuration
. Дата последней синхронизации: 12 октября 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Network Debugging
Межсетевой экран
Раздача интернета
Router
В статье описана настройка сетевого подключения на
3-м уровне модели OSI
и выше. Вещи, специфичные для конкретного способа подключения, рассматриваются на подстраницах
/Ethernet
(для проводной сети) и
/Wireless
(для беспроводной).
Проверка подключения
При проблемах с подключением к сети последовательно проверьте, что:
Сетевой интерфейс
обнаружен и включён. В противном случае проверьте драйвер устройства – см.
/Ethernet#Драйвер устройства
и
/Wireless#Драйвер устройства
.
Вы подключены к сети: воткнут сетевой кабель или есть
подключение к беспроводной сети
.
Сетевому интерфейсу присвоен
IP-адрес
.
Правильно настроена
таблица маршрутизации
.
Возможно
пропинговать
локальный IP-адрес (например,
шлюз по умолчанию
).
Возможно
пропинговать
публичный IP-адрес (например,
9.9.9.9
— DNS-сервер Quad9 Foundation, имеющий удобный для тестирования адрес).
Работает
разрешение доменных имён
(например,
archlinux.org
).
Ping
Для проверки достижимости хоста используется утилита
ping
.
$ ping www.example.com
PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=56 time=10.683 ms
...
Для каждого полученного ответа
ping
выводит строку, подобную приведённым выше. Для остановки используйте
Ctrl+c
. Подробнее см.
ping(8)
. Учтите, что удалённый хост может быть настроен игнорировать ICMP-запросы
[1]
.
Если вместо ответов вы получаете ошибку (смотрите
ping error indications
) или не получаете ничего, это может быть связано с настройками сети, но также могут быть проблемы со шлюзом по умолчанию или интернет-провайдером. Воспользуйтесь утилитой
traceroute
для диагностики маршрута к хосту.
Управление сетевым подключением
Для настройки сетевого подключения сделайте следующее:
Убедитесь, что
сетевой интерфейс
обнаружен и включён.
Подключитесь к сети. Вставьте Ethernet-кабель или
подключитесь к беспроводной сети
.
Настройте сетевое подключение:
Большинство сетей использует
Dynamic Host Configuration Protocol
для настройки. Клиенты автоматически получают динамический или статический IP-адрес от DHCP-сервера с помощью
отдельного DHCP-клиента или сетевого менеджера
.
Если сеть не использует DHCP-сервер, вы можете настроить
статический IP-адрес
, маршруты, шлюз по умолчанию и DNS-серверы вручную.
Примечание
В установочном образе используются
systemd-networkd
в качестве DHCP-клиента для всех типов сетевых интерфейсов —
Ethernet
,
WLAN
и
WWAN
, и
systemd-resolved
для работы с
DNS
, смотрите
systemd-resolved (Русский)#DNS
.
Вручную
iproute2
iproute2
(зависимость
мета-пакета
base
) предоставляет утилиту командной строки
ip(8)
для управления
сетевыми интерфейсами
,
IP-адресами
и
таблицей маршрутизации
. Учтите, что сделанные с помощью
ip
настройки исчезнут после перезагрузки. Для задания постоянных настроек используйте
сетевой менеджер
или автоматизируйте
ip
-команды с помощью сценариев или
юнитов systemd
. Также обратите внимание, что многие команды
ip
имеют сокращённую форму, но в этой статье для ясности они указываются полностью.
Примечание
Утилиты
net-tools
считаются устаревшими; рекомендуется использовать пакет
iproute2
.
[2]
Смотрите также
Deprecated Linux networking commands and their replacements
.
Статический IP-адрес
Настройка статического IP-адреса производится либо посредством
сетевого менеджера
, либо с помощью демона
dhcpcd
.
Чтобы настроить статический IP-адрес вручную, добавьте IP-адрес по рекомендациям в разделе
#IP-адреса
, настройте
таблицу маршрутизации
и
DNS-сервер
.
IP-адреса
Для управления
IP-адресами
используется команда
ip-address(8)
.
Показать существующие IP-адреса:
$ ip address show
Добавить IP-адрес к сетевому интерфейсу:
# ip address add
адрес/длина_префикса
broadcast + dev
интерфейс
Обратите внимание:
адрес указывается в
CIDR-нотации
с
маской подсети
;
спецсимвол
+
говорит утилите
ip
вычислить
широковещательный адрес
на основе IP-адреса и маски подсети.
Примечание
Убедитесь, что добавленные вручную IP-адреса не конфликтуют с адресами, полученными через DHCP.
Удалить IP-адрес интерфейса:
# ip address del
адрес/длина_префикса
dev
интерфейс
Удалить все адреса определённого интерфейса:
# ip address flush dev
интерфейс
Совет
Адреса IPv4 можно вычислить с помощью
ipcalc
(
ipcalc
).
Таблицы маршрутизации
Таблица маршрутизации
определяет, можно ли связаться с удалённым хостом напрямую или нужно использовать какой-то шлюз (маршрутизатор). Если подходящего маршрута в таблице нет, то используется
шлюз по умолчанию
.
Настройка таблицы маршрутизации производится командой
ip-route(8)
.
В примерах ниже значение
ПРЕФИКС
либо указывается в
CIDR-нотации
, либо принимает значение
default
для шлюза по умолчанию.
Показать маршруты IPv4:
$ ip route show
Показать маршруты IPv6:
$ ip -6 route show
Добавить маршрут:
# ip route add
ПРЕФИКС
via
адрес
dev
интерфейс
Удалить маршрут:
# ip route del
ПРЕФИКС
via
адрес
dev
интерфейс
Автоматически
Автоматическая настройка сети осуществляется с помощью
Dynamic Host Configuration Protocol
(DHCP). DHCP-сервер в сети назначает IP-адреса, сообщает IP-адреса шлюза по умолчанию и, как вариант, DNS-серверы по запросу DHCP-клиента.
Сравнительная таблица DHCP-серверов приведена в разделе
Router#DNS and DHCP
.
Сетевые менеджеры
Сетевой менеджер позволяет создавать т.н. «сетевые профили» с настройками подключений, что облегчает переключение между сетями.
Совет
Проверить, запущен ли DHCPv4-сервер, можно с помощью
dhcping
.
Примечание
Каждый отдельно взятый сетевой интерфейс должен управляться только одним DHCP-клиентом или сетевым менеджером, поэтому скорее всего в системе должен быть запущен только один DHCP-клиент или сетевой менеджер.
Программа
Тип соединения
Аутентификация Wi-Fi
IP-адреса, маршруты и DNS
Интерфейс
Ethernet
PPPoE
Мобильный интернет
WPA/WPA2
WPA3
Статический IP
DHCP-клиент
Разрешение доменных имён
CLI
TUI
GUI
dhclient
1
Да
Нет
Нет
Нет
2
Да
встроенный
Да (записывает
/etc/resolv.conf
)
Нет
Нет
Нет
dhcpcd
Да
Нет
Нет
Запускает wpa_supplicant
3
Да
встроенный
Да
(использует
resolvconf
или записывает
/etc/resolv.conf
)
Нет
Нет
dhcpcd-ui
AUR
ConnMan
Да
Нет
Да (через
ofono
AUR
)
Да (через
wpa_supplicant
или
iwd
)
Да
встроенный
Да
(запускает встроенный распознаватель и записывает
/etc/resolv.conf
)
connmanctl(1)
Да
Да
netctl
Да
Да
(через
ppp
)
Да (через
ppp
)
Да (через
wpa_supplicant
)
Нет
Да
dhcpcd
или
dhclient
Да
(использует
resolvconf
)
netctl(1)
wifi-menu(1)
4
Нет
NetworkManager
Да
Да
(через
rp-pppoe
)
Да
(через
modemmanager
)
Да (через
wpa_supplicant
или iwd
)
Да
встроенный,
dhclient
или
dhcpcd
Да
(использует
systemd-resolved
,
resolvconf
или записывает
/etc/resolv.conf
)
nmcli(1)
nmtui(1)
Да
systemd-networkd
Да
Нет
Нет
Нет
2
Да
встроенный
Да (использует
systemd-resolved
)
networkctl(1)
Нет
Нет
wpa_supplicant
IEEE 802.1X
Нет
Нет
Да
Да
Нет
wpa_cli(8)
Нет
wpa_supplicant_gui
AUR
iwd
IEEE 802.1X
Нет
Нет
Да
Да
Да
встроенный
Да
(использует
systemd-resolved
или
resolvconf
)
iwctl(1)
Нет
iwgtk
AUR
Не поддерживается с 2022 года. ISC не рекомендует использовать его.
Беспроводная аутентификация может быть настроена отдельно с помощью
wpa_supplicant
или
iwd
.
Беспроводная аутентификация должна быть настроена отдельно с помощью
wpa_supplicant
.
Позволяет управлять только Wi-Fi соединениями.
Сетевые интерфейсы
udev
назначает имена сетевых интерфейсов в соответствии со
схемой именования
, в которой тип устройства обозначается двухбуквенным префиксом:
en
(проводной/
Ethernet
),
wl
(беспроводной/
WLAN
) или
ww
(
WWAN
). Подробнее см.
systemd.net-naming-scheme(7)
.
Совет
Смена имени интерфейса описана в разделах
#Смена имени интерфейса
и
#Традиционные названия интерфейсов
.
Обнаружение сетевых интерфейсов
Имена как проводных, так и беспроводных интерфейсов можно узнать командами
ls /sys/class/net
и
ip link
. Имейте в виду, что префиксом
lo
обозначается
петлевое устройство
, которое не используется для сетевых соединений.
Имена беспроводных устройств можно узнать командой
iw dev
. См. также
/Wireless#Определение имени интерфейса
.
Если сетевой интерфейс не обнаружен, убедитесь, что его драйвер был загружен (cм.
/Ethernet#Драйвер устройства
и
/Wireless#Драйвер устройства
).
Включение и отключение сетевых интерфейсов
Включение и выключение интерфейса производится командой
ip link set
интерфейс
up|down
(подробнее см.
ip-link(8)
).
Для проверки текущего состояния интерфейса (например,
enp2s0
) выполните:
$ ip link show dev enp2s0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT qlen 1000
...
На состояние интерфейса указывает
UP
в
<BROADCAST,MULTICAST,UP,LOWER_UP>
, а не
state DOWN
.
Примечание
Если выключить интерфейс, через который проходит маршрут по умолчанию, то маршрут будет удалён. Последующее включение интерфейса не восстановит автоматически исходный маршрут. Восстановление маршрута описано в разделе
#Таблицы маршрутизации
.
Смена имени интерфейса
Примечание
При изменении схемы именования не забудьте обновить все связанные с сетью файлы настроек и юниты systemd, чтобы применить в них проведённое изменение.
Вы можете изменить имя устройства, установив его вручную с помощью файла
systemd.link(5)
. Например:
/etc/systemd/network/10-net0.link
[Match]
PermanentMACAddress=aa:bb:cc:dd:ee:ff

[Link]
Name=net0
В качестве альтернативы можно использовать правило udev:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net0"
Эти правила будут применяться автоматически при загрузке.
Чтобы применить изменения сразу, запустите trigger вручную для подсистемы
net
:
# udevadm trigger --verbose --subsystem-match=net --action=add
Проверить
созданное правило из пространства пользователя можно командой
udevadm --debug test /sys/class/net/*
.
Примечание
Приоритет
Name
ниже чем
NamePolicy
, поэтому убедитесь, что последний параметр не установлен или пуст, иначе имя не будет изменено.
99-default.link
устанавливает
NamePolicy
, из чего следует, что пользовательская конфигурация должна находиться по порядку перед этим файлом, то есть должна иметь числовой префикс.
Перед изменением имени сетевой интерфейс должен быть отключен.
[3]
Чтобы получить MAC-адрес каждой карты, выполните команду
ip link
.
Убедитесь, что в правилах udev используются шестнадцатеричные значения в нижнем регистре. Он не любит верхний регистр.
Если сетевой интерфейс имеет динамический MAC-адрес, можно использовать
Path
(узнать который можно с помощью
networkctl status
интерфейс
):
/etc/systemd/network/10-net1.link
[Match]
Path=pci-0000:01:00.0

[Link]
Name=net1
Для правила udev можно использовать
DEVPATH
:
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", DEVPATH=="/devices/pci*/*1c.0/*/net/*", NAME="net1"
DEVPATH
подключённых устройств можно узнать по символическим ссылкам в каталоге
/sys/class/net/
:
$ file /sys/class/net/*
/sys/class/net/enp0s20f0u4u1: symbolic link to ../../devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.1/2-4.1:1.0/net/enp0s20f0u4u1
/sys/class/net/enp0s31f6:     symbolic link to ../../devices/pci0000:00/0000:00:1f.6/net/enp0s31f6
/sys/class/net/lo:            symbolic link to ../../devices/virtual/net/lo
/sys/class/net/wlp4s0:        symbolic link to ../../devices/pci0000:00/0000:00:1c.6/0000:04:00.0/net/wlp4s0
Паттерн пути устройства (DEVPATH) должен подходить для обоих названий устройств, и нового, и старого, поскольку одно и то же правило udev может срабатывать несколько раз в процессе загрузки. Например, во втором правиле в примере выше шаблон
"/devices/pci*/*1c.0/*/net/en*"
будет ошибочным, поскольку после изменения имени на
net1
он перестанет совпадать, и если после этого сработает системное правило по умолчанию, то вернётся старое имя.
Если вы используете USB-интерфейс (например, подключаясь через Android-смартфон) с динамическим MAC-адресом и хотите иметь возможность использовать разные USB-порты, можно создать правило на основе данных о производителе и ID устройства:
/etc/systemd/network/20-net2.link
[Match]
Property=ID_VENDOR_ID=12ab ID_MODEL_ID=3cd4

[Link]
Name=net2
или
/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="12ab", ATTRS{idProduct}=="3cd4", NAME="net2"
Примечание
При выборе статических имен
вы должны избегать использования формата "eth
X
" и "wlan
X
"
, поскольку это может привести к состоянию гонки между ядром и udev во время загрузки системы. Вместо этого лучше взять имена интерфейсов, которые не используются по умолчанию в ядре, например:
net0
,
net1
,
wifi0
,
wifi1
. Подробнее см. документацию
systemd
.
Традиционные названия интерфейсов
Если вы предпочитаете традиционные названия интерфейсов вроде
eth0
, отключите назначение
предсказуемых имён интерфейсов
, изменив
NamePolicy
для
net_setup_link
из udev:
/etc/systemd/network/99-default.link.d/traditional-naming.conf
[Link]
NamePolicy=keep kernel
Или можно полностью отключить
net_setup_link
, создав маску для правила udev.
# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Другой способ — добавить
net.ifnames=0
в
параметры ядра
.
Важно
systemd.link(5)
полагается на
net_setup_link
для своей работы. Используйте первый способ, если вы не имеете полное представление о том, что вы делаете.
Установка MTU и длины очереди
Вы можете изменить
MTU
и длину очереди для устройства, определив их вручную с помощью настроек в
systemd.link(5)
. Например:
/etc/systemd/network/30-mtu.link
[Match]
Type=wlan

[Link]
MTUBytes=1500
TransmitQueueLength=2000
Или с помощью правила udev:
/etc/udev/rules.d/10-network.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", ATTR{mtu}="1500", ATTR{tx_queue_len}="2000"
MTUBytes
: Значение выше 1500 (т.н.
jumbo-кадры
) может значительно повысить скорость передачи информации. Имейте в виду, что указанное значение MTU должны поддерживать все сетевые интерфейсы, в том числе коммутаторы в локальной сети, иначе передача jumbo-кадров завершится неудачно. Для PPPoE величина MTU не должна превышать 1492. Также значение MTU можно задать посредством
systemd.netdev(5)
.
TransmitQueueLength
: Малые значения — для медленных устройств с высокой задержкой (
ADSL
,
ISDN
). Большие значения рекомендованы для высокоскоростных соединений с серверами, где предполагается передача значительных объёмов данных.
Имя хоста
Имя хоста
— уникальное имя-идентификатор машины в сети. Имя хоста хранится в файле
/etc/hostname
(см.
hostname(5)
и
hostname(7)
). В файле также может храниться доменное имя системы, если таковое имеется. Чтобы задать имя хоста, добавьте в файл
/etc/hostname
одну строку:
/etc/hostname
имя-хоста
Совет
Рекомендации по выбору имени хоста приведены в
RFC 1178
.
В качестве альтернативы имя хоста можно задать утилитой
hostnamectl(1)
:
# hostnamectl set-hostname
имя-хоста
Утилита
hostname(1)
из пакета
inetutils
позволяет задать имя хоста временно, до первой перезагрузки:
# hostname
имя-хоста
Смотрите
machine-info(5)
о том, как настроить «красивое» имя машины и другие метаданные.
Разрешение имён в локальной сети
Чтобы машина была доступна по локальной сети по имени хоста, следует выбрать один из вариантов:
отредактировать файл
/etc/hosts
на каждом устройстве вашей локальной сети, см.
hosts(5)
;
выбрать
DNS-сервер
для разрешения вашего имени хоста и настроить все машины в локальной сети использовать его (например, посредством
DHCP
);
использовать
Zeroconf
-сервис, автоматически создающий IP-сети без необходимости выполнения ручных настроек. Можно выбрать одну из двух реализаций:
NetBIOS
. Разработан компанией Microsoft, входит в состав
Samba
. Всё, что необходимо — запустить
nmb.service
. Машины с операционными системами Windows, macOS или Linux и работающим
nmb
смогут найти ваш компьютер в сети;
mDNS
. Возможны два варианта использования:
Avahi
и
systemd-resolved
. Компьютеры с macOS или Linux, на которых запущен Avahi или systemd-resolved, смогут обнаружить ваш хост. Windows не имеет встроенного mDNS клиента или демона. Старый Win32 API не поддерживает mDNS, что может помешать старым приложениям Windows получить доступ к вашей системе.
Советы и рекомендации
Объединение сетевых интерфейсов (bonding) или LAG
Бондинг — объединение нескольких сетевых интерфейсов в одно логическое устройство. См. статьи
netctl
,
systemd-networkd
и
Wireless bonding
.
Псевдонимы для IP-адресов
Псевдонимы (aliases) необходимы для назначения нескольких IP-адресов одному сетевому интерфейсу. Благодаря этому один узел сети может иметь несколько подключений, каждое из которых будет использоваться для конкретной цели. Типичное применение этой возможности — виртуальный хостинг Web- и FTP-серверов или реорганизация серверов без необходимости обновления каких-либо других машин (особенно полезно для серверов имен).
Пример
Чтобы вручную назначить псевдоним для определенного сетевого интерфейса (например,
enp2s0
) используйте утилиту
ip
из пакета
iproute2
:
# ip addr add 192.168.2.101/24 dev enp2s0 label enp2s0:1
Для удаления псевдонима выполните:
# ip addr del 192.168.2.101/24 dev enp2s0:1
По умолчанию для исходящих из определённой подсети пакетов используется основной псевдоним устройства. Если же отправитель находится в подсети вторичного псевдонима, то IP-адрес отправителя в заголовке пакета будет соответствующим. В случае наличия более чем одного сетевого интерфейса маршруты по умолчанию можно узнать командой
ip route
.
Promiscuous mode
Promiscuous mode
(«неразборчивый» режим) предполагает, что (беспроводной) сетевой интерфейс перенаправляет весь входящий трафик ядру операционной системы для дальнейшей обработки. Это противоположность «нормальному» режиму, при котором интерфейс отбрасывает пакеты, которые не ожидались быть полученными. Чаще всего эта возможность используется для решения сетевых проблем и
анализа пакетов
.
/etc/systemd/system/promiscuous@.service
[Unit]
Description=Set %i interface in promiscuous mode
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i promisc on
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Чтобы включить «неразборчивый» режим для интерфейса
enp2s0
,
включите
promiscuous@enp2s0.service
.
Получение информации о сокетах
Входящая в состав пакета
iproute2
утилита
ss
используется для вывода информации о сокетах. Обладает схожим функционалом со считающейся
устаревшей
утилитой netstat.
Примеры использования:
Показать все TCP-сокеты с названиями сервисов:
$ ss -at
Показать все TCP-сокеты с номерами портов:
$ ss -atn
Показать все UDP-сокеты:
$ ss -au
За подробной информацией обращайтесь к справочной странице
ss(8)
.
Решение проблем
Проблема масштабирования TCP window
Заголовок TCP-пакета содержит поле «Window», которое определяет, какое количество данных может быть прислано в ответ другим хостом. Ширина поля составляет 16 бит, следовательно, размер окна не может превышать 64 КиБ. С учётом кэширования пакетов, связанного с необходимостью восстановить их исходный порядок, значение окна легко может быть превышено.
В 1992 году ввиду того, что объём памяти, доступной компьютерам, всё увеличивался, был разработан
RFC:1323
, призванный решить проблему с помощью масштабирования окна (Window Scaling). Содержащееся в заголовке пакета значение «Window» корректировалось коэффициентом масштабирования (Scale Factor), который определялся один раз в начале подключения. Этот 8-битный коэффициент позволяет увеличить исходное окно размером 64 КиБ в 32 раза.
Некоторые сломанные маршрутизаторы и межсетевые экраны переопределяют это значение на 0, что вызывает недопонимание между хостами. В ядре Linux версии 2.6.17 была введена в действие новая методика вычисления коэффициента масштабирования, в результате чего проблема с неправильно настроенными маршрутизаторами и экранами стала проявляться очень ярко.
В итоге соединение в лучшем случае очень медленное или часто прерывается.
Диагностика
Прежде всего, необходимо пояснить: это довольно странная проблема. В некоторых случаях вы вообще не сможете использовать соединения TCP (HTTP, FTP и т. д.), в других — сможете обращаться к некоторым узлам (почти ни к каким).
Если у вас появилась такая проблема, вывод
dmesg
будет нормальным, логи — чистыми, а
ip addr
сообщит о нормальном состоянии... Всё будет выглядеть нормально.
Если вы не можете просматривать никакие веб-сайты, но можете отправлять запросы ping на некоторые узлы, высока вероятность, что у вас именно эта проблема: ping использует ICMP, поэтому проблемы TCP на него не влияют.
С помощью
Wireshark
можно будет увидеть, что UDP- и ICMP-соединения работают, а TCP-соединение с внешними узлами установить не удаётся.
Способы решения проблемы
Плохой
Плохой способ заключается в изменении значения
tcp_rmem
, на основе которого вычисляется коэффициент масштабирования. Скорее всего, это решит проблему, кроме случая связи с особо удалёнными хостами.
# echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem
Хороший
Просто отключите масштабирование. Эта функция — довольно приятное дополнение к стандартному TCP, и без неё может быть некомфортно, особенно если вы не имеете возможности перенастроить неправильно работающий маршрутизатор. Есть несколько способов отключения масштабирования, и, кажется, наиболее надёжный из них (работает с большинством ядер) — добавить следующую строку в файл
/etc/sysctl.d/99-disable_window_scaling.conf
(смотрите также статью
sysctl (Русский)
):
net.ipv4.tcp_window_scaling = 0
Лучший
Проблема вызвана неправильно работающим маршрутизатором/межсетевыми экранами, поэтому просто замените его. Некоторые пользователи отмечали, что таким маршрутизатором был их собственный маршрутизатор DSL.
Дополнительная информация
Этот раздел основывается на статье LWN
TCP window scaling and broken routers
и архивной статье Kernel Trap
Window Scaling on the Internet
.
На странице LKML есть также несколько ссылок по теме.
Нет подключения к локальной сети через мост
Первый компьютер подключён к двум локальным сетям. Второй — к одной локальной сети и первому компьютеру. Выполните следующие команды, чтобы дать второму компьютеру доступ к сети за мостовым интерфейсом (на первой машине):
# sysctl net.bridge.bridge-nf-filter-pppoe-tagged=0
# sysctl net.bridge.bridge-nf-filter-vlan-tagged=0
# sysctl net.bridge.bridge-nf-call-ip6tables=0
# sysctl net.bridge.bridge-nf-call-iptables=0
# sysctl net.bridge.bridge-nf-call-arptables=0
Разрешение имени localhost выполняется через сеть
Модуль
nss-myhostname(8)
входящей в состав
systemd
службы
NSS
(включен по умолчанию в
/etc/nsswitch.conf
) позволяет выполнять разрешение имени локально без обращения к файлу
/etc/hosts
. Однако следует иметь в виду, что некоторые программы всё же полагаются на файл
/etc/hosts
.
[4]
,
[5]
Чтобы такие программы не пытались выполнить разрешение имени
localhost
через сеть (что небезопасно), добавьте следующие строки в файл
hosts(5)
:
/etc/hosts
127.0.0.1        localhost
::1              localhost
Примечание
Сообщайте о программах, затронутых этой проблемой, в
FS#56684
. Это может помочь добиться добавления записей
localhost
в стандартный файл
/etc/hosts
.
Чтобы выполнять разрешение локального имени хоста, добавьте в файл
hosts(5)
и его тоже:
/etc/hosts
127.0.0.1        localhost
::1              localhost
127.0.1.1
имя-хоста
Если хост использует статический IP-адрес, то его следует указать вместо
127.0.1.1
.
Если у системы есть
fully qualified domain name
(FQDN), вставьте его перед именем хоста (обоснование описано
здесь
). Например:
/etc/hosts
127.0.0.1        localhost
::1              localhost
203.0.113.45     host1.fqdomain.example host1
Примечание
Порядок имён/псевдонимов после IP-адреса имеет значение. Сразу после IP-адреса следует «каноническое» имя хоста, к которому при необходимости может присоединиться название родительского домена, отделённое от имени точкой. Все последующие значения на той же строке считаются псевдонимами. Подробнее смотрите
hosts(5)
.
В результате используются обе записи:
$ getent hosts
127.0.0.1       localhost
127.0.0.1       localhost
127.0.1.1
имя-хоста
Смотрите также
Linux Network Administrators Guide
Debian Reference: Network setup
RHEL7: Networking Guide
Monitoring and tuning the Linux Networking Stack: Receiving data
Monitoring and tuning the Linux Networking Stack: Sending data
Tracing a packet journey using tracepoints, perf and eBPF