IPFW + kernel NAT

Операционки на базе Unix
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Re: IPFW + kernel NAT

Post by Raven » 13 Apr 2010, 15:27

В общем, рискнул боевым шлюзом, запустил конфиг на нем - реально не прет...
Пришлось под ругань сотрудников перебирать строчки, но вроде как решилось, у мну заработало.

Code: Select all

#!/bin/sh

ipfw -q -f flush

IPFW="ipfw add"
SKIP="skipto 800"
EXT="vr0"
INT="rl0"

${IPFW} 005 allow all from any to any via xl0
${IPFW} 010 allow all from any to any via lo0
${IPFW} 014 divert natd ip from any to any in via ${EXT}
${IPFW} 015 check-state
${IPFW} 16 allow ip from any to any via lo0
${IPFW} 18 allow ip from any to any via ${INT}
${IPFW} 020 ${SKIP} udp from any to any 53 via ${EXT}
${IPFW} 022 ${SKIP} udp from any 53 to any via ${EXT}
${IPFW} 040 ${SKIP} tcp from any to any 80 out via ${EXT} setup keep-state
${IPFW} 050 ${SKIP} tcp from any to any 443 out via ${EXT} setup keep-state
${IPFW} 060 ${SKIP} tcp from any to any 1433 out via ${EXT} setup keep-state
${IPFW} 060 ${SKIP} tcp from any to any 5190 out via ${EXT} setup keep-state
${IPFW} 080 ${SKIP} icmp from any to any out via ${EXT} keep-state
${IPFW} 110 ${SKIP} tcp from any to any 22 out via ${EXT} setup keep-state
${IPFW} 300 deny all from 192.168.0.0/16  to any in via ${EXT}  
${IPFW} 301 deny all from 172.16.0.0/12   to any in via ${EXT}
${IPFW} 302 deny all from 10.0.0.0/8      to any in via ${EXT}
${IPFW} 303 deny all from 127.0.0.0/8     to any in via ${EXT}
${IPFW} 304 deny all from 0.0.0.0/8       to any in via ${EXT}
${IPFW} 305 deny all from 169.254.0.0/16  to any in via ${EXT}
${IPFW} 306 deny all from 192.0.2.0/24    to any in via ${EXT}
${IPFW} 307 deny all from 204.152.64.0/23 to any in via ${EXT}
${IPFW} 308 deny all from 224.0.0.0/3     to any in via ${EXT}
${IPFW} 315 deny tcp from any to any 113 in via ${EXT}
${IPFW} 330 deny all from any to any frag in via ${EXT}
${IPFW} 332 deny tcp from any to any established in via ${EXT}
${IPFW} 380 allow tcp from any to me 22 in via ${EXT} setup limit src-addr 2
${IPFW} 400 deny log all from any to any in via ${EXT}
${IPFW} 450 deny log all from any to any out via ${EXT}
${IPFW} 800 divert natd ip from any to any out via ${EXT}
${IPFW} 801 allow ip from any to any
${IPFW} 999 deny log all from any to any
В /etc/rc.conf нужно прописать

Code: Select all

firewall_enable="YES"
firewall_script="/путь/конфиг"
firewall_logging="YES"
natd_enable="YES"
natd_interface="карта"
Я не злопамятный, я просто часто ковыряю логи
kotig
Юзер
Юзер
Posts: 97
Joined: 12 Apr 2010, 12:50

Re: IPFW + kernel NAT

Post by kotig » 13 Apr 2010, 15:44

заработало ))))))))))))))) Пасиб!!!
есть пару вопросов по правилам.
${IPFW} 315 deny tcp from any to any 113 in via ${EXT}
${IPFW} 330 deny all from any to any frag in via ${EXT}
что это может значить? )
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Re: IPFW + kernel NAT

Post by Raven » 13 Apr 2010, 15:50

kotig wrote:${IPFW} 315 deny tcp from any to any 113 in via ${EXT}
Запрещает ident
kotig wrote:${IPFW} 330 deny all from any to any frag in via ${EXT}
Запрещает фрагменты пакетов (одна из частых видов DoS-атак)
Я не злопамятный, я просто часто ковыряю логи
kotig
Юзер
Юзер
Posts: 97
Joined: 12 Apr 2010, 12:50

