Опять нужна помошь!
Вначале объясню как должно быть и как идут пакеты.На шлюзе есть 4 сетевых интерфейса
1) VPN1 (tap0)
2) VPN2 (tap1)
3) Провайдер (rl0)
4) Смотрящий на циску (rl1)На VPN 1 сервере стоит заворот 80 порта на впн и он приходит на tap0
Надо что бы оттуда он натился и редиректился на rl1 на циску (на циске он форвардит на 80 порт сервера)
Потом когда сервер ответил он шлет пакет на циску, а циска в свою очередь отдает rl1 на шлюзе.
А вот с rl1 надо что бы трафик именно пришедший с пометкой что он от 80 порта шел на tap0.
Если же трафик от сервера идет не от 80 порта. а просто в инет сервер леезет то надо что бы он шел через rl0 (тоесть провайдера)
Тоесть надо что бы ответы пришедшие от серверов за циской 21 80 110 25 шли именно на tap0
А остальное через rl0.
Так-же надо сделать так что бы при падении первого VPN отвечал он в tap1.
Решил все сделать natd + ipfw
OS Freebsd
Клиенты openvpnПомогите решить задачу.
Начал набрасывать ipfw и застопоорилсяю.
Подправте что и как не так.
И как лучше сделать.#!/bin/sh
FwCMD="/sbin/ipfw" # ipfw
vpn1="tap0" # внешний интерфейс VPN 1
vpn2="tap1" # внешний интерфейс VPN 2
cisco="rl1" # Интерфейс идуший на cisco
outin="rl0" # Интерфейс идуший на провайдера
vpn1ip="192.168.137.2" # Ип VPN 1
vpn1gate="192.168.137.1" # Ип gateway vpn 1
vpn2ip="192.168.138.2" # Ип VPN 2
vpn2gate="192.168.138.1" # Ип gateway vpn 2
ciscoip="192.168.11.2" # Ип интерфейса на шлюзе смотрящего на цсику
ciscogate="192.168.11.1" # Ип cisco
outip="192.168.10.3" # Ип интерфейса на шлюзе смотряшего на прова
outgate="192.168.10.1" # ип прова# Сбрасываем все правила
${FwCMD} -f flush# Проверяем - соответствует ли пакет динамическим правилам
${FwCMD} add check-state# Разрешаем весь траффик по внутреннему интерфейсу (петле)
${FwCMD} add allow ip from any to any via lo0# рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from 192.168.11.0/24 to any out via ${outin}
${FwCMD} add divert natd ip from any to ${outgate} in via ${outin}
# Редиректим ответы от циски на VPN 1 (можно обьединить в одно правило)
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 # WWW
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 21 to any 21 # FTP Passive
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 110 to any 110 # dovecot
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 25 to any 25 # postfix
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 2020 to any 2020 # pbk
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 3306 to any 3306 # mysql# Редиректим запросы с впн на cisco
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 80 to any 80 # WWW
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 21 to any 21 # FTP Passive
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 110 to any 110 # dovecot
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 25 to any 25 # postfix
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 2020 to any 2020 # pbk
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 3306 to any 3306 # mysqlС флагами на ipfw туго.
начнем с того, что порт источника почти никогда не совпадает с портом назначения, соответственно, эти правила почти никогда не будут работать, а продолжать уже и не хочется
>начнем с того, что порт источника почти никогда не совпадает с портом
>назначения, соответственно, эти правила почти никогда не будут работать, а продолжать
>уже и не хочетсяА как быть в такой ситуации?
Хотя бы направление?
>>начнем с того, что порт источника почти никогда не совпадает с портом
>>назначения, соответственно, эти правила почти никогда не будут работать, а продолжать
>>уже и не хочется
>
>А как быть в такой ситуации?
>Хотя бы направление?Все это я решил до этого так просто ipnat.
Там сделал нат + проброс портов.
И написал скрипт который меня default router на нужный vpn при не доступности.
Но соответсвенно нет интернета на серверах.
Как сказал один умный человек ))) default router не для этого. вот и мучаюсь
>>начнем с того, что порт источника почти никогда не совпадает с портом
>>назначения, соответственно, эти правила почти никогда не будут работать, а продолжать
>>уже и не хочется
>
>А как быть в такой ситуации?
>Хотя бы направление?уберите номера портов в ненужных местах.
клиент шлет пакет на ваш web сервер, например со своего 1024 порта на ваш 80 порт, а ответ должен получить с вашего 80 на свой 1024, вот и пройдите по всей вашей цепочке , а потом упоминания 1024 в правилах удалите, т.к. клиент будет слать с разных >1023, а 80 оставьте.
>>>начнем с того, что порт источника почти никогда не совпадает с портом
>>>назначения, соответственно, эти правила почти никогда не будут работать, а продолжать
>>>уже и не хочется
>>
>>А как быть в такой ситуации?
>>Хотя бы направление?
>
>уберите номера портов в ненужных местах.
>
>клиент шлет пакет на ваш web сервер, например со своего 1024 порта на ваш 80 порт, а ответ должен получить с вашего 80 на свой 1024, вот и пройдите по всей вашей цепочке , а потом упоминания 1024 в правилах удалите, т.к. клиент будет слать с разных >1023, а 80 оставьте.А как это правельнее реализовать?
>[оверквотинг удален]
>>>>уже и не хочется
>>>
>>>А как быть в такой ситуации?
>>>Хотя бы направление?
>>
>>уберите номера портов в ненужных местах.
>>
>>клиент шлет пакет на ваш web сервер, например со своего 1024 порта на ваш 80 порт, а ответ должен получить с вашего 80 на свой 1024, вот и пройдите по всей вашей цепочке , а потом упоминания 1024 в правилах удалите, т.к. клиент будет слать с разных >1023, а 80 оставьте.
>
>А как это правельнее реализовать?для проброса соединения соединения надо указывать только порт назначения
например, должно быть
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # WWW
вместо
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 # WWW
>[оверквотинг удален]
>>А как это правельнее реализовать?
>
>для проброса соединения соединения надо указывать только порт назначения
>
>например, должно быть
>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # WWW
>
>вместо
>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 #
>WWWэто понял, это получаеться сервер будет отвечать в ВПН?
А остальной трафик пойдет через провайдера?
>[оверквотинг удален]
>>для проброса соединения соединения надо указывать только порт назначения
>>
>>например, должно быть
>>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # WWW
>>
>>вместо
>>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 #
>>WWW
> это понял, это получаеться сервер будет отвечать в ВПН?
> А остальной трафик пойдет через провайдера?неплохо бы определиться, что требуется, от этого и плясать;
а то смысл фраз, начинающихся с 'это получается', я не совсем понимаю;
мне ближе 'мне надо чтобы'
>[оверквотинг удален]
>>>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # WWW
>>>
>>>вместо
>>>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 #
>>>WWW
>> это понял, это получаеться сервер будет отвечать в ВПН?
>> А остальной трафик пойдет через провайдера?
> неплохо бы определиться, что требуется, от этого и плясать;
> а то смысл фраз, начинающихся с 'это получается', я не совсем понимаю;
> мне ближе 'мне надо чтобы'Я же вверху писал что надо!
Надо что бы ответ сервера за циской шел на впн а не на дефол гатевей.
>[оверквотинг удален]
>>>>${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any 80 #
>>>>WWW
>>> это понял, это получаеться сервер будет отвечать в ВПН?
>>> А остальной трафик пойдет через провайдера?
>> неплохо бы определиться, что требуется, от этого и плясать;
>> а то смысл фраз, начинающихся с 'это получается', я не совсем понимаю;
>> мне ближе 'мне надо чтобы'
> Я же вверху писал что надо!
> Надо что бы ответ сервера за циской шел на впн а не
> на дефол гатевей.считай, что верха у меня нет, там слишком много информации для того, чтобы вычленить связанную именно с этим нюансом
и вместо "это получаеться сервер будет отвечать в ВПН?"
лучше было бы что-то вроде "это получается сервер будет отвечать в ВПН? меня это не устраивает потому-то-потому-то, в соответствии с тем, что я написал выше"
или просто "это получаеться сервер будет отвечать в ВПН? мне это не подходит"
или, наоборот, "это получается сервер будет отвечать в ВПН? вроде то, что мне надо"
на худой конец
P.S. если хочешь, это не поучения, не наставления, а просьба или пожелание
P.S.S. "... там слишком много информации ..." читать как "... там слишком много информации в неудобоваримом виде ..."
>[оверквотинг удален]
>>>>уже и не хочется
>>>
>>>А как быть в такой ситуации?
>>>Хотя бы направление?
>>
>>уберите номера портов в ненужных местах.
>>
>>клиент шлет пакет на ваш web сервер, например со своего 1024 порта на ваш 80 порт, а ответ должен получить с вашего 80 на свой 1024, вот и пройдите по всей вашей цепочке , а потом упоминания 1024 в правилах удалите, т.к. клиент будет слать с разных >1023, а 80 оставьте.
>
>А как это правельнее реализовать?правильней - это как сможете, раз уж такую замарочку себе устроили.
начните с простого, сделайте это для 80 порта.${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 80 to any 80 # WWW
если это проброс к web серверу, через cisco, то порт клиента не будет 80, если только на 192.168.137.1 чегото не намутилитут по моему вместо from 192.168.137.0/24 80 лучше указать входящий интерфейс
>[оверквотинг удален]
>>>клиент шлет пакет на ваш web сервер, например со своего 1024 порта на ваш 80 порт, а ответ должен получить с вашего 80 на свой 1024, вот и пройдите по всей вашей цепочке , а потом упоминания 1024 в правилах удалите, т.к. клиент будет слать с разных >1023, а 80 оставьте.
>>
>>А как это правельнее реализовать?
>правильней - это как сможете, раз уж такую замарочку себе устроили.
>начните с простого, сделайте это для 80 порта.
>${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 80 to any 80 #
>WWW
>если это проброс к web серверу, через cisco, то порт клиента не
>будет 80, если только на 192.168.137.1 чегото не намутили
>тут по моему вместо from 192.168.137.0/24 80 лучше указать входящий интерфейсТоесть я понимаю что правило будет типа того
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запрос
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответ
>[оверквотинг удален]
>>начните с простого, сделайте это для 80 порта.
>>${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 80 to any 80 #
>>WWW
>>если это проброс к web серверу, через cisco, то порт клиента не
>>будет 80, если только на 192.168.137.1 чегото не намутили
>>тут по моему вместо from 192.168.137.0/24 80 лучше указать входящий интерфейс
> Тоесть я понимаю что правило будет типа того
> ${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запрос
>
> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответхз что ты понимаешь, но это не айпитаблес.
в ипфв пакеты _соединения_ надо обрабатывать два раза - на пути туда и на пути обратно.
к примеру, для заворачивания в нат, в иптаблесе - правило одно. в ипфв - два.
(это не считая правил таблиц mangle и правил фильтрации - если упоминать линух).
>[оверквотинг удален]
>> ${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запрос
>>
>> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответ
> хз что ты понимаешь, но это не айпитаблес.
> в ипфв пакеты _соединения_ надо обрабатывать два раза - на пути туда
> и на пути обратно.
> к примеру, для заворачивания в нат, в иптаблесе - правило одно. в
> ипфв - два.
> (это не считая правил таблиц mangle и правил фильтрации - если упоминать
> линух).так у меня в моем конфиге divert вообще не прописан еще.
>[оверквотинг удален]
>>>
>>> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответ
>> хз что ты понимаешь, но это не айпитаблес.
>> в ипфв пакеты _соединения_ надо обрабатывать два раза - на пути туда
>> и на пути обратно.
>> к примеру, для заворачивания в нат, в иптаблесе - правило одно. в
>> ипфв - два.
>> (это не считая правил таблиц mangle и правил фильтрации - если упоминать
>> линух).
> так у меня в моем конфиге divert вообще не прописан еще.не знаю кому как, но мне лениво просчитывать пути пакетов в сети неизвестной конфигурации.
а вот ты путь пакетов просчитать _должен_.
Объясняю почему мне лениво: на пути "туда", входящий пакет, как правило, операции fwd не подвергается. форварду обычно подвергаются исходящие из твоей сети пакеты, а входяшие маршрутизируются обычным образом. Всё остальное - от лукавого.
Ладно закрыли буду разбираться.
tcpdump не к чему я и так знаю как идут пакеты. уже юзал
Вопрос для меня в том как настроить такую конфигурацию именно в ipfw.
ipfw add fwd 192.168.137.1 tcp from 192.168.11.0/24 80 to any
НАРОД ну хоть убейте
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
Не работает!
> НАРОД ну хоть убейте
> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
> Не работает!Ядро, надеюсь, со строчками
options IPFIREWALL
options IPFIREWALL_FORWARDсобрано?
Тот ипфв, который из модуля в генерик подгружается, он форвардить не умеет, хоть тресни.
>> НАРОД ну хоть убейте
>> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
>> Не работает!
> Ядро, надеюсь, со строчками
> options IPFIREWALL
> options IPFIREWALL_FORWARD
> собрано?
> Тот ипфв, который из модуля в генерик подгружается, он форвардить не умеет,
> хоть тресни.Да я ядро собранно нормально.
>>> НАРОД ну хоть убейте
>>> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
>>> Не работает!
>> Ядро, надеюсь, со строчками
>> options IPFIREWALL
>> options IPFIREWALL_FORWARD
>> собрано?
>> Тот ипфв, который из модуля в генерик подгружается, он форвардить не умеет,
>> хоть тресни.
> Да я ядро собранно нормально.1. Анализируем правила файрволла, проверяем чтобы пакет достигал правила. Уточняем, что счетчик пакетов правила - действительно увеличивается.
2. Анализируем трафик на интерфейсах. На интерфейсе, где должен быть пакет, и на интерфейсе, где мог бы быть пакет при отсутствии правила форварда (маршрутизация по таблице маршрутизации/дефолтному маршруту)
3. Может быть стоит использовать FIB ?
>[оверквотинг удален]
>>>А как это правельнее реализовать?
>>правильней - это как сможете, раз уж такую замарочку себе устроили.
>>начните с простого, сделайте это для 80 порта.
>>${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.0/24 80 to any 80 #
>>WWW
>>если это проброс к web серверу, через cisco, то порт клиента не
>>будет 80, если только на 192.168.137.1 чегото не намутили
>>тут по моему вместо from 192.168.137.0/24 80 лучше указать входящий интерфейс
> Тоесть я понимаю что правило будет типа того
> ${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запросесли на 192.168.137.1 был сделан nat перед отправкой в vpn, то да, а если на 192.168.137.1 был сделан проброс сразу на ip web сервера (допустим 192.168.11.10) то и пиши правило для такого адреса, а nat c 192.168.137.1 убирай (писал уже что в логах при nat получиш)
${FwCMD} add fwd ${ciscogate} tcp from any to 192.168.11.10 80 # Запрос
>
> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответ
>ну почему по вашему тут ответ должен быть на 80 порт? с 80 !!! (допустим ip web сервера 192.168.11.10)
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
> ну почему по вашему тут ответ должен быть на 80 порт? сТопикстартеру: откройте для себя волшебный мир tcpdump в двух консолях, на внутреннем и внешнем интерфейсах.
>> ну почему по вашему тут ответ должен быть на 80 порт? с
> Топикстартеру: откройте для себя волшебный мир tcpdump в двух консолях, на внутреннем
> и внешнем интерфейсах.Откройте для себя волшебный мир тцпдампа в скрине, сплитованном пополам.
>>> ну почему по вашему тут ответ должен быть на 80 порт? с
>> Топикстартеру: откройте для себя волшебный мир tcpdump в двух консолях, на внутреннем
>> и внешнем интерфейсах.
> Откройте для себя волшебный мир тцпдампа в скрине, сплитованном пополам.Открыл и вижу что форфард не срабатывает, пытаеться отдать пакеты через шлюз провайдера.
А должен валить в впн.
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.10 80 to any # Ответ
Так то все верно
Все что пришло от 192.168.11.10 с порта 80 куда угодно форвардить на ${vpn1gate}
> Тоесть я понимаю что правило будет типа того
> ${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запрос
> ${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответесли эти оба правила касаются одной сессии, то я не понимаю, как это может быть;
IMHO, тогда должно быть что-то вроде
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 to any 80 # Запрос
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 80 to any # Ответ
ну, или наоборот,
${FwCMD} add fwd ${ciscogate} tcp from 192.168.137.1 80 to any # Запрос
${FwCMD} add fwd ${vpn1gate} tcp from 192.168.11.0/24 to any 80 # Ответ
, но тогда я совсем ничего не понимаю
># Редиректим ответы от циски на VPN 1 (можно обьединить в одно
>правило)
># Редиректим запросы с впн на ciscoНу если можно объединить в одно правило, и ты понимаешь, что это будет хорошо, так какого не сделать это ?
Я же приводил пример с пробросом портов и "два провайдера" - ну посмотри в него внимательнее, всего-то делов.
Разбираться каше, которую пишет человек с минимальным пониманием - ну это надо быть выше крыши энтузиастом и иметь призвание к "преподавательству"...>С флагами на ipfw туго.
>># Редиректим ответы от циски на VPN 1 (можно обьединить в одно
>>правило)
>># Редиректим запросы с впн на cisco
> Ну если можно объединить в одно правило, и ты понимаешь, что это
> будет хорошо, так какого не сделать это ?
> Я же приводил пример с пробросом портов и "два провайдера" - ну
> посмотри в него внимательнее, всего-то делов.
> Разбираться каше, которую пишет человек с минимальным пониманием - ну это надо
> быть выше крыши энтузиастом и иметь призвание к "преподавательству"...
>>С флагами на ipfw туго.Где приводил?
>[оверквотинг удален]
>>>правило)
>>># Редиректим запросы с впн на cisco
>> Ну если можно объединить в одно правило, и ты понимаешь, что это
>> будет хорошо, так какого не сделать это ?
>> Я же приводил пример с пробросом портов и "два провайдера" - ну
>> посмотри в него внимательнее, всего-то делов.
>> Разбираться каше, которую пишет человек с минимальным пониманием - ну это надо
>> быть выше крыши энтузиастом и иметь призвание к "преподавательству"...
>>>С флагами на ipfw туго.
> Где приводил?в одной из твоих тем. Поискать ?
>[оверквотинг удален]
>>>># Редиректим запросы с впн на cisco
>>> Ну если можно объединить в одно правило, и ты понимаешь, что это
>>> будет хорошо, так какого не сделать это ?
>>> Я же приводил пример с пробросом портов и "два провайдера" - ну
>>> посмотри в него внимательнее, всего-то делов.
>>> Разбираться каше, которую пишет человек с минимальным пониманием - ну это надо
>>> быть выше крыши энтузиастом и иметь призвание к "преподавательству"...
>>>>С флагами на ipfw туго.
>> Где приводил?
> в одной из твоих тем. Поискать ?