Понимаю что тема уже пережевана, но ничего не выходит.
Задача стоит в следующем:
Есть 2 канала
rl0 - оплата по трафику IP 81.200.6.190 Шлюз 81.200.6.1
rl2 - безлимитка "стрим" IP 192.168.1.2 Шлюз 192.168.1.1Внутреняя сетка
rl1 - 192.168.0.0Задача состоит в том, чтобы из внутренней сетки пользователи ходили в инет и получали HTTP через rl0, весь остальной трафик должен идти через канал с реальными адресами.
На серваке стоит Squid, даже если в нем указывать tcp_outgoing_address 192.168.1.2 то через diver трафик всеравно направляется на rl0, как это решить ??
Пробывал по даннй статье, всеравно не выходит.
http://www.samag.ru/art/02.2007/02.2007_09.html
>[оверквотинг удален]
>Задача состоит в том, чтобы из внутренней сетки пользователи ходили в инет
>и получали HTTP через rl0, весь остальной трафик должен идти через
>канал с реальными адресами.
>
>На серваке стоит Squid, даже если в нем указывать tcp_outgoing_address 192.168.1.2 то
>через diver трафик всеравно направляется на rl0, как это решить ??
>
>
>Пробывал по даннй статье, всеравно не выходит.
>http://www.samag.ru/art/02.2007/02.2007_09.htmlСлабо пробовали, в статье расписано достаточно подробно, чтобы добиться желаемого эффекта.
>[оверквотинг удален]
>>канал с реальными адресами.
>>
>>На серваке стоит Squid, даже если в нем указывать tcp_outgoing_address 192.168.1.2 то
>>через diver трафик всеравно направляется на rl0, как это решить ??
>>
>>
>>Пробывал по даннй статье, всеравно не выходит.
>>http://www.samag.ru/art/02.2007/02.2007_09.html
>
>Слабо пробовали, в статье расписано достаточно подробно, чтобы добиться желаемого эффекта.Может тогда подскажите где слабо пробывал ??
>[оверквотинг удален]
>>>На серваке стоит Squid, даже если в нем указывать tcp_outgoing_address 192.168.1.2 то
>>>через diver трафик всеравно направляется на rl0, как это решить ??
>>>
>>>
>>>Пробывал по даннй статье, всеравно не выходит.
>>>http://www.samag.ru/art/02.2007/02.2007_09.html
>>
>>Слабо пробовали, в статье расписано достаточно подробно, чтобы добиться желаемого эффекта.
>
>Может тогда подскажите где слабо пробывал ??А может вы тогда скажете, что сделали ?
"у меня не получается ездить на машине, что я делаю не так" ?
>А может вы тогда скажете, что сделали ?
>
>"у меня не получается ездить на машине, что я делаю не так"
>?rl0 IP 81.200.6.190 Шлюз 81.200.6.1
rl2 IP 192.168.1.2 Шлюз 192.168.1.1
rl1 интерфейс локалки. IP 192.168.0.1для начала взял не разбивал трафик по портам, попробывал разбить трафик на 2 ИП
192.168.0.4 - должен ходить через rl2
192.168.0.44 - должен ходить через rl0
# natd -n rl0 -p 8668
# natd -n rl2 -p 8669defaultrouter="81.200.6.1"
divert 8669 log ip from 192.168.0.4 to any
divert 8668 log ip from 192.168.0.44 to any
fwd 192.168.1.1 log ip from 192.168.1.2 to any
fwd 81.200.6.1 log ip from 81.200.6.190 to any
divert 8669 log ip from any to 192.168.1.2
divert 8668 log ip from any to 81.200.6.190
В итоге в логах получаю
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 in via rl1
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 out via rl0
Forward to 192.168.1.1 TCP 192.168.1.2:4728 217.23.134.43:80 out via rl0
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 in via rl1
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 out via rl0
Forward to 192.168.1.1 TCP 192.168.1.2:4728 217.23.134.43:80 out via rl0
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 in via rl1
Divert 8672 TCP 192.168.0.4:4728 217.23.134.43:80 out via rl0
Forward to 192.168.1.1 TCP 192.168.1.2:4728 217.23.134.43:80 out via rl0
Где я ошибаюсь и где я не дочитал ??
>
>Где я ошибаюсь и где я не дочитал ??В том, что каждый пакет проходит файрволл на входе в одну сетевую и второй раз на выходе через вторую.
форвард и нат надо делать только на выходе. На входе ничего делать не надо.
Добавьте in via rl0, in via rl2 в соответствующие правила.
Не забывайте, что пакет всё еще стремится пойти в тот интерфейс, куда ему говорит таблица маршрутизации.
Без дефолтного шлюза форварда также не будет )
>[оверквотинг удален]
>форвард и нат надо делать только на выходе. На входе ничего делать
>не надо.
>
>Добавьте in via rl0, in via rl2 в соответствующие правила.
>
>Не забывайте, что пакет всё еще стремится пойти в тот интерфейс, куда
>ему говорит таблица маршрутизации.
>
>
>Без дефолтного шлюза форварда также не будет )если я правильно вас понял, то сделал вот так
divert 8669 log ip from 192.168.0.4 to any
divert 8668 log ip from 192.168.0.44 to any
fwd 192.168.1.1 log ip from 192.168.1.2 to any
fwd 81.200.6.1 log ip from 81.200.6.190 to any
divert 8669 log ip from any to 192.168.1.2 in via rl2
divert 8668 log ip from any to 81.200.6.190 in via rl0но это ничего не дало
>[оверквотинг удален]
>
>если я правильно вас понял, то сделал вот так
>divert 8669 log ip from 192.168.0.4 to any
>divert 8668 log ip from 192.168.0.44 to any
>fwd 192.168.1.1 log ip from 192.168.1.2 to any
>fwd 81.200.6.1 log ip from 81.200.6.190 to any
>divert 8669 log ip from any to 192.168.1.2 in via rl2
>divert 8668 log ip from any to 81.200.6.190 in via rl0
>
>но это ничего не далоМля, тупость просто ненавижу. Перечитайте мой ответ вам еще раз.
А, вы на это не способны. Чтож, процитирую еще раз:
>форвард и нат надо делать только на выходе. На входе ничего делать
>не надо.Тяжко разжеванное пережевать ?
>[оверквотинг удален]
>>но это ничего не дало
>
>Мля, тупость просто ненавижу. Перечитайте мой ответ вам еще раз.
>
>А, вы на это не способны. Чтож, процитирую еще раз:
>
>>форвард и нат надо делать только на выходе. На входе ничего делать
>>не надо.
>
>Тяжко разжеванное пережевать ?Извините, вырвалось.
>Мля, тупость просто ненавижу. Перечитайте мой ответ вам еще раз.
>
>А, вы на это не способны. Чтож, процитирую еще раз:
>
>>форвард и нат надо делать только на выходе. На входе ничего делать
>>не надо.
>
>Тяжко разжеванное пережевать ?Павел, я попросил помощи, а не оскорблений.
Вы это имели в виду ??
divert 8669 log ip from 192.168.0.4 to any
divert 8668 log ip from 192.168.0.44 to any
divert 8669 log ip from any to 192.168.1.2 in via rl2
divert 8668 log ip from any to 81.200.6.190 in via rl0
fwd 192.168.1.1 log ip from 192.168.1.2 to any
fwd 81.200.6.1 log ip from 81.200.6.190 to any
>Вы это имели в виду ??
>divert 8669 log ip from 192.168.0.4 to any
>divert 8668 log ip from 192.168.0.44 to any
>divert 8669 log ip from any to 192.168.1.2 in via rl2
>divert 8668 log ip from any to 81.200.6.190 in via rl0
>fwd 192.168.1.1 log ip from 192.168.1.2 to any
>fwd 81.200.6.1 log ip from 81.200.6.190 to any
> В чем я ошибся?В том, что каждый пакет проходит файрволл на входе в одну сетевую и второй раз на выходе через вторую.
форвард и нат надо делать только на выходе. На входе ничего делать не надо.
Добавьте in via rl0, in via rl2 в соответствующие правила.
Не забывайте, что пакет всё еще стремится пойти в тот интерфейс, куда ему говорит таблица маршрутизации.
Без дефолтного шлюза форварда также не будет )
-----------------
Могу повторить CAPS LOCK-ом.
>[оверквотинг удален]
>Задача состоит в том, чтобы из внутренней сетки пользователи ходили в инет
>и получали HTTP через rl0, весь остальной трафик должен идти через
>канал с реальными адресами.
>
>На серваке стоит Squid, даже если в нем указывать tcp_outgoing_address 192.168.1.2 то
>через diver трафик всеравно направляется на rl0, как это решить ??
>
>
>Пробывал по даннй статье, всеравно не выходит.
>http://www.samag.ru/art/02.2007/02.2007_09.htmlюзай kernel nat
$cmd nat 10 config ip $NATIP1
$cmd nat 20 config ip $NATIP2$cmd add nat 20 ip from $myaddr to $anyaddr
$cmd add fwd $GW2 ip from $admins to 159.182.111.0/24
$cmd add nat 10 ip from 192.168.0.0/16 to not 192.168.0.0/16
$cmd add nat 10 ip from any to $NATIP1 via $uif
$cmd add nat 20 ip from 192.168.0.0/16 to not 192.168.0.0/16
$cmd add nat 20 ip from any to $NATIP2 via $tifЭто примерно... Но у меня получалось...
>[оверквотинг удален]
>$cmd nat 20 config ip $NATIP2
>
>$cmd add nat 20 ip from $myaddr to $anyaddr
>$cmd add fwd $GW2 ip from $admins to 159.182.111.0/24
>$cmd add nat 10 ip from 192.168.0.0/16 to not 192.168.0.0/16
>$cmd add nat 10 ip from any to $NATIP1 via $uif
>$cmd add nat 20 ip from 192.168.0.0/16 to not 192.168.0.0/16
>$cmd add nat 20 ip from any to $NATIP2 via $tif
>
>Это примерно... Но у меня получалось...поправочка, со спеху опечатался.
$cmd nat 10 config ip $NATIP1
$cmd nat 20 config ip $NATIP2$cmd add nat 20 ip from $myaddr to $anyaddr
$cmd add fwd $GW2 ip from $myaddr to $anyaddr
$cmd add nat 10 ip from 192.168.0.0/16 to not 192.168.0.0/16
$cmd add nat 10 ip from any to $NATIP1 via $uif
$cmd add nat 20 ip from 192.168.0.0/16 to not 192.168.0.0/16
$cmd add nat 20 ip from any to $NATIP2 via $tif
>$cmd nat 10 config ip $NATIP1
>$cmd nat 20 config ip $NATIP2
>
>$cmd add nat 20 ip from $myaddr to $anyaddr
>$cmd add fwd $GW2 ip from $myaddr to $anyaddr
>$cmd add nat 10 ip from 192.168.0.0/16 to not 192.168.0.0/16
>$cmd add nat 10 ip from any to $NATIP1 via $uif
>$cmd add nat 20 ip from 192.168.0.0/16 to not 192.168.0.0/16
>$cmd add nat 20 ip from any to $NATIP2 via $tifСделал по аналогии всеравно стремиться на rl0
divert 8669 log ip from 192.168.0.4 to any
fwd 192.168.1.1 log ip from 192.168.1.2 to any
deny ip from 192.168.0.0/16 to not 192.168.0.0/16
divert 8668 log ip from any to 81.200.6.190 via rl0
deny ip from 192.168.0.0/16 to not 192.168.0.0/16
divert 8669 log ip from any to 192.168.1.2 via rl2
Склоняюсь к тому, что Павел сам не знает как это сделать, раз не может помочь или показать рабочий пример.
>Склоняюсь к тому, что Павел сам не знает как это сделать, раз
>не может помочь или показать рабочий пример.да склоняйся к чему хочешь, если прочитать и исправить свои правила не умеешь.
повторять в третий раз написанное мной выше я не буду. Если внимательности ноль - помогать бесполезно. До готового решения в моих словах - полшага.Мляя. Все таки повторю.
Ключевой момент: пакет проходит через файрволл два раза.
Вы его крутите на входе.
НАДО ПАКЕТ NAT-ить НА ВЫХОДЕ.
выбираем маршрутом по умолчанию - шлюз первого провайдера
route add default 81.200.6.1запускаем два natd:
/sbin/natd -p 8668 -alias_address 81.200.6.190
/sbin/natd -p 8669 -alias_address 192.168.1.2сам ipfirewall:
add 100 allow ip from any to any via lo0
add 200 deny ip from 127.0.0.0/8 to any
add 300 deny ip from any to 127.0.0.0/8add 500 skipto 10000 ip from any to any in recv rl1
add 550 skipto 15000 ip from any to any out xmit rl1
add 600 skipto 20000 ip from any to any in recv rl0
add 650 skipto 25000 ip from any to any out xmit rl0
add 700 skipto 30000 ip from any to any in recv rl2
add 750 skipto 35000 ip from any to any out xmit rl2add 900 deny log ip from any to any
add 10000 cont ip from any to any
# тут можно блокировать трафик из локалка
add 14000 allow ip from any to anyadd 15000 count ip from any to any
# тут можно блокировать трафик в локалку
add 19000 allow ip from any to any# rl0 - in
add 20000 count ip from any to any
add 21050 deny ip from any to not 81.200.6.190
add 21100 divert 8668 ip from any to any
add 24000 allow ip from any to any#rl0 - out - сюда пойдет весь трафик!!! - тут вся логика! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
add 25000 count ip from any to any# скипаєм на второй диверт трафик, который должен поити на стрим - например весь http из локалки
add 26000 add skipto 28000 tcp from 192.168.0.0/24 to any 80,443# что не скипнулось - попадает на первый диверт, маскарадится адресом 81.200.6.190 и уходит нашлюз по умолчанию
add 27000 divert 8668 ip from any to any
add 27000 allow ip from any to any# сюда попадает трафик, который должен ути на стрим
# маскарадим его адресом 192.168.1.2 и принудительно отправляєм на шлюз стрима
add 28000 divert 8669 ip from any to any
add 28100 fwd 192.168.1.1 ip from any to anyadd 29000 deny log ip from any to any
# конец логики! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
#rl2 strim - in
add 30000 count ip from any to any
add 31050 deny ip from any to not 192.168.1.2
add 31100 divert 8669 ip from any to any
add 34000 allow ip from any to any#rl2 strim - out - сюда вроде ничего не попадет
add 35000 count ip from any to any
add 37000 divert 8669 ip from any to any
add 39000 allow ip from any to any
add 65000 deny log ip from any to any