Есть 2 сервера, IP_1:443 и IP_2:443. INT - внешний интерфейсIP_1 основной. Клиенты у которых нет коннекта к IP_1:443, меняют адрес и конектятся к IP_2:443
Сервер на FreeBsd. Ядро собраное с опицями IPFIREWALL, IPFIREWALL_FORWARD, IPDIVERT.
Правила фаервола:
add 1 fwd IP_2,443 tcp from any to IP_1
add 2 divert natd all from any to any via INT
/etc/natd.confredirect_port tcp IP_2:443 IP_1:443
/boot/loader.confnet.inet.ip.fw.default_to_accept="1"
В результате при конекте к
telnet IP_2 443
telnet: Unable to connect to remote host
что не так?
>add 1 fwd IP_2,443 tcp from any to IP_1по этому правилу, клиент пришедший на любой порт IP_1 будет перенаправлен на IP_2 порт 443
>add 2 divert natd all from any to any via INT
по этому правилу любые пакеты попадут в нат
>net.inet.ip.fw.default_to_accept="1"
по этому правилу пройдут любые пакеты.
>/etc/natd.conf
>redirect_port tcp IP_2:443 IP_1:443по этому правилу пакеты попавшие в нат и пришедшие на IP_1 порт 443 будут перенаправлены на IP_2 порт 443
Итого: вы дважды перенаправляете пакеты пришедшие на IP_1 порт 443 - один раз форвардом второй раз натом на на IP_2 порт 443
>В результате при конекте к
>
>telnet IP_2 443пришедшие к серверу пакеты при текущей настройке правил НИКАК и НИКУДА ни форвардом ни натом не редиректятся и не перенаправляются.
>telnet: Unable to connect to remote host
>что не так?порт закрыт? :)
>>add 1 fwd IP_2,443 tcp from any to IP_1
>
>по этому правилу, клиент пришедший на любой порт IP_1 будет перенаправлен на
>IP_2 порт 443а не наоборот? from any to IP_1, и насколько я понял правило fwd ничего не делает - просто перекидывает пакет дальше без изменений DNAT
>>add 2 divert natd all from any to any via INT
>
>по этому правилу любые пакеты попадут в натто есть правильно будет оставить только это правило и немного его поменять, дабы не все валилось в natd?
add 2 divert natd all from any to IP_2,443 via INT
>>net.inet.ip.fw.default_to_accept="1"
>
>по этому правилу пройдут любые пакеты.убрать?
>>/etc/natd.conf
>>redirect_port tcp IP_2:443 IP_1:443
>
>по этому правилу пакеты попавшие в нат и пришедшие на IP_1 порт
>443 будут перенаправлены на IP_2 порт 443то есть наоборот нужно?
redirect_port tcp IP_1:443 IP_2:443
верно я уловил мысль?
>>>add 1 fwd IP_2,443 tcp from any to IP_1
>>
>>по этому правилу, клиент пришедший на любой порт IP_1 будет перенаправлен на
>>IP_2 порт 443
>
>а не наоборот?Мы с вами не в лесу сидим, и не обязаны полагаться только на собственную память. обратимся к первоситочнику- тоесть к руководству по настройке файрвола ipfw.
Руководство содержится в поставке операционной системы,но можно воспользоваться поиском в интернете и получить переведенную копию если вас чем-то не устраивает руководство на англицком языке
В ОС руководство вызывается командой man ipfwИ так что же пишет руководство по настройке файрвола по этому поводу?
@>man ipfw
=========================================
Конфигурация брандмауэра задается в виде списка пронумерованных правил, который просматривается для каждого пакета пока не будет найдено соответствие - тогда выполняется заданное соответствующим правилом действие. В зависимости от действия и некоторых установок в системе, пакеты могут возвращаться на брандмауэр для обработки правилами, начиная со следующего за сработавшим. Все правила применяются ко всем интерфейсам, так что задача написания набора правил с минимально необходимым количеством проверок возлагается на системного администратора.Конфигурация всегда включает стандартное правило (DEFAULT) с номером 65535, которое нельзя изменять и которое соответствует любому пакету. С этим стандартным правилом может быть связано действие deny или allow, в зависимости от конфигурации ядра.
Правила ipfw имеют следующий формат:
[prob вероятность_сопоставления] действие [log [logamount число]] протокол from исходный_адрес to целевой_адрес [спецификация_интерфейса] [опции]Каждый пакет можно фильтровать на основе следующей, связанной с ним информации:
* Интерфейс передачи и приема (по имени или адресу)
* Направление (входящий или исходящий)
* Исходный и целевой IP-адреса (возможно, замаскированные)
* Протокол (TCP, UDP, ICMP и т.п.)
* Исходный и целевой порт (можно указывать списки, диапазоны или маски)
* Флаги TCP
* Флаг IP-фрагмента
* Опции IP
* Типы ICMP
* Идентификатор пользователя/группы для сокета, связанного с пакетомдействие:
fwd ip-адрес[,порт]
Изменяет следующий переход (next-hop) для соответствующих пакетов, направляя их по указанному ip-адресу, который можно задавать либо в виде четверки чисел через точку, либо по имени хоста. Если ip-адрес непосредственно не доступен, вместо него используется соответствующий маршрут, полученный по локальной таблице маршрутизации. Если ip-адрес - локальный, при поступлении в систему пакета с удаленного хоста он будет перенаправлен на заданный порт на локальной машине, так что локальный адрес сокета остается установленным в соответствии с исходным IP-адресом, по которому направлялся пакет. Это действие предназначено для использования в прозрачных промежуточных серверах. Если IP-адрес - не локальный, дальнейший поиск прекращается; однако, при выходе из канала если переменная sysctl(8) net.inet.ip.fw.one_pass не установлена, пакет снова передается брандмауэру для проверки, начиная со следующего правила.divert порт
Перенаправляет пакеты, соответствующие правилу, на сокет divert(4), связанный с указанным портом. Дальнейший поиск прекращается.
=========================================
Упоминающиеся в формате строки адреса "from исходный_адрес to целевой_адрес" относятся
к информации содержащейся в заголовке пакета. И по сути являются маской - тоесть "действие" будет применено только к тем пакетам, которые попадают под эту маску.действие форварда - означает перенаправление пакета "туда куда пошлют". Это может быть как локальный адрес так и адрес какогото сервера "гдето там далеко в интернете". Заголовок пакета изменяется. Если подразумевается, что на данный пакет ожидается ответ, то он придет отправителю уже с "нового" адреса.
действие диверта - означает что пакет будет перенаправлен в программу, запущенной на том же компьютере что и файрвол. Внешняя программа делает с пакетом что ей заблагорассудится.
Руководство по настройке файрвола - ценный источник сведений о правильном формате правил которыми конфигурируется файрвол ipfw, и изучение его приносит массу удовольствия.
Успехов вам в чтении документации :)
>[оверквотинг удален]
>
>Упоминающиеся в формате строки адреса "from исходный_адрес to целевой_адрес" относятся
>к информации содержащейся в заголовке пакета. И по сути являются маской -
>тоесть "действие" будет применено только к тем пакетам, которые попадают под
>эту маску.
>
>Руководство по настройке файрвола - ценный источник сведений о правильном формате правил
>которыми конфигурируется файрвол ipfw, и изучение его приносит массу удовольствия.
>
>Успехов вам в чтении документации :)я уже перечитал кучу документации - и если бы все получалось я бы тут не писал
простой пример переброски порта никто привести не может просто?