Проброс портов (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 узлом
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.
Добавить комментарий