Skip to content

Задание №8: Динамическая трансляция адресов (NAT) на филиалах ​

В данном задании настраивается механизм динамической трансляции сетевых адресов (Source NAT / Masquerade) на пограничных маршрутизаторах HQ-RTR и BR-RTR.

Благодаря этому все внутренние устройства главного офиса (серверы VLAN 100, клиенты VLAN 200) и филиала (192.168.0.0/28) получают полноценный доступ к глобальной сети Интернет через провайдера ISP.

Место выполнения

Команды данного задания выполняются одинаково на обоих маршрутизаторах: HQ-RTR и BR-RTR.


1. Теоретическая справка: зачем нужен NAT на офисных маршрутизаторах? ​

В Задании №2 мы настроили NAT на провайдере ISP. Однако провайдер знает только о напрямую подключённых к нему сетях стыка: 172.16.1.0/28 и 172.16.2.0/28.

О внутренних подсетях офисов (192.168.100.0/27, 192.168.200.0/24, 192.168.0.0/28) провайдер ISP ничего не знает, так как OSPF настроен только между офисами внутри туннеля.

text
 [HQ-SRV / HQ-CLI]                 [HQ-RTR]                     [ISP]                [ИНТЕРНЕТ]
  192.168.100.2   --(пакет)-->  NAT (Masquerade) --(172.16.1.2)-->  NAT (Masquerade) -->  ya.ru
                               через enp7s1                      через enp7s1

Когда пакет из внутренней сети офиса уходит в Интернет:

  1. Маршрутизатор HQ-RTR (или BR-RTR) подменяет исходный IP-адрес на свой внешний адрес enp7s1 (172.16.1.2 или 172.16.2.2).
  2. Провайдер ISP принимает этот пакет, маскирует его своим публичным адресом и отправляет в Интернет.
  3. Ответ возвращается по цепочке обратно на конечный компьютер или сервер.

Шаг 1. Настройка маршрутизатора главного офиса (HQ-RTR) ​

Выполните команды под пользователем root на машине HQ-RTR:

bash
# 1. Устанавливаем пакеты межсетевого экрана nftables и редактор nano:
apt-get install nftables nano -y

Создаём конфигурационный файл правил трансляции:

bash
# 2. Открываем файл правил nftables:
nano /etc/nftables/nftables.nft

Внимание к содержимому файла

Если в файле уже есть какие-либо стандартные строки — удалите их и вставьте конфигурацию ниже.

Вставляем правило маскировки для внешнего порта enp7s1:

bash
#!/usr/sbin/nft -f
flush ruleset

table ip nat {
    chain postrouting {
        type nat hook postrouting priority srcnat;
        oifname "enp7s1" masquerade
    }
}

Что делает это правило?

  • oifname "enp7s1" — отслеживает пакеты, уходящие через сетевой адаптер enp7s1 в сторону провайдера ISP.
  • masquerade — подменяет приватный адрес клиента/сервера (192.168.x.x) на IP-адрес порта enp7s1.
  • Обратите внимание: трафик в сторону филиала через интерфейс туннеля gre1 под это правило не подпадает, поэтому межофисная связь остаётся прозрачной и прямой!

Активируем и перезапускаем службу:

bash
# 3. Включаем службу nftables в автозапуск:
systemctl enable --now nftables

# 4. Перезапускаем сервис для применения правил:
systemctl restart nftables.service

Шаг 2. Настройка маршрутизатора филиала (BR-RTR) ​

На маршрутизаторе BR-RTR выполняются аналогичные действия под root:

bash
# 1. Устанавливаем nftables:
apt-get install nftables nano -y

# 2. Открываем файл конфигурации:
nano /etc/nftables/nftables.nft

Вставляем правило NAT Masquerade:

bash
#!/usr/sbin/nft -f
flush ruleset

table ip nat {
    chain postrouting {
        type nat hook postrouting priority srcnat;
        oifname "enp7s1" masquerade
    }
}

Быстрое создание файла через команду cat

bash
cat << 'EOF' > /etc/nftables/nftables.nft
#!/usr/sbin/nft -f
flush ruleset

table ip nat {
    chain postrouting {
        type nat hook postrouting priority srcnat;
        oifname "enp7s1" masquerade
    }
}
EOF

Запускаем сервис:

bash
# 3. Включаем автозапуск и перезапускаем службу:
systemctl enable --now nftables
systemctl restart nftables.service

Шаг 3. Проверка работоспособности (Верификация) ​

Главный критерий выполнения задания — появление доступа в глобальный Интернет на внутренних серверах, которые находятся за маршрутизаторами.

1. Проверка правил nftables на маршрутизаторах: ​

На HQ-RTR и BR-RTR выполните:

bash
nft list ruleset

Должна отобразиться цепочка postrouting с правилом oifname "enp7s1" masquerade.


2. Проверка выхода в Интернет с сервера HQ-SRV: ​

Перейдите в консоль сервера главного офиса HQ-SRV и отправьте пинг в глобальную сеть:

bash
ping -c4 ya.ru

(или по IP-адресу Яндекса: ping -c4 77.88.8.8)

Ожидаемый результат: пакеты успешно передаются и возвращаются (0% packet loss).


3. Проверка выхода в Интернет с сервера филиала BR-SRV: ​

Перейдите в консоль сервера филиала BR-SRV и также проверьте пинг:

bash
ping -c4 77.88.8.8

Если пинги с серверов успешно проходят — двухуровневая трансляция адресов (Офис → ISP → Интернет) настроена корректно!

Работает на VitePress • Быстрый и удобный движок для документации