Reverse proxy в pfsense

Отличие reverse proxy от обычного заключается в том, что трафик он пересылает только на определённые хосты, более того, мы можем также настроить некие паттерны, по которым будет определяться, пересылать дальше трафик или нет.

В pfsense reverse proxy идет в комплекте вместе со squid.

squid_reverse_proxy

В качестве примера я покажу reverse proxy настроенный для обновлений nod32.
На вкладке web servers нам нужно указать IP серверов, на которые нужно пробрасывать трафик. В моём случае это внутренний сервер с поднятой службой обновлений на порту 2221:

На вкладке mappings указываем какие запросы нужно перехватывать, и на какой сервер перенаправлять. В примере у меня указаны адреса для перехвата:

^http://office.mydomain:2221/update.ver$
^http://office.mydomain:2221/nod.*$

Здесь используется так называемые регулярные выражения
Символ ^ обозначет начало строки. Точка обозначает любой символ. Звездочка - повторение предыдущего элемента. $ обозначает конец строки.

Таким образом, первая строка у нас должна быть неизменна, и приниматься будет только она. Вторая строка может принимать разные значения, но только в одном месте: “http://office.mydomain:2221/nodпроизвольные символы

Используя reverse proxy можно использовать один внешний порт, но разные имена для проброса к разным сервисам. Например 443 порт использует exchange и RDP gateway. Используя прокси и разные доменные имена мы можем пробрасывать запрашивающих на разные сервера, опираясь только на доменное имя, к которому они обращаются, а не на запрашиваемый порт, как в классическом сценарии.