URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4625
[ Назад ]

Исходное сообщение
"ipfw fwd + natd (форвардинг порта)"

Отправлено SamVlas , 23-Июн-10 19:15 
Есть 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.conf

redirect_port tcp IP_2:443 IP_1:443


/boot/loader.conf

net.inet.ip.fw.default_to_accept="1"

В результате при конекте к

telnet IP_2 443

telnet: Unable to connect to remote host

что не так?


Содержание

Сообщения в этом обсуждении
"ipfw fwd + natd (форвардинг порта)"
Отправлено Square , 24-Июн-10 00:46 
>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
>что не так?

порт закрыт? :)


"ipfw fwd + natd (форвардинг порта)"
Отправлено SamVlas , 24-Июн-10 10:40 
>>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

верно я уловил мысль?


"ipfw fwd + natd (форвардинг порта)"
Отправлено Square , 24-Июн-10 12:13 
>>>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, и изучение его приносит массу удовольствия.

Успехов вам в чтении документации :)


"ipfw fwd + natd (форвардинг порта)"
Отправлено SamVlas , 24-Июн-10 12:16 
>[оверквотинг удален]
>
>Упоминающиеся в формате строки адреса "from исходный_адрес to целевой_адрес" относятся
>к информации содержащейся в заголовке пакета. И по сути являются маской -
>тоесть "действие" будет применено только к тем пакетам, которые попадают под
>эту маску.
>
>Руководство по настройке файрвола - ценный источник сведений о правильном формате правил
>которыми конфигурируется файрвол ipfw, и изучение его приносит массу удовольствия.
>
>Успехов вам в чтении документации :)

я уже перечитал кучу документации - и если бы все получалось я бы тут не писал

простой пример переброски порта никто привести не может просто?