Lx4U-book/docs/setup/network-systemd.md
2021-11-04 19:24:31 +03:00

191 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка сети
Начиная с версии 209, в systemd имеется служба `systemd-networkd`, которую можно использовать для настройки сети. Кроме того, начиная с версии 213, разрешение имен DNS можно обрабатывать с помощью `systemd-resolved` вместо статического файла `/etc/resolv.conf`. Обе службы включены по умолчанию.
Файлы конфигурации для `systemd-networkd``systemd-resolved`) можно разместить в `/usr/lib/systemd/network` или `/etc/systemd/network`. Файлы в `/etc/systemd/network` имеют более высокий приоритет, чем файлы в `/usr/lib/systemd/network`.
Существует три типа файлов конфигурации: файлы `.link`, `.netdev` и `.network`.
## Именование сетевых устройств
Udev обычно назначает имена интерфейсов сетевых карт на основе физических характеристик системы, таких как `enp2s1`. Если вы не уверены, как называется ваш интерфейс, вы всегда можете запустить `ip link` после загрузки вашей системы.
Для большинства систем существует только один сетевой интерфейс для каждого типа подключения. Например, классическое имя интерфейса для проводного подключения - `eth0`. Беспроводное соединение обычно имеет имя `wifi0` или `wlan0`.
Если вы предпочитаете использовать классические или настраиваемые имена сетевых интерфейсов, есть три способа это сделать:
- Замаскируйте файл .link udev для политики по умолчанию:
```bash
ln -s /dev/null /etc/systemd/network/99-default.link
```
- Создайте схему именования вручную, например, присвоив интерфейсам что-то вроде `internet0`, `dmz0` или `lan0`. Для этого создайте файлы `.link` в `/etc/systemd/network/`, которые выберут явное имя или лучшую схему именования для ваших сетевых интерфейсов. Например:
```bash
cat > /etc/systemd/network/10-ether0.link << "EOF"
[Match]
# Change the MAC address as appropriate for your network device
MACAddress=12:34:45:78:90:AB
[Link]
Name=ether0
EOF
```
- В файле `/boot/grub/grub.cfg` передайте опцию `net.ifnames=0` в командной строке ядра.
## Настройка DHCP
Приведенная ниже команда создаёт файл базовой конфигурации для настройки IPv4 DHCP:
```bash
cat > /etc/systemd/network/10-eth-dhcp.network << "EOF"
[Match]
Name=<network-device-name>
[Network]
DHCP=ipv4
[DHCP]
UseDomains=true
EOF
```
## Настройка статического IP-адреса
Приведенная ниже команда создает базовый файл конфигурации для настройки статического IP-адреса (с использованием как `systemd-networkd`, так и `systemd-resolved`):
```bash
cat > /etc/systemd/network/10-eth-static.network << "EOF"
[Match]
Name=<network-device-name>
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
Domains=<Your Domain Name>
EOF
```
Если у вас несколько DNS-серверов, можно добавить несколько записей DNS. (Замените ключ DNS в команде, расположенной выше)
```bash
DNS=192.168.0.1 8.8.8.8 8.8.4.4
```
Не включайте записи DNS или доменов, если вы собираетесь использовать статический файл `/etc/resolv.conf`.
## Создание файла /etc/resolv.conf
Если система будет подключена к сети Интернет, ей потребуются некоторые средства разрешения доменных имен (DNS) для преобразования доменных имён в IP-адреса и наоборот. Лучше всего это достигается помещением IP-адреса DNS-сервера, доступного у интернет-провайдера или сетевого администратора, в `/etc/resolv.conf`.
### Настройка systemd-resolved
???+ note "Обратите внимание"
При использовании методов, несовместимых с systemd-resolved для настройки сетевых интерфейсов (например, ppp и т. д.), или при использовании любого типа локального преобразователя (например, bind, dnsmasq, unbound и т. д.) или любого другого программного обеспечения, которое генерирует /etc/resolv.conf (например, программа resolvconf, отличная от той, которая предоставляется systemd), службу systemd-resolved использовать не следует.
При использовании службы `systemd-resolved` для настройки DNS, будет создан файл `/run/systemd/resolve/resolv.conf`.
Создайте символическую ссылку, чтобы использовать этот файл в каталоге `/etc`
```bash
ln -sfv /run/systemd/resolve/resolv.conf /etc/resolv.conf
```
### Статическая настройка файла resolv.conf
Если требуется статический файл `/etc/resolv.conf`, создайте его, выполнив следующую команду:
```bash
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <Ваше доменное имя>
nameserver <IP-адрес вашего основного сервера имен>
nameserver <IP-адрес вашего вторичного сервера имен>
# End /etc/resolv.conf
EOF
```
`domain` - можно можно опустить или заменить на `search`
Замените `<Ваше доменное имя>` IP-адресом DNS-сервера. Может присутствовать несколько записей (требования предусматривают наличия вторичных серверов для возможности восстановления). Если вам нужен только один DNS-сервер, удалите вторую строку `nameserver` из файла. IP-адрес также может быть маршрутизатором в локальной сети.
В качестве DNS можно указать адреса, предложенные ниже:
Yandex DNS IPv4 `77.88.8.8` и `77.88.8.1`
The Google Public IPv4 DNS адреса `8.8.8.8` и `8.8.4.4`
The Google Public IPv6 DNS адреса `2001:4860:4860::8888` и `2001:4860:4860::8844`
## Настройка /etc/hostname
Во время процесса загрузки файл `/etc/hostname` используется для определения имени хоста системы.
Создайте файл `/etc/hostname` и введите имя хоста, запустив:
```bash
echo "MyHostName" > /etc/hostname
```
`"MyHostName"` необходимо заменить именем, присвоенным компьютеру. Не вводите здесь полное доменное имя (FQDN). Эта информация помещается в файл `/etc/hosts`.
## Настройка /etc/hosts
Выберите полное доменное имя (FQDN) и возможные псевдонимы для использования в файле `/etc/hosts`. Если вы используете статические IP-адреса, вам также необходимо выбрать IP-адрес. Синтаксис записи файла hosts:
```
IP_address myhost.example.org aliases
```
Если компьютер не должен быть видимым для Интернета (существует зарегистрированный домен и действительный блок назначенных IP-адресов - у большинства пользователей этого нет), убедитесь, что IP-адрес находится в диапазоне IP-адресов частной сети. Допустимые диапазоны:
```
Диапазон сети Префикс
10.0.0.1 - 10.255.255.254 8
172.x.0.1 - 172.x.255.254 16
192.168.y.1 - 192.168.y.254 24
```
`x` - может быть любым числом в диапазоне от 16 до 31
`y` - может быть любым числом в диапазоне от 0 до 255
Корректный локальный IP адрес может быть вида `192.168.1.1`. FQDN, напрмер `mylin.example.org`.
Даже если не используется сетевая карта, всё равно требуется действительное полное доменное имя. Это необходимо для правильной работы определенных программ, таких как MTA (почтовый сервер).
Создайте файл `/etc/hosts`
```bash
cat > /etc/hosts << "EOF"
# Begin /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 <FQDN> <HOSTNAME>
<192.168.0.2> <FQDN> <HOSTNAME> [alias1] [alias2] ...
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# End /etc/hosts
EOF
```
Значения `<192.168.0.2>`, `<FQDN>` и `<HOSTNAME>` необходимо изменить в соответствии с потребностями (если IP-адрес назначен сетевым / системным администратором, и оборудование будет подключено к существующей сети).
Необязательные псевдонимы можно опустить, а строку `192.168.0.2` можно не указывать, если вы используете соединение, настроенное с помощью DHCP или автоконфигурации IPv6.
Запись `::1` является эквивалентом `IPv6 127.0.0.1` и представляет loopback `интерфейс IPv6`.
`127.0.1.1` - так называемый, «местный» от англ. local, или «локальный хост», по смыслу — это компьютер, зарезервированный специально для FQDN.