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

Исходное сообщение
"PortMapping в локальный интерфейс."

Отправлено Иной , 05-Ноя-07 20:01 
Есть подсеть: 40.0.0.0-40.0.0.100 на интерфейсе rl1
Есть внешний канал от ISP, с IP: 255.255.255.255 на интерфейсе rl0

Есть сервер под FreeBSD 6.2, на котором настроена связка NATD+ipfw и маппинг портов:

redirect_port 40.0.0.3:8081 8081
redirect_port 40.0.0.4:80 80

Маппинг работает, но только для запросов, приходящих из вне. 40.0.0.* он игнорирует.

На компьютерах пользователей установлено приложение, которое обращается на 255.255.255.255:8081.

Задача:
При обращении пользователей из 40.0.0.* на 255.255.255.255 и указанные выше порты, разворачивать их согласно портмаппингу.

Как?

сразу говорю, что нельзя сменить приложение. не вариант.


Содержание

Сообщения в этом обсуждении
"PortMapping в локальный интерфейс."
Отправлено DN , 06-Ноя-07 12:13 
>[оверквотинг удален]
>
>Маппинг работает, но только для запросов, приходящих из вне. 40.0.0.* он игнорирует.
>
>
>На компьютерах пользователей установлено приложение, которое обращается на 255.255.255.255:8081.
>
>Задача:
>При обращении пользователей из 40.0.0.* на 255.255.255.255 и указанные выше порты, разворачивать
>их согласно портмаппингу.
>Как?

Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга .
Сделайте так, чтобы пакеты шли через natd , то есть шли на адрес ISP rl0 .


"PortMapping в локальный интерфейс."
Отправлено Иной , 06-Ноя-07 19:26 
>[оверквотинг удален]
>>
>>Задача:
>>При обращении пользователей из 40.0.0.* на 255.255.255.255 и указанные выше порты, разворачивать
>>их согласно портмаппингу.
>>Как?
>
>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>.
>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>адрес ISP rl0 .

Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно их пропускает.. Как настроить, что-бы видел?


"PortMapping в локальный интерфейс."
Отправлено Иной , 10-Ноя-07 16:47 
>[оверквотинг удален]
>>>их согласно портмаппингу.
>>>Как?
>>
>>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>>.
>>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>>адрес ISP rl0 .
>
>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>их пропускает.. Как настроить, что-бы видел?

актуально
прочитал ворох форумов, нет ответа...


"PortMapping в локальный интерфейс."
Отправлено DN , 10-Ноя-07 20:45 
>>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>>.
>>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>>адрес ISP rl0 .
>
>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>их пропускает.. Как настроить, что-бы видел?

ipfw sh  в студию.


"PortMapping в локальный интерфейс."
Отправлено Иной , 10-Ноя-07 21:28 
>>>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>>>.
>>>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>>>адрес ISP rl0 .
>>
>>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>>их пропускает.. Как настроить, что-бы видел?
>
>ipfw sh  в студию.

firewall.sh

### Allow NATD ###
/sbin/ipfw add divert natd ip from 40.0.0.0/24 to any out via rl0
/sbin/ipfw add divert natd ip from any to 212.49.120.132 in via rl0
/sbin/ipfw add pass all from any to any via rl1
/sbin/ipfw add allow ip from any to any via rl0
/sbin/ipfw add allow ip from any to any via lo0

natd.conf:

redirect_port tcp 40.0.0.33:2109 2109
redirect_port tcp 40.0.0.33:7769 7769
redirect_port tcp 40.0.0.33:2104 2104


"PortMapping в локальный интерфейс."
Отправлено DN , 11-Ноя-07 00:43 
>[оверквотинг удален]
>>>
>>>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>>>их пропускает.. Как настроить, что-бы видел?
>>
>>ipfw sh  в студию.
>
>firewall.sh
>
>### Allow NATD ###
>/sbin/ipfw add divert natd ip from 40.0.0.0/24 to any out via rl0

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Что и следовало ожидать.
Пакеты из  40.0.0.0/24 не попадут в это правило, а следовательно и не
будет портмапинга. Эти пакеты должны будут проследовать в upper layers
стека TCP/IP ядра.  

