Переадресация
Переадресация сетевых пакетов (форвардинг) — это процесс передачи сетевых пакетов от одного сетевого интерфейса к другому, что позволяет Системе функционировать как маршрутизатор. Включение переадресации в Системе может быть полезно для настройки сетевых шлюзов, маршрутизаторов или при организации общего доступа к интернет-соединению.
Переадресация IP отключена в Системе по умолчанию, и для ее включения требуется наличие дополнительного файла. Если такого файла нет, нужно его создать. Имя файла состоит из имени сетевого интерфейса, за которым следует суффикс ".network"`, например "tun0.network" для сетевого интерфейса "/dev/tun0". При этом другие расширения игнорируются.
Далее в созданном файле необходимо внести изменения. Для примера рассмотрим настройку сетевого интерфейса "/dev/tun0" в файле "tun0.network". Он состоит из двух разделов: Match и Network. В разделе Match указывают имя сетевого интерфейса, а в разделе Network включают "IP Forwarding":
cat /etc/systemd/network/tun0.network
[ Match ]
Name = tun0
[ Network ]
IPForward = ipv4
Чтобы проверить текущее значение функции net.ipv4.ip_forward нужно выполнить команду:
cat /proc/sys/net/ipv4/ip_forward
Если команда возвращает значение 0, значит функция IPForward выключена, если 1 – включена.
Также можно проверить значение через команду sysctl:
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
Включение переадресации IPv4
Для включения переадресации IPv4 необходимо изменить соответствующие настройки в системных параметрах. Основной параметр, отвечающий за переадресацию, находится в /proc/sys/net/ipv4/ip_forward. Чтобы включить переадресацию, выполните следующую команду:
echo 1 > /proc/sys/net/ipv4/ip_forward
Эта команда активирует переадресацию пакетов в Системе до момента ее перезагрузки, позволяя системе пересылать их между сетевыми интерфейсами.
Чтобы сделать это изменение постоянным (переживающим перезагрузку системы), необходимо добавить или изменить строку в файле /etc/sysctl.conf:
grep forward /etc/sysctl.conf
net.ipv4.ip_forward = 1
Затем примените изменения с помощью команды:
sysctl -p
Включение переадресации IPv6
Аналогично можно включить переадресацию для IPv6. Для этого следует использовать команду:
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
Чтобы сделать изменение постоянным, добавьте строку в файл /etc/sysctl.conf:
net.ipv6.conf.all.forwarding = 1
Настройка правил переадресации с использованием nftables
С помощью nftables можно создать правила, управляющие перенаправлением пакетов между сетевыми интерфейсами.
Пример настройки NAT (Network Address Translation) для переадресации пакетов с внутреннего интерфейса ens33 на внешний ens34:
nft add table ip nat
nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
nft add rule ip nat postrouting oifname "ens34" masquerade
nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
nft add chain ip nat input { type nat hook input priority 0 \; }
nft add chain ip nat output { type nat hook output priority 100 \; }
nft add chain ip nat forward { type nat hook forward priority 0 \; }
Эти команды создают таблицу и правила, которые позволяют устройствам из внутренней сети (подключенным через ens33) выходить в интернет через интерфейс ens34.
После настройки переадресации можно использовать команду для проверки активных правил и диагностирования возможных проблем:
nft list ruleset
Для мониторинга сетевого трафика и подтверждения работы переадресации можно использовать утилиты, такие как tcpdump.
Настройка динамических соединений (кроме DNS)
При необходимости настроить все соединения динамически в сетевом интерфейсе, за исключением DNS, следует придерживаться следующих действий:
- в NetworkManager обычно заполняются такие параметры как: "Метод настройки сети" (в данном случае – автоматически (только адреса)), "другие DNS-серверы", "Домены поиска", "Идентификатор клиента DHCP, DNS";
- для того чтобы прописать все параметры в консоли, выполнить следующую команду:
nmcli connection modify enp0s3 ipv4.ignore-auto-dns yes ipv4.dns 192.168.1.100
где:
connection modify– изменение соединения на интерфейсе enp0s3;ipv4.ignore-auto-dns– задание параметра yes, таким образом игнорируются полученные по dhcp серверы DNS;ipv4.dns– прописываем IP-адрес нашего DNS-сервера;
- перезапустить интерфейс командами:
nmcli connection down enp0s3
nmcli connection up enp0s3