Есть подсеть: 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 и указанные выше порты, разворачивать их согласно портмаппингу.Как?
сразу говорю, что нельзя сменить приложение. не вариант.
>[оверквотинг удален]
>
>Маппинг работает, но только для запросов, приходящих из вне. 40.0.0.* он игнорирует.
>
>
>На компьютерах пользователей установлено приложение, которое обращается на 255.255.255.255:8081.
>
>Задача:
>При обращении пользователей из 40.0.0.* на 255.255.255.255 и указанные выше порты, разворачивать
>их согласно портмаппингу.
>Как?Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга .
Сделайте так, чтобы пакеты шли через natd , то есть шли на адрес ISP rl0 .
>[оверквотинг удален]
>>
>>Задача:
>>При обращении пользователей из 40.0.0.* на 255.255.255.255 и указанные выше порты, разворачивать
>>их согласно портмаппингу.
>>Как?
>
>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>.
>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>адрес ISP rl0 .Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно их пропускает.. Как настроить, что-бы видел?
>[оверквотинг удален]
>>>их согласно портмаппингу.
>>>Как?
>>
>>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>>.
>>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>>адрес ISP rl0 .
>
>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>их пропускает.. Как настроить, что-бы видел?актуально
прочитал ворох форумов, нет ответа...
>>Пакеты из 40.0.0.* не проходят через natd , поэтому и нет портмапинга
>>.
>>Сделайте так, чтобы пакеты шли через natd , то есть шли на
>>адрес ISP rl0 .
>
>Обращения от 40.0.0.* и идут на адрес ИСП. Только НАТД все равно
>их пропускает.. Как настроить, что-бы видел?ipfw sh в студию.
>>>Пакеты из 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 lo0natd.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
>[оверквотинг удален]
>>>
>>>Обращения от 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
>[оверквотинг удален]
>>
>>/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
>Да я 255.255.255.255 от балды написал :)
>Имея ввиду "какой-то IP адрес"
>
>На деле другой IP, 212.49.120.132Однако, какой Вы шутник!?
255.255.255.255 - адрес для определенных целей.Замените 255.255.255.255 на 212.49.120.132 .
>>Да я 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Будет правильно?
>/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
>
>Будет правильно?Что-то типа, тестируйте. Я не могу проверить.
Может Вы еще где не так выразились . :-)