URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 62842
[ Назад ]

Исходное сообщение
"Помогите ipfw или NAT"

Отправлено MoRo , 20-Дек-05 22:16 
Ситуация такая: стоит сервер на FreeBSD 5.21.
На нйм стоит: Squid, SquidGuard, Sendmail, NAT включен через rc.conf .
Так вот нельзя получить почту с внешних серваков, пингануть, ICQ и тд.
Получается так, можно ходить по страницам если прописан прокси у клиенте.
ФТП и аську ходит тоже через прокси.
Так вот вопрос - "Как можно сделать чтобы можно было ходить и через прокси и без него?".
Ядро перекомпилировал, опции по ipfw добавил все. Ну там диверт, вербоз и тд. Прилагаю файл rc.conf и правила rc.firewall.

gateway_enable="YES"
defaultrouter="195.184.221.101"
hostname="mail.mareks.com.ua"
ifconfig_ed0="inet 192.168.0.200  netmask 255.255.255.0"
ifconfig_ed1="inet 195.184.221.102  netmask 255.255.255.252"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
icmp_log_redirect="YES"
inetd_enable="YES"
linux_enable="YES"
sshd_enable="YES"
network_interfaces="auto"
syslogd_enable="YES"
firewall_enable="YES"
firewall_script="/usr/local/billing/rc.firewall"
firewall_quiet="YES"
natd_enable="YES"
natd_intrefase="ed1"
natd_flags="-m"
sendmail_enable="YES"
sendmail_flags="-bd -q30m"

rc.firewall
#!/bin/sh
ipfw='/sbin/ipfw -q'
ournet='192.168.0.1/24'
uprefix='192.168.0'
ifout='ed1'
ifuser='ed0'
${ipfw} flush
${ipfw} add 100 check-state
${ipfw} add 200 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${ipfw} add 210 reject ip from ${ournet} to any in via ${ifout}
${ipfw} add 300 allow ip from any to any via lo
${ipfw} add 310 allow tcp from me to any keep-state via ${ifout}
${ipfw} add 320 allow icmp from any to any
${ipfw} add 330 allow udp from me to any domain keep-state
${ipfw} add 340 allow udp from any to me domain
${ipfw} add 350 allow ip from me to any
${ipfw} add 400 allow tcp from 192.168.0.0/24 to me http,https,ssh,pop3
${ipfw} add 410 allow tcp from not ${ournet} to me smtp
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from ${ournet} to any http out via ${ifout}
${ipfw} add 510 divert natd all from any to any via ed1
${ipfw} add 600 pass tcp from any to any pop3, aol
${ipfw} add 610 pass tcp from any pop3, aol to any
${ipfw} add 650 pass tcp from any 21 to any
${ipfw} add 651 pass tcp from any to any 21
${ipfw} add 652 pass tcp from any 20 to any
${ipfw} add 653 pass tcp from any to any 20
${ipfw} add 1002 allow ip from ${uprefix}.100 to any
${ipfw} add 1002 allow ip from any to ${uprefix}.100
${ipfw} add 65535 deny ip from any to any

Заранее всем спасибо!


Содержание

