Скорее всего, это обычная проблема, но решения нет.
Вот проблема: в среде веб-сервера есть набор общих портов, которые необходимо открыть, чтобы назвать несколько: 21,25,53,80,110,143,3306 и т. Д.
Я знаю, как создать список доступа, чтобы разрешить внешний IP-адрес на заданном порту и статическое правило для направления трафика порта на целевой внутренний IP-адрес. Однако, черт возьми, это утомительно, когда у вас есть 15 общедоступных IP-адресов, для каждого из которых требуются одни и те же 20 с лишним открытых портов.
Есть ли способ для каждого общедоступного IP-адреса указать список доступа портов и соответствующее статическое правило? По сути, я хотел бы реализовать это в 30 строках (15 публичных IP-адресов X (1 список доступа + 1 статический)) против 600!
Идеи очень ценятся (в данном случае, очевидно) ;-)
Ты можешь использовать static
для сопоставления IP-адресов 1-к-1. Как это:
static (inside,outside) 1.2.3.1 192.168.0.1 netmask 255.255.255.255
static (inside,outside) 1.2.3.2 192.168.0.2 netmask 255.255.255.255
static (inside,outside) 1.2.3.3 192.168.0.3 netmask 255.255.255.255
(Их можно сжать, если отображение в порядке, как в примере)
Затем создайте единый список доступа, например:
access-list Outside_In ext permit tcp any any eq 21
access-list Outside_In ext permit tcp any any eq 25
access-list Outside_In ext permit tcp any any eq 53
access-group Outside_In in int Outside
Предупреждение! Это откроет все порты для всех сопоставленных IP-адресов. Если все ваши серверы все равно нуждаются в этих портах, это гораздо более быстрая настройка.
(Очевидно, измените названия вещей в соответствии с вашим сайтом)
Хорошо для списка доступа, вы можете использовать группы объектов, чтобы объединить их вместе.
object-group network TAG
network-object 192.168.1.2 255.255.255.255
network-object 192.168.1.3 255.255.255.255
network-object 192.168.1.4 255.255.255.255
network-object 192.168.1.5 255.255.255.255
object-group protocol PROTO_TAG
protocol-object tcp 80
access-list NAT_ME permit ip object-group TAG eq object-group PROTO_TAG
static (outside,inside) IP access-list NAT_ME
Честное предупреждение. Я не проверял это ни на чем. Это то, что говорится в документации, должно работать.
Группы объектов здесь - ваш друг. Предполагая наихудший сценарий, когда ваш блок общедоступных адресов не является непрерывным и нет прямого сопоставления подсети с вашей частной подсетью, и что ваш внешний список доступа имеет имя по умолчанию external_access_in вам понадобится конфигурация в соответствии с ...
object-group network my-servers_pub
network-object host 1.1.1.1
network-object host 1.1.1.3
network-object host 1.1.1.5
...etc
...etc
network-object host 1.1.1.13
network-object host 1.1.1.15
object-group service my-tcp-ports tcp
port-object eq 21
port-object eq 25
port-object eq 80
port-object eq 110
port-object eq 143
port-object eq 3306
object-group service my-udp-ports udp
port-object eq 53
static (inside,outside) 1.1.1.1 192.168.1.2
static (inside,outside) 1.1.1.3 192.168.1.4
static (inside,outside) 1.1.1.5 192.168.1.7
...etc
...etc
static (inside,outside) 1.1.1.13 192.168.1.14
static (inside,outside) 1.1.1.15 192.168.1.16
access-list outside_access_in permit tcp any object-group my-servers_pub object-group my-tcp-ports
access-list outside_access_in permit udp any object-group my-servers_pub object-group my-udp-ports
Я должен предупредить, что эта конфигурация потребует некоторой настройки для работы на ASA версии 8.3 и выше из-за некоторых значительных изменений, внесенных Cisco в natting.
Если вам посчастливилось иметь непрерывное публичное адресное пространство и отображение узлов 1: 1, вы можете сжать группы объектов и статику в подсети:
object-group network my-servers_pub
network-object 1.1.1.0 255.255.255.240
static (inside,outside) 1.1.1.0 192.168.1.0 netmask 255.255.255.240
В этом сценарии вам даже не понадобится группа объектов для ваших внешних хостов, но я сделал это таким образом, чтобы сохранить согласованность.