Что то типа путевых записок, и размышлений об жизни, ну и о FreeBSD конечно, иногда какие нибудь новости и что то типа переводов.

27.04.2008

IPFW & routing

Раньше я использовал IPFW для 1 сетевой карточки, со стандартными конфигами из хандбука, и в принципе был счастлив, ну добавлял в него пару тройку правил по портам чтоб он соответствовал моим потребностям и не парился.
А тут захотелось мне разобраться что есть роутинг, нашел вторую сетевушку воткнул, включил в ядре и в rc.conf все что надо, и думал легко отделаться от IPFW добавив в него одно два правила, но не тут то было оказалось что придётся вникать в то как это работает иначе ничего не работает.
Итак моя схема выглядит так:
интернет(192.168.1.1) -> (192.168.1.2, nfe0)мой комп(шлюз)(10.2.2.1,xl0) -> (10.2.2.2)ноут
для ее реализации пока сотворил такой файл правил для IPFW
################ Start of IPFW rules file
# Flush out the list before we begin.
ipfw -q -f flush

# Set rules command prefix
cmd="ipfw -q add"
pif="nfe0" # public interface name of NIC
# facing the public Internet
lif="xl0" # local interface name of NIC
# facing the private network

#################################
# NAT
#################################
$cmd 00001 divert natd ip from any to any out via $pif
$cmd 00002 divert natd ip from any to any in via $pif

#################################
# No restrictions on Loopback Interface
#################################
$cmd 00010 allow all from any to any via lo0

######################################
# Allow the packet through if it has previous been added to the
# the "dynamic" rules table by a allow keep-state statement.
######################################
#$cmd 00015 check-state

######################################
# Internet section
######################################
$cmd 00100 allow ip from 192.168.1.0/24 to any out via $pif
$cmd 00150 allow ip from any to 192.168.1.0/24 in via $pif

#####################################
# In packets local network
#####################################
$cmd 00200 allow ip from 10.2.2.0/26 to any in via $lif
$cmd 00250 allow ip from 10.2.2.0/26 to any out via $pif

#####################################
# Out packets local network
######################################
$cmd 00300 allow ip from any to 10.2.2.0/26 in via $pif
$cmd 00350 allow ip from any to 10.2.2.0/26 out via $lif

# Reject & Log all incoming connections from the outside
$cmd 00499 deny log all from any to any in via $pif

# Everything else is denied by default
# deny and log all packets that fell through to see what they are
$cmd 00999 deny log all from any to any
################ End of IPFW rules file ###############################

Конечно это пока корявое решето, а не огненная стена, но в принципе дело за малым все позакрывать, ну и добавить наверное динамические правила, самое главное добился чтоб оба компа ходили в сеть и работал НАТ.
Вот это правило правда смушат, 00250 0 0 allow ip from 10.2.2.0/26 to any out via nfe0, через него почему то ни один пакет не проходит надо подумать.

2 комментария:

  1. Спасибо за пример - пригодицо

    ОтветитьУдалить
  2. Ну это пока весьма грубая болванка, вот глядиш к концу недели до ума доведу тогда будет пример

    ОтветитьУдалить

Здесь можно записать свои мысли о посте :)
Если ваш ответ не появился сразу, не паникуйте, тут работает спамоловка, и вероятно вы угодили в неё, так как были анонимом или в вашем посте ссылка, ну или вас не любит google.
Я проснусь и одобрю комент ;)