Re: IPFW + kernel NAT

Post by kotig » 13 Apr 2010, 17:59

Безмерно благодарен за столь быстрые ответы. Буду частенько забегать за вашими советами!!!
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Re: IPFW + kernel NAT

Post by Raven » 13 Apr 2010, 18:08

Всегда рады помочь. Обращайся :)
Я не злопамятный, я просто часто ковыряю логи
sandy
Юзер
Юзер
Posts: 2
Joined: 12 Aug 2010, 19:28

Re: IPFW + kernel NAT

Post by sandy » 12 Aug 2010, 19:34

Прошу прощения за поднятие старой темы, но... кхм... скажите, а как связаны между собой тема и вопрос топик-стартера и демон natd? Зачем тогда вообще надо было поднимать kernel NAT?
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Re: IPFW + kernel NAT

Post by Raven » 12 Aug 2010, 20:05

sandy
Потому что:
Raven wrote:${IPFW} 014 divert natd ip from any to any in via ${EXT}
Я не злопамятный, я просто часто ковыряю логи
sandy
Юзер
Юзер
Posts: 2
Joined: 12 Aug 2010, 19:28

Re: IPFW + kernel NAT

Post by sandy » 12 Aug 2010, 21:03

Raven wrote:sandy
Потому что:
Raven wrote:${IPFW} 014 divert natd ip from any to any in via ${EXT}
Не понял Вашу мысль, указанное правило как раз и говорит про использование natd, где тут "ядреный" NAT?
Я ни в коем случае не отрицаю именно такой способ, просто сейчас сам занялся переводом на всех серверах natd -> 'kernel NAT', вот и пытаюсь разобраться с новой для себя "фичей".
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

Re: IPFW + kernel NAT

Post by Raven » 13 Aug 2010, 09:26

sandy wrote:Не понял Вашу мысль, указанное правило как раз и говорит про использование natd, где тут "ядреный" NAT?
А, вот вы о чем! Да, топикстартер пытался свестит все к использованию ядерного NATа, но в процессе конфигурирования его конфигов мы все-таки ушли к использованию natd. Как показала в данном случае практика, это несколько быстрее.
Иначе вместо строк 014 и 800 в конфиге было бы использовано что-то вроде:

Code: Select all

${IPFW} 012 nat 123 config ip ${EXT} log
${IPFW} add 013 nat 123 ip from 192.168.0.0/24 to any
${IPFW} add 014 nat 123 ip from any to ${EXT}
Я не злопамятный, я просто часто ковыряю логи
kotig
Юзер
Юзер
Posts: 97
Joined: 12 Apr 2010, 12:50

Re: IPFW + kernel NAT

Post by kotig » 16 Aug 2010, 15:05

Раз уж тему все таки подняли :)
мучались долго с одним очень хорошим человеком... в Итоге вот конфиг ядерного Ната, если кому интересно ;)

Code: Select all

#!/bin/sh



if [ -z "${source_rc_confs_defined}" ]; then

        if [ -r /etc/defaults/rc.conf ]; then

                . /etc/defaults/rc.conf

                source_rc_confs

        elif [ -r /etc/rc.conf ]; then

                . /etc/rc.conf

        fi

fi



ipfw="/sbin/ipfw -q"



ifout="vr0"

ifuser="vr1"

ipfw -f flush

$ipfw add allow ip from any to any via lo0

$ipfw add deny icmp from any to any in icmptype 5,9,13,14,15,16,17

$ipfw add allow tcp from any to me ssh, 21

$ipfw add allow icmp from any to any icmptype 0, 8



$ipfw add allow tcp from any to me 50000-60000 in via vr0

$ipfw add allow all from any to any 3128,1433,25,80,110,9030,9032,9039,9050-9060,53,21,40000-60000 in via vr1

$ipfw add allow all from any to any out via vr1



$ipfw nat 1 config log if vr0 reset same_ports deny_in redirect_port tcp x.x.x.x:6881 6881 



$ipfw add nat 1 ip from any to any via vr0



$ipfw add deny log all from any to any
Last edited by Raven on 16 Aug 2010, 15:18, edited 1 time in total.
Reason: Пожалуйста, заключай конфиги в соответствующие теги
Post Reply