IPFW+PIPE+NAT
Добавлено: 2011-05-12 17:06:43
Доброго времени суток.
Есть локалка, со своим рабочим шлюзом, который для меня недоступен.
Мне для выделен безлим инета для одного ip. На машинке стоит фря FreeBSD 7.4-PRERELEASE
на которой крутиццо squid на 3128 порту. Также прикручен ipfw с ядерным натом (можно указать гейтом), и несколько чел могут пользоваться безлимитным инетом. Окромя указанного есть также удаленные подсети, к которым также можно достучаться если гейтом указан ip. Хотелось бы пикрутить пайпы, но чето запутолся. Юзается одна сетевуха и один адресс, алиасы низя.
Вот рабочий вариант без пайпов, все работает ок
Есть локалка, со своим рабочим шлюзом, который для меня недоступен.
Мне для выделен безлим инета для одного ip. На машинке стоит фря FreeBSD 7.4-PRERELEASE
на которой крутиццо squid на 3128 порту. Также прикручен ipfw с ядерным натом (можно указать гейтом), и несколько чел могут пользоваться безлимитным инетом. Окромя указанного есть также удаленные подсети, к которым также можно достучаться если гейтом указан ip. Хотелось бы пикрутить пайпы, но чето запутолся. Юзается одна сетевуха и один адресс, алиасы низя.
Вот рабочий вариант без пайпов, все работает ок
вот что наваял, неработает + тормозит дико при подключении ssh, в чем трабла?#!/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}
если закоментить 180 правило, то 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}