Clone
14
Настройка инфраструктуры локальной сети с выходом в интернет
Alexey S edited this page 2025-12-21 23:08:17 +02:00
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.

Настройка инфраструктуры локальной сети с выходом в интернет

Создано 20.12.2025
Изменено 21.12.2025, 23:04

Хост маршрутизатор, 192.168.1.1

Соглашение по сетевым интерфейсам

  • eth0 - внешний интерфейс, "смотрит" в интернет
  • eth1 - внутрениий LAN

Настройки сетевых интерфейсов, хост маршрутизатор, файл /etc/newtwork/interfaces

ссылки:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
  address 193.203.51.138/24
  gateway 193.203.51.1
  dns-nameservers 193.203.50.254 8.8.8.8

# LAN
allow-hotplug eth1
auto eth1
iface eth1 inet static
  address 192.168.1.1
  netmask 255.255.255.0

Включение пересылки IP (IP Forwarding), /etc/sysctl.conf

net.ipv4.ip_forward=1

Для вступления в силу изменений в /etc/sysctl.conf выполнить команду

sysctl -p

Проверка, что Forwarding работает

cat /proc/sys/net/ipv4/ip_forward
1

Важно

Если при перезагрузке cat /proc/sys/net/ipv4/ip_forward выдает 0, то необходимо создать файл в /etc/sysctl.d/99-ipv.conf с таким содержимым:

net.ipv4.ip_forward = 1

Применить изменения:

systemctl restart procps
sysctl -p

Настройка NAT iptables, классический способ, ufw НЕ УСТАНОВЛЕН!

  • разрешить трафику из LAN
    iptables -A INPUT -i eth1 -j ACCEPT
    
  • разрешить трафик из интернета, который является ответом на запросы из LAN
    iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    
  • включить NAT (Masquerading) для трафика, уходящего из LAN в интернет
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
  • сохранение измененных правил iptables:
    iptables-save > /etc/iptables/rules.v4
    

Проверка правил iptables

iptables -L -v -n

Настрока NAT, ufw установлен

  • разрешить IP forwarding

  • Откройте файл /etc/default/ufw

    Найти строку DEFAULT_FORWARD_POLICY="DROP" и заменить ее на DEFAULT_FORWARD_POLICY="ACCEPT"

    DEFAULT_FORWARD_POLICY="ACCEPT"
    
  • добавить правило маскарадинга

    Открыть файла /etc/ufw/before.rules

    Добавить строки в начале файла перед строкой *filter

    # <!- NAT RULES ->
    *nat
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    COMMIT
    # <!- END NAT RULES ->
    
  • перезапустить ufw

    ufw disable && ufw enable
    

Установка и настройка DHCP сервера на шлюзе

Установка пакета

На шлюзе должен быть установлен статический IP адрес 192.168.1.1, файл /etc/network/interfaces

apt install isc-dhcp-server

Конфигурация DHCP-сервера, файл /etc/dhcp/dhcpd.conf

# Настройки сети
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;              # Диапазон выдаваемых IP
    option routers 192.168.1.1;                     # IP вашего шлюза/роутера
    option domain-name-servers 8.8.8.8, 8.8.4.4;    # DNS-серверы (Google DNS)
    option broadcast-address 192.168.1.255;
    default-lease-time 600;
    max-lease-time 7200;
}

Указание сетевого интерфейса

Файл /etc/default/isc-dhcp-server

INTERFACESv4="eth1"

Перезапуск и включение службы

systemctl restart isc-dhcp-server

Конфигурация DHCP-клиента

Файл /etc/newtwork/interfaces

auto eth1
iface eth1 inet dhcp

Резервирование адресов

Файл /etc/dhcp/dhcpd.conf

Пример, добавляем в конец файла:

host my-server {
    hardware ethernet 00:1A:2B:3C:4D:5E;    # Замените на MAC-адрес вашего устройства
    fixed-address 192.168.1.101;            # Замените на желаемый статический IP
}

Настройка синхронизации времени, Debian 12 и выше

  • установка systemd-timesyncd

    apt install systemd-timesyncd
    
  • включение синхронизации времени

    timedatectl set-ntp true
    

    Если получаем ошибку Failed to set ntp: NTP not supported, то перед включением синхронизации - выполнить команду:

    systemctl enable --now systemd-timesyncd
    

    Если опять получаем ошибку Failed to set ntp: NTP not supported, то выполнить команду:

    systemctl unmask systemd-timesyncd.service