Знатокам сетевой маршрутизации и ipfw посвящается...
Есть 3 сети, все они пересекаются на freebsd 5.3 машине.ste0 172.16.0.0/24 - ведет к серверу SERVER1 (ftp,smtp,pop) и в этой же сети сидит админская машина
rl1 192.168.111.1/24 - сеть которой нужно предоставить интернет и доступ к SERVER1
rl0 172.16.2.0 - ведет в маршрутизатору cisco с поднятым nat
сразу оговорюсь, что если выключить ipfw - всё работает, трасерты бегают, почта снимается и отправляется, всё пучком, только что не защищено, поэтому решил поставить ipfwсобрал ядро, ipfw включился, но вот только в правила где то закралась ошибка.
вот конфиг.
cat /etc/rc.firewall:
#!/bin/sh
fwcmd='/sbin/ipfw -q'
net1='192.168.111.0/24'
SERVER1='172.16.0.2'
wserv='192.168.111.1'
# iface
ifnet1='rl1'
ifSERVER1='ste0'
ifinet='rl0'
iflo='lo0'
####################################################################################
# ICMP , spoof
${fwcmd} flush
${fwcmd} add 100 check-state
${fwcmd} add 101 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
${fwcmd} add 103 allow ip from any to any via ${iflo}
####################################################################################
# ICMP
${fwcmd} add 200 allow icmp from any to any
####################################################################################
# DNS
${fwcmd} add 201 allow udp from me to any domain via ${ifinet} keep-state
${fwcmd} add 201 allow udp from ${net1} to any domain keep-state
####################################################################################
# SSH from SERVER1
${fwcmd} add 301 allow tcp from ${SERVER1} to me ssh in via ${ifSERVER1}
${fwcmd} add 302 allow tcp from me 22 to ${SERVER1} out via ${ifSERVER1}
####################################################################################
# RAdmin from SERVER1
${fwcmd} add 303 allow tcp from ${SERVER1} to ${wserv} 4899 #via ${ifnet1}
${fwcmd} add 304 allow tcp from ${wserv} 4899 to ${SERVER1} #via ${ifnet1}
####################################################################################
# net1 to inet
${fwcmd} add 400 allow tcp from ${net1} to any http,https,ftp,smtp,pop3 via ${ifnet1}
${fwcmd} add 401 allow tcp from me to any keep-state
####################################################################################
# FWD to SQUID
${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via ${ifnet1}
####################################################################################
# From net1 to SERVER1 MAIL & FTP
${fwcmd} add 500 allow tcp from ${net1} to ${SERVER1} 25,110,21,1025 keep-state via ${ifSERVER1}
####################################################################################
# To inet
${fwcmd} add 800 allow all from me to any out via ${ifinet}
####################################################################################
получается так, что работают следующие правила:icmp ходят, трасерт бегает
ssh подключается
radmin работает
правило 500 (доступ из net1 к SERVER1) работаетне работает net1 to inet, 400,401,450,800
т.е. никак не получается (даже без сквида) выйти на веб, фтп, почту интернета.
Где ошибка?
>Знатокам сетевой маршрутизации и ipfw посвящается...
>
>
>Есть 3 сети, все они пересекаются на freebsd 5.3 машине.
>
>ste0 172.16.0.0/24 - ведет к серверу SERVER1 (ftp,smtp,pop) и в этой же
>сети сидит админская машина
>rl1 192.168.111.1/24 - сеть которой нужно предоставить интернет и доступ к
>SERVER1
>rl0 172.16.2.0 - ведет в маршрутизатору cisco с поднятым nat
>
>
>сразу оговорюсь, что если выключить ipfw - всё работает, трасерты бегают, почта
>снимается и отправляется, всё пучком, только что не защищено, поэтому решил
>поставить ipfw
>
>собрал ядро, ipfw включился, но вот только в правила где то закралась
>ошибка.
>
>вот конфиг.
>
>cat /etc/rc.firewall:
>
>#!/bin/sh
>fwcmd='/sbin/ipfw -q'
>net1='192.168.111.0/24'
>SERVER1='172.16.0.2'
>wserv='192.168.111.1'
>
># iface
>ifnet1='rl1'
>ifSERVER1='ste0'
>ifinet='rl0'
>iflo='lo0'
>####################################################################################
># ICMP , spoof
>${fwcmd} flush
>${fwcmd} add 100 check-state
>${fwcmd} add 101 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
>
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>
>${fwcmd} add 103 allow ip from any to any via ${iflo}
>####################################################################################
># ICMP
>${fwcmd} add 200 allow icmp from any to any
>####################################################################################
># DNS
>${fwcmd} add 201 allow udp from me to any domain via ${ifinet}
>keep-state
>${fwcmd} add 201 allow udp from ${net1} to any domain keep-state
>####################################################################################
># SSH from SERVER1
>${fwcmd} add 301 allow tcp from ${SERVER1} to me ssh in via
>${ifSERVER1}
>${fwcmd} add 302 allow tcp from me 22 to ${SERVER1} out via
>${ifSERVER1}
>####################################################################################
># RAdmin from SERVER1
>${fwcmd} add 303 allow tcp from ${SERVER1} to ${wserv} 4899 #via ${ifnet1}
>
>${fwcmd} add 304 allow tcp from ${wserv} 4899 to ${SERVER1} #via ${ifnet1}
>
>####################################################################################
># net1 to inet
>${fwcmd} add 400 allow tcp from ${net1} to any http,https,ftp,smtp,pop3 via ${ifnet1}
>
>${fwcmd} add 401 allow tcp from me to any keep-state
>####################################################################################
># FWD to SQUID
>${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via
>${ifnet1}
>####################################################################################
># From net1 to SERVER1 MAIL & FTP
>${fwcmd} add 500 allow tcp from ${net1} to ${SERVER1} 25,110,21,1025 keep-state via
>${ifSERVER1}
>####################################################################################
># To inet
>${fwcmd} add 800 allow all from me to any out via ${ifinet}
>
>####################################################################################
>
>
>получается так, что работают следующие правила:
>
> icmp ходят, трасерт бегает
> ssh подключается
> radmin работает
> правило 500 (доступ из net1 к SERVER1) работает
>
> не работает net1 to inet, 400,401,450,800
>
> т.е. никак не получается (даже без сквида) выйти на веб, фтп,
>почту интернета.
>
>Где ошибка?может попробовать писать логи и посмотреть что выдаст.
># FWD to SQUID
>${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via
>${ifnet1}Проверь свою систему на этот баг: http://www.unixfaq.ru/index.pl?req=qs&id=507
>># FWD to SQUID
>>${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via
>>${ifnet1}
>
>Проверь свою систему на этот баг: http://www.unixfaq.ru/index.pl?req=qs&id=507
Если вы заметили, я делаю форвард не на "адреса той же сети" (к чему и относится баг) а на 127.0.0.1повторюсь, я убирал этот форвард вообще нафиг и выключал прокси, даже напрямую инет не ходит, вот в чем трабла... :((
>>># FWD to SQUID
>>>${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via
>>>${ifnet1}
>>
>>Проверь свою систему на этот баг: http://www.unixfaq.ru/index.pl?req=qs&id=507
>
>
>Если вы заметили, я делаю форвард не на "адреса той же сети"
>(к чему и относится баг) а на 127.0.0.1
>
>повторюсь, я убирал этот форвард вообще нафиг и выключал прокси, даже напрямую
>инет не ходит, вот в чем трабла... :((${fwcmd} add 800 allow all from me to any out via ${ifinet}
оч. не нравится мне это правило, ну совсем. Что такое у тебя 'me'. Не видел такой системной переменной. Даже если это ми ты как то отпределяеш, то ответ на твой запрос никуда не придет.
>>>># FWD to SQUID
>>>>${fwcmd} add 450 fwd 127.0.0.1,3128 tcp from ${net1} to any http,https via
>>>>${ifnet1}
>>>
>>>Проверь свою систему на этот баг: http://www.unixfaq.ru/index.pl?req=qs&id=507
>>
>>
>>Если вы заметили, я делаю форвард не на "адреса той же сети"
>>(к чему и относится баг) а на 127.0.0.1
>>
>>повторюсь, я убирал этот форвард вообще нафиг и выключал прокси, даже напрямую
>>инет не ходит, вот в чем трабла... :((
>
>${fwcmd} add 800 allow all from me to any out via ${ifinet}
>
>
>оч. не нравится мне это правило, ну совсем. Что такое у тебя
>'me'. Не видел такой системной переменной. Даже если это ми ты
>как то отпределяеш, то ответ на твой запрос никуда не придет.
>Это не системная переменная а ключевое слово ipwf
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
А что вы хотите маладой чиловек вот с такими правилами? :) Они закрывают весь трафик и поэтому у вас и нету инета :D
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>
>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>закрывают весь трафик и поэтому у вас и нету инета :D
>
точно не заметил:)))
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>
>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>
>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>закрывают весь трафик и поэтому у вас и нету инета :D
>
МАЛАДОЙ человек, вы бы внимательно почитали бы эти правила!Эти рпавила - безопастность. Просто они откидывают адреса внутренней сети, пришедшие с внешних интерфейсов
>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>>
>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>>
>>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>>закрывают весь трафик и поэтому у вас и нету инета :D
>>
>
>
>МАЛАДОЙ человек, вы бы внимательно почитали бы эти правила!
>
>Эти рпавила - безопастность. Просто они откидывают адреса внутренней сети, пришедшие с
>внешних интерфейсов${fwcmd} add 102 reject(откинуть) ip(по всем айпи протаколам) from(от) ${net1}(внутренней подсети) to any(для всех) in via ${ifinet}(входящий трафик на внешнем интерфейсе)
>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>>>
>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>>>
>>>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>>>закрывают весь трафик и поэтому у вас и нету инета :D
>>>
>>
>>
>>МАЛАДОЙ человек, вы бы внимательно почитали бы эти правила!
>>
>>Эти рпавила - безопастность. Просто они откидывают адреса внутренней сети, пришедшие с
>>внешних интерфейсов
>
>${fwcmd} add 102 reject(откинуть) ip(по всем айпи протаколам) from(от) ${net1}(внутренней подсети) to
>any(для всех) in via ${ifinet}(входящий трафик на внешнем интерфейсе)ну и? расшифровал и что? ты сам то прочитай что расшифровал:
откинуть весь траффик от ip адресов внутренний сети направленный куда угодно ВОШЕДШИЙ снаружи с интерфейса ifinet. !!!!! ЭТО ПРАВИЛЬНО.
>>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>>>>
>>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>>>>
>>>>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>>>>закрывают весь трафик и поэтому у вас и нету инета :D
>>>>
>>>
>>>
>>>МАЛАДОЙ человек, вы бы внимательно почитали бы эти правила!
>>>
>>>Эти рпавила - безопастность. Просто они откидывают адреса внутренней сети, пришедшие с
>>>внешних интерфейсов
>>
>>${fwcmd} add 102 reject(откинуть) ip(по всем айпи протаколам) from(от) ${net1}(внутренней подсети) to
>>any(для всех) in via ${ifinet}(входящий трафик на внешнем интерфейсе)
>
>ну и? расшифровал и что? ты сам то прочитай что расшифровал:
>
>откинуть весь траффик от ip адресов внутренний сети направленный куда угодно ВОШЕДШИЙ
>снаружи с интерфейса ifinet. !!!!! ЭТО ПРАВИЛЬНО.ГРАЖДАНИН!!!! Учите албанский и не парьте мозг нормальным людям. Вы знаете что такое from и to? Тогда еещ и английский учите.....
>>>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifinet}
>>>>>
>>>>>${fwcmd} add 102 reject ip from ${net1} to any in via ${ifSERVER1}
>>>>>
>>>>>А что вы хотите маладой чиловек вот с такими правилами? :) Они
>>>>>закрывают весь трафик и поэтому у вас и нету инета :D
>>>>>
>>>>
>>>>
>>>>МАЛАДОЙ человек, вы бы внимательно почитали бы эти правила!
>>>>
>>>>Эти рпавила - безопастность. Просто они откидывают адреса внутренней сети, пришедшие с
>>>>внешних интерфейсов
>>>
>>>${fwcmd} add 102 reject(откинуть) ip(по всем айпи протаколам) from(от) ${net1}(внутренней подсети) to
>>>any(для всех) in via ${ifinet}(входящий трафик на внешнем интерфейсе)
>>
>>ну и? расшифровал и что? ты сам то прочитай что расшифровал:
>>
>>откинуть весь траффик от ip адресов внутренний сети направленный куда угодно ВОШЕДШИЙ
>>снаружи с интерфейса ifinet. !!!!! ЭТО ПРАВИЛЬНО.
>
>ГРАЖДАНИН!!!! Учите албанский и не парьте мозг нормальным людям. Вы знаете что
>такое from и to? Тогда еещ и английский учите.....албанский? мне не нужно знать ваш родной язык, гордый и нищий житель житель средиземноморья!
проблему я между прочим решил и она была отнюдь не в этом правиле на которое вы мне указываете. К слову скажу, что у меня есть несколько серверов, в правилах ipfw стоят подобные правила и работают они уже годами.
Так что, извините меня за то, что я к вам ОБРАТИЛСЯ. Вы - НЕ СПЕЦИАЛИСТЫ, а АЛБАНЦЫ. Я не хочу разговаривать с вами на вашем ДЕБИЛЬНОМ языке.
Кстати, я соглашусь с Feer. Ошибку в правилах видно невооруженным взглядом. и она отнюдь не в правилах с reject.так что такие ослы как mic1 (который думает что он специалист по ipfw, хотя даже не знает, что такое me в ipfw) и atckae могут пойти заняться чем-нибудь более полезным нежели администрирование unix..... например укладкой асфальта, дороги у нас в россии еще те, а так две извечные проблемы россии найдут друг друга :)
>Кстати, я соглашусь с Feer. Ошибку в правилах видно невооруженным взглядом. и
>она отнюдь не в правилах с reject.
>
>так что такие ослы как mic1 (который думает что он специалист по
>ipfw, хотя даже не знает, что такое me в ipfw)
>и atckae могут пойти заняться чем-нибудь более полезным нежели администрирование unix.....
> например укладкой асфальта, дороги у нас в россии еще те,
>а так две извечные проблемы россии найдут друг друга :)
Мама дарагая..... (патстулам:)))))