Сообщения в этом обсуждении
"Помогите ipfw или NAT"
Отправлено Garet , 21-Дек-05 02:15 
>natd_enable="YES"
>natd_intrefase="ed1"
>natd_flags="-m"
Хочу сказать что в рс.конф ну жно только включить саму потдержку нат еще желательно проверить включенна ли потдержка нат в самом ядре
>rc.firewall
>#!/bin/sh
>ipfw='/sbin/ipfw -q'
>ournet='192.168.0.1/24'
>uprefix='192.168.0'
>ifout='ed1'
>ifuser='ed0'
>${ipfw} flush
>${ipfw} add 100 check-state
>${ipfw} add 200 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
>
>${ipfw} add 210 reject ip from ${ournet} to any in via ${ifout}
>
>${ipfw} add 300 allow ip from any to any via lo
>${ipfw} add 310 allow tcp from me to any keep-state via ${ifout}
>
>${ipfw} add 320 allow icmp from any to any
>${ipfw} add 330 allow udp from me to any domain keep-state
>${ipfw} add 340 allow udp from any to me domain
>${ipfw} add 350 allow ip from me to any
>${ipfw} add 400 allow tcp from 192.168.0.0/24 to me http,https,ssh,pop3
>${ipfw} add 410 allow tcp from not ${ournet} to me smtp
>${ipfw} add 500 fwd 127.0.0.1,3128 tcp from ${ournet} to any http out
>via ${ifout}
>${ipfw} add 510 divert natd all from any to any via ed1
>
>${ipfw} add 600 pass tcp from any to any pop3, aol
>${ipfw} add 610 pass tcp from any pop3, aol to any
>${ipfw} add 650 pass tcp from any 21 to any
>${ipfw} add 651 pass tcp from any to any 21
>${ipfw} add 652 pass tcp from any 20 to any
>${ipfw} add 653 pass tcp from any to any 20
>${ipfw} add 1002 allow ip from ${uprefix}.100 to any
>${ipfw} add 1002 allow ip from any to ${uprefix}.100
>${ipfw} add 65535 deny ip from any to any
Вся проблемма что надо вписывать правила в фаервол. строка 510 у тебя обсолютно верна но тебе надо добавить еще одно правило для твоего случая.
ipfw add allow ip from any to any
видешли в чом дело если ты добавиш это правило то вся твоя защита, как ты понимаеш и сам, просто накроеться медным тазом. Поэтому советую пересмотреть и открыть не всем как у тебя указанно в строке 510 а только определенной подсети например
${ipfw} add 510 divert natd all from ${ournet} to any via ed1
ipfw add allow ip from ${ournet} to any
ipfw add allow ip from any to ${ournet}
вот это будет работать и все у тебя будет хорошо.
и еще для более грамотной экономии трафика я бы посоветовал оставить сквид в конце концов там можно и позапрещать те сайты на которые ты не хочеш что бы люди ходили. а нат оставить для приват ip адресов и конечно для себя любимого. И вместо всяких keep-state я бы просто добавил строку:
ipfw add allow tcp from any to me established
если тебе это подходит конечно.Строка должна эта стоять после ната если хочеш что бы он работал.
С наилучшеми пожеланиями

"Помогите ipfw или NAT"
Отправлено antoshkin , 22-Дек-05 01:23 
в
>строке 510 а только определенной подсети например
>${ipfw} add 510 divert natd all from ${ournet} to any via ed1
>

С такой ботвой работать не будет.
Надо еще добавлять обратное правило:
${ipfw} add 511 divert natd all from any to ${ournet} via ed1
Ну а по-хорошему, можно еще направления указать:

${ipfw} add 510 divert natd all from ${ournet} to any xmit ed1
${ipfw} add 511 divert natd all from any to ${ournet} recv ed1


"Помогите ipfw или NAT"
Отправлено Garet , 22-Дек-05 03:39 

>>строке 510 а только определенной подсети например
>>${ipfw} add 510 divert natd all from ${ournet} to any via ed1
>>
>
>С такой ботвой работать не будет.
>Надо еще добавлять обратное правило:
>${ipfw} add 511 divert natd all from any to ${ournet} via ed1
>
>Ну а по-хорошему, можно еще направления указать:
>
>${ipfw} add 510 divert natd all from ${ournet} to any xmit ed1
>
>${ipfw} add 511 divert natd all from any to ${ournet} recv ed1
>
посмотри внимательно после стоят обратные правила, а вообще нат беспантова реализован в ipfw, в ipfilter это сделано гораздо лучше.

"Помогите ipfw или NAT"
Отправлено DEC , 21-Дек-05 10:59 
natd_intrefase="ed1"
          
думаю надо natd_interface

"Помогите ipfw или NAT"
Отправлено MoRo , 22-Дек-05 22:07 
Спасибо всем!
С натом разобрался.

Но теперь такая проблема что весь не локальный трафик всё равно хочет ходить только через squid.