Настройка инфраструктуры локальной сети с выходом в интернет
Alexey S edited this page 2026-04-21 23:59:02 +03:00

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

Создано 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