Проброс портов (DST-NAT) на ESR-200 - АлтунинВВ.Блог - всё об IT-технологиях!
Четверг, 17 сентября 2020 19:00

Проброс портов (DST-NAT) на ESR-200

Россия

Очень часто перед системным администратором встает проблема – внутри сети есть некий ресурс, это может быть WEB-сервер или почтовый сервер, не важно. Важно другое с одной стороны нужно предоставить доступ к сервису из сети Интернет, с другой стороны защитить его межсетевым экраном, как минимум.

Так как ресурс находится за межсетевым экраном, то назначить ему внешний ip-адрес невозможно. Тут и приходит на помощь технология трансляции сетевых адресов – NAT, а точнее DST-NAT.

Сегодня мы рассмотрим проброс портов (DST-NAT) на ESR-200

В случае DST-NAT все обращения к межсетевому экрану, на соответствующий порт, транслируются в обращения к внутренней сети на порт и адрес, указанные в настройках NAT, таким образом межсетевой экран знает, какому внешнему адресу и порту нужно ответить. В результате внешние пользователи не замечают разницы при обращении, например, к корпоративному сайту через сеть Интернет. Более подробно про NAT вы можете прочитать в этой статье.

Создадим новый проект в GNS3

В этой статье мы будем использовать Docker образ, созданный в этой статье.

Перетаскиваем Web-server Nginx в окно проекта и добавляем еще и cloud.

Соединим Cloud1 c узлом

2020-09-14_17-52-13.png

ESR-200 предварительно настроен так:

hostname esr101

security zone LAN
  description "LAN"
exit
security zone INET
  description "INET"
exit

interface gigabitethernet 1/0/1
  description "LAN"
  security-zone LAN
  ip address 172.16.10.254/24
exit
interface gigabitethernet 1/0/2
  description "INET"
  security-zone INET
  ip address 172.16.100.50/24
exit
interface gigabitethernet 1/0/3
  shutdown
exit
interface gigabitethernet 1/0/4
  shutdown
exit
interface gigabitethernet 1/0/5
  shutdown
exit
interface gigabitethernet 1/0/6
  shutdown
exit
interface gigabitethernet 1/0/7
  shutdown
exit
interface gigabitethernet 1/0/8
  shutdown
exit
security zone-pair LAN self
  rule 100
    description "ICMP"
    action permit
    match protocol icmp
    match source-address any
    match destination-address any
    enable
  exit
exit
security zone-pair INET self
  rule 100
    description "ICMP"
    action permit
    match protocol icmp
    match source-address any
    match destination-address any
    enable
  exit
exit
ip ssh server

Так как мы пробрасываем порт для доступа к ресурсу через интернет, обязательно нужно разрешить пинговать маршрутизатор из Интернета. Таким образом вы сбережете нервы себе и другим админам, которые будут подключаться к вашим сервисам.

Проверим что у нас всё работает в обычных условиях.

Открываем конфигурацию узла nginx в GNS3 и заменяем на:

auto eth0
iface eth0 inet static
address 172.16.1.10
netmask 255.255.255.0

Где 172.16.1.0/24 – подсеть настроенная на нашем ПК, у самого ПК адрес 172.168.1.254

Обратите внимание, когда вы копируете текст в окно конфигурации, нажмите Save, а потом еще раз откройте окно и проверьте чтобы в конце строк не было пробелов, иначе ip-адрес не будет задан, очень странный баг, хотя у вас, быть может, все будет работать сразу.

Запускаем узел.

Проверяем пинг:

Обмен пакетами с 172.16.1.10 по с 32 байтами данных:
Ответ от 172.16.1.10: число байт=32 время<1мс TTL=64
Ответ от 172.16.1.10: число байт=32 время<1мс TTL=64
Ответ от 172.16.1.10: число байт=32 время<1мс TTL=64
Ответ от 172.16.1.10: число байт=32 время<1мс TTL=64

Пробуем скачать страницу:

wget http://172.16.1.10                                                                                                                                                                                       --2020-09-15 14:48:17--  http://172.16.1.10/
Connecting to 172.16.1.10:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 69 [text/html]
Saving to: 'index.html'

index.html                                           100%[========================================>]      69  --.-KB/s    in 0s
2020-09-15 14:48:17 (796 KB/s) - 'index.html' saved [69/69]

Всё работает.

Остановим узел и снова изменим настройки сети узла:

auto eth0
iface eth0 inet static
address 172.16.10.1
netmask 255.255.255.0
gateway 172.16.10.254

Обратите внимание, мы добавили шлюз по умолчанию!

Запускаем узел.

Проверим связь от нашего ПК до ESR-200, это будет как-бы доступ из интернета:

ping 172.16.100.50
Обмен пакетами с 172.16.100.50 по с 32 байтами данных:
Ответ от 172.16.100.50: число байт=32 время=4мс TTL=64
Ответ от 172.16.100.50: число байт=32 время=2мс TTL=64
Ответ от 172.16.100.50: число байт=32 время=2мс TTL=64

