Страница 1 из 1

IPFW+PIPE+NAT

Добавлено: 2011-05-12 17:06:43
Anubis_Donetsk
Доброго времени суток.
Есть локалка, со своим рабочим шлюзом, который для меня недоступен.
Мне для выделен безлим инета для одного ip. На машинке стоит фря FreeBSD 7.4-PRERELEASE
на которой крутиццо squid на 3128 порту. Также прикручен ipfw с ядерным натом (можно указать гейтом), и несколько чел могут пользоваться безлимитным инетом. Окромя указанного есть также удаленные подсети, к которым также можно достучаться если гейтом указан ip. Хотелось бы пикрутить пайпы, но чето запутолся. Юзается одна сетевуха и один адресс, алиасы низя.

Вот рабочий вариант без пайпов, все работает ок
#!/bin/sh

sysctl net.inet.ip.fw.one_pass=1

FwCMD="/sbin/ipfw -q"
IP="192.168.0.77"
Lan="rl0"

${FwCMD} -f flush
${FwCMD} -f pipe flush

#ACL IP
. /etc/rc.table
#LIST sublan
. /etc/rc.lan

${FwCMD} add check-state

${FwCMD} add allow ip from any to any via 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

#vsem dostup k servake po SSH
${FwCMD} add allow ip from any to ${IP} ssh
${FwCMD} add allow tcp from any to ${IP} 3128 keep-state
${FwCMD} add allow ip from "table(1)" to "table(2)" via ${Lan}

${FwCMD} nat 1 config if ${Lan} reset same_ports
${FwCMD} add nat 1 ip from "table(1)" to any via ${Lan}
${FwCMD} add nat 1 ip from any to ${IP} via ${Lan}

${FwCMD} add allow ip from ${IP} to any keep-state

${FwCMD} add allow ip from any to "table(1)" via ${Lan}

${FwCMD} add deny ip from any to any via ${Lan}

вот что наваял, неработает + тормозит дико при подключении ssh, в чем трабла?
#!/bin/sh

sysctl net.inet.ip.fw.one_pass=0

FwCMD="/sbin/ipfw -q"
IP="192.168.0.77"
Lan="rl0"

${FwCMD} -f flush
${FwCMD} -f pipe flush

. /etc/rc.table
. /etc/rc.lan

#vsem dostup k servake po SSH u k squid
${FwCMD} add 100 allow ip from any to me ssh in
${FwCMD} add 101 allow ip from me ssh to any out
${FwCMD} add 110 allow tcp from any to me 3128 in
${FwCMD} add 110 allow tcp from me 3128 to any out

#razreshaem vhodyachiy traf ot klientov
${FwCMD} add 120 allow ip from "table(1)" to not "table(2)" in via ${Lan}

#reshem skorost` 512Kbit/s dlya kazhdogo klienta
${FwCMD} pipe 1 config gred 0.002/8/16/0.1 bw 512Kbit/s queue 32
${FwCMD} queue 1 config pipe 1 queue 32 mask src-ip 0xffffffff gred 0.002/8/16/0.1
${FwCMD} pipe 2 config gred 0.002/8/16/0.1 bw 512Kbit/s queue 32
${FwCMD} queue 2 config pipe 2 queue 32 mask dst-ip 0xffffffff gred 0.002/8/16/0.1
${FwCMD} add 130 allow ip from any to any via lo0
${FwCMD} add 140 deny ip from any to 127.0.0.0/8
${FwCMD} add 150 deny ip from 127.0.0.0/8 to any



#otprovlyaem na podseti
${FwCMD} add 170 allow ip from "table(1)" to "table(2)" via ${Lan}

#puskaem v inet
${FwCMD} nat 1 config if ${Lan} reset same_ports
${FwCMD} nat 2 config deny_in

#redirect iz ineta
${FwCMD} add 180 skipto 1200 ip from not "table(1)" to me in

#v inet
${FwCMD} add 1100 queue 1 ip from "table(1)" to not "table(2)" out
${FwCMD} add 1110 nat 1 ip from "table(1)" to not "table(2)" out
${FwCMD} add 1120 skipto 1500 ip from any to any

#iz ineta
${FwCMD} add 1200 nat 2 ip from not "table(1)" to me in
${FwCMD} add 1210 queue 2 ip from any to "table(1)" in
${FwCMD} add 1220 skipto 1500 ip from any to any

${FwCMD} add 1500 allow ip from any to any via ${Lan}
${FwCMD} add 1530 allow ip from any to me via ${Lan}
${FwCMD} add 1500 allow ip from "table(1)" to any via ${Lan}
${FwCMD} add 1530 allow ip from any to "table(1)" via ${Lan}

${FwCMD} add deny log ip from any to any via ${Lan}
если закоментить 180 правило, то ssh тормозить перестает, но инете всерано нету. По тспдампу вижу что пакеты уходят в инет и приходят, но только до шлюза. В чем трабла?

Re: IPFW+PIPE+NAT

Добавлено: 2011-05-16 16:25:03
Anubis_Donetsk
вижу что пакеты доходят до 1200 правила, а дальше тишина следовательно косяк в настройке nat 2. Есть у кого какие мысли?