Из man ipfw:
      ^    to upper layers    V          
      |                       |          
      +----------->-----------+          
      ^                       V          
[ip(6)_input]           [ip(6)_output]  
      |                       |          
      ^                       V          
[ether_demux]        [ether_output_frame]
      |                       |          
      +-->--[bdg_forward]-->--+          
                                        
      ^                       V          
      |      to devices       |          

Надо добавить, что-то типа  (sorry, не тестировал решение, так как у вас адрес
255.255.255.255  - limited broadcast ):
/sbin/ipfw add divert natd ip from 40.0.0.0/24 to 255.255.255.255 8081 in via rl1
/sbin/ipfw add divert natd ip from 212.49.120.132 8081 to 40.0.0.0/24 out via rl1

Надо Вам почитать RFC1812:
5.3.5.1 Limited Broadcasts
Limited broadcasts MUST NOT be forwarded.  
....
5.3.5.2 Directed Broadcasts
  
С учетом этих положений Вам может удаться справиться с задачей.
  
>[оверквотинг удален]
>
>/sbin/ipfw add pass all from any to any via rl1
>/sbin/ipfw add allow ip from any to any via rl0
>/sbin/ipfw add allow ip from any to any via lo0
>
>natd.conf:
>
>redirect_port tcp 40.0.0.33:2109 2109
>redirect_port tcp 40.0.0.33:7769 7769
>redirect_port tcp 40.0.0.33:2104 2104


"PortMapping в локальный интерфейс."
Отправлено Иной , 11-Ноя-07 10:59 
>[оверквотинг удален]
>>
>>/sbin/ipfw add pass all from any to any via rl1
>>/sbin/ipfw add allow ip from any to any via rl0
>>/sbin/ipfw add allow ip from any to any via lo0
>>
>>natd.conf:
>>
>>redirect_port tcp 40.0.0.33:2109 2109
>>redirect_port tcp 40.0.0.33:7769 7769
>>redirect_port tcp 40.0.0.33:2104 2104

Да я 255.255.255.255 от балды написал :)
Имея ввиду "какой-то IP адрес"

На деле другой IP, 212.49.120.132


"PortMapping в локальный интерфейс."
Отправлено DN , 11-Ноя-07 13:22 
>Да я 255.255.255.255 от балды написал :)
>Имея ввиду "какой-то IP адрес"
>
>На деле другой IP, 212.49.120.132

Однако, какой Вы шутник!?
255.255.255.255 - адрес для определенных целей.

Замените 255.255.255.255 на 212.49.120.132 .


"PortMapping в локальный интерфейс."
Отправлено Иной , 11-Ноя-07 18:52 
>>Да я 255.255.255.255 от балды написал :)
>>Имея ввиду "какой-то IP адрес"
>>
>>На деле другой IP, 212.49.120.132
>
>Однако, какой Вы шутник!?
>255.255.255.255 - адрес для определенных целей.
>
>Замените 255.255.255.255 на 212.49.120.132 .
>

Поверьте, я знаю RFC :)

Думал, все поймут. Ладно, ошибся.

/sbin/ipfw add divert natd ip from 40.0.0.0/24 to 212.49.120.132 8081 in via rl1
/sbin/ipfw add divert natd ip from 212.49.120.132 8081 to 40.0.0.0/24 out via rl1

Будет правильно?


"PortMapping в локальный интерфейс."
Отправлено DN , 12-Ноя-07 12:40 

>/sbin/ipfw add divert natd ip from 40.0.0.0/24 to 212.49.120.132 8081 in via
>rl1
>/sbin/ipfw add divert natd ip from 212.49.120.132 8081 to 40.0.0.0/24 out via
>rl1
>
>Будет правильно?

Что-то типа, тестируйте. Я не могу проверить.
Может Вы еще где не так выразились . :-)