Проверим связь от нашего виртуального WEB-сервера до маршрутизатора, для этого будем использовать AUX консоль узла:

/ # ping 172.16.10.254
PING 172.16.10.254 (172.16.10.254): 56 data bytes
64 bytes from 172.16.10.254: seq=0 ttl=64 time=4.674 ms
64 bytes from 172.16.10.254: seq=1 ttl=64 time=2.338 ms
64 bytes from 172.16.10.254: seq=2 ttl=64 time=2.414 ms
^C
--- 172.16.10.254 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 2.338/2.864/4.674 ms

Оба узла видят ESR-200

Настройка NAT

Пропишем DST-NAT:

object-group network EXTERNAL_IP
  description "Внешний IP"
  ip address-range 172.16.100.50
exit
object-group network WEB_SERVER_IP
  description "Local WEB-server"
  ip address-range 172.16.10.1
exit

object-group service WEBHTTP
  description "TCP web ports"
  port-range 80
exit
nat destination
  pool WEB_SERVER_80
    ip address 172.16.10.1
    ip port 80
  exit
  ruleset DNAT_WEB
    from zone INET
    rule 1
      match protocol tcp
      match destination-address EXTERNAL_IP
      match destination-port WEBHTTP
      action destination-nat pool WEB_SERVER_80
      enable
    exit
  exit
exit

Нужно обязательно добавить правило для межсетевого экрана с разрешением доступа из интернета:

security zone-pair INET LAN
  rule 1
    action permit
    match protocol tcp
    match source-address any
    match destination-address WEB_SERVER_IP
    match destination-nat
    match source-port any
    match destination-port any
    enable
  exit
exit
do com
do con

Обратите внимание на строку:

match destination-nat

Именно она разрешает доступ через NAT, без нее доступа у вас не будет!

Проверим доступность сайта:

wget http://172.16.100.50
--2020-09-15 15:05:16--  http://172.16.100.50/
Connecting to 172.16.100.50:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 69 [text/html]
Saving to: 'index.html'
index.html                                           100%[=====================================================>]      69  --.-KB/s    in 0s
2020-09-15 15:05:17 (2.35 MB/s) - 'index.html' saved [69/69]

Сайт доступен!

На этом настройку NAT можно считать законченной. Аналогично вам нужно настроить порты HTTPS, FTP и прочих серверов.

Готовая конфигурация

hostname esr101

security zone LAN
  description "LAN"
exit
security zone INET
  description "INET"
exit

object-group service WEBHTTP
  description "TCP web ports"
  port-range 80
exit

object-group network EXTERNAL_IP
  description "Внешний IP"
  ip address-range 172.16.100.50
exit
object-group network WEB_SERVER_IP
  description "Local WEB-server"
  ip address-range 172.16.10.1
exit

interface gigabitethernet 1/0/1
  description "LAN"
  security-zone LAN
  ip address 172.16.10.254/24
exit
interface gigabitethernet 1/0/2
  description "INET"
  security-zone INET
  ip address 172.16.100.50/24
exit
interface gigabitethernet 1/0/3
  shutdown
exit
interface gigabitethernet 1/0/4
  shutdown
exit
interface gigabitethernet 1/0/5
  shutdown
exit
interface gigabitethernet 1/0/6
  shutdown
exit
interface gigabitethernet 1/0/7
  shutdown
exit
interface gigabitethernet 1/0/8
  shutdown
exit
security zone-pair LAN self
  rule 100
    description "ICMP"
    action permit
    match protocol icmp
    match source-address any
    match destination-address any
    enable
  exit
exit
security zone-pair INET self
  rule 100
    description "ICMP"
    action permit
    match protocol icmp
    match source-address any
    match destination-address any
    enable
  exit
exit
security zone-pair INET LAN
  rule 1
    action permit
    match protocol tcp
    match source-address any
    match destination-address WEB_SERVER_IP
    match destination-nat
    match source-port any
    match destination-port any
    enable
  exit
exit

nat destination
  pool WEB_SERVER_80
    ip address 172.16.10.1
    ip port 80
  exit
  ruleset DNAT_WEB
    from zone INET
    rule 1
      match protocol tcp
      match destination-address EXTERNAL_IP
      match destination-port WEBHTTP
      action destination-nat pool WEB_SERVER_80
      enable
    exit
  exit
exit

ip ssh server

Заключение

Сегодня мы настроили DST-NAT на ESR-200

Мы добавили образ Docker в GNS3.

Указали для него ip-адрес и проверили доступность web-сервера.

Настроили Nginx для работы в подсети, не настроенной на нашем ПК и проверили доступность ESR-200 с нашего ПК и из консоли образа Docker.

Настроили DST-NAT на ESR-200 и прописали правила межсетевого экрана для доступа к web-серверу.

Проверили доступность web-сервера через NAT.

Прочитано 232 раз Последнее изменение Четверг, 17 сентября 2020 15:00