Страница 1 из 1
непонятки с PF
Добавлено: 2009-06-04 8:13:19
Sayman
уважаемые, помогите. никак не могу въехать в логику работы этого ПФ.
значит система FReeBSD 6.2
ядро собирало с опциями:
Код: Выделить всё
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
options ALTQ_NOPCC
device pf
device pflog
device pfsync
в файле rc.conf так же есть строки:
Код: Выделить всё
pf_enable="YES"
pf_rules="/etc/rc.mypf"
pflog_enable="YES"
pflog_logfile="/var/pflog"
содержимое файла с правилами такое:
Код: Выделить всё
wan="nve0"
lan="xl0"
local="192.168.0.0/24"
oip="212.164.1.2"
iip="192.168.0.1"
admin="192.168.0.112"
sibseti="80.64.x.x"
avia_1="192.168.0.113"
private="{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
kronos="193.43.x.x"
akadem="{ 85.118.x.x, 85.118.y.y }"
#table <filials> { $akadem, $kronos }
serv="192.168.0.2"
icmp_types="echoreq"
#set limit { frags 5000, states 3500 }
set optimization normal
set block-policy drop
#set state-policy if-bound
scrub in all
#NAT
nat on $wan inet proto tcp from $lan:network to any -> ($wan)
rdr on $lan inet proto tcp from $admin to any port 80 -> 127.0.0.1 port 3128
rdr on $wan inet proto tcp from $kronos to $wan port 3389 -> $serv port 3389
#--
block all
pass in quick on lo0 all
#----------Block private networks---------
block in quick on $wan inet from $private to any
block out quick on $wan inet from any to $private
#-------------END--------------
pass in inet proto icmp all icmp-type $icmp_types keep state
pass quick on $wan inet proto tcp from any to any port 53 keep state
pass quick on $wan inet proto udp from any to any port 53 keep state
pass quick on $lan inet proto { tcp, udp } from any to any port 53 keep state
pass quick on $lan proto tcp from $local to port 5190 tag NAT_PASS keep state
pass out on $wan tagged NAT_PASS keep state
pass in quick on $lan inet proto tcp from $admin to $iip port 2022 keep state
проблема вот в чём:
после применения правил нифига не работает. пинги с серва никуда не идут. на сервак так же. нат не пашет, днс тоже блокируется...вовбщем всё на всё закрыто. почему? тот же нат. согласно статье
http://www.opennet.ru/base/net/pf_faq.txt.html нат всяко должен работать.
что я делаю не так? в ipfw собственно логика была попроще, вначале указываю то что должно работать, т.е. разрешено. а потом блокирую то что не надо...например, открываю нат, разрешаю всякие ссх на серв от моего компа, открываю какие надо порты, а потом закрываю всё что не должно приходить с инета на серв. тут такая логика не проходит.
подскажите кто что может и/или знает. очень прошу!
Re: непонятки с PF
Добавлено: 2009-06-04 9:03:53
GRooVE
попробуй закомментить это правило:
Код: Выделить всё
block in quick on $wan inet from $private to any
Re: непонятки с PF
Добавлено: 2009-06-04 9:23:13
Sayman
это я уже пробовал...
решил переписать всё по новой..всё правило.
вот текст новых правил:
Код: Выделить всё
#macros
wan="nve0"
lan="xl0"
local="{ 192.168.0.0/24 }"
iip="192.168.0.1"
oip="212.164.x.x"
avia="{ 192.168.0.113, 192.168.0.139 }"
admin="192.168.0.112"
serv="192.168.0.2"
filials="{ 212.164.x.x, 85.118.x.x, 85.118.y.y, 193.43.x.x }"
no_routs="{ 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 }"
pings="echoreq"
#tables
#options
set block-policy drop
set timeout { frag 10, tcp.established 3600 }
scrub in all
#nat
nat on $wan from $lan:network to any -> $wan
rdr on $wan proto tcp from $filials to $wan port 3389 -> $serv port 3389
#firewall
block all
pass on $lan from any to any
antispoof log quick for { lo0, $lan, $wan }
#
#block in quick on $wan inet from $no_routs to any
#block out quick on $wan inet from any to $no_routs
#
pass in quick on $lan proto tcp from $admin to $iip port 2022 keep state
pass in quick on $lan proto tcp from $admin to $iip port 777 keep state
pass in quick on $lan proto tcp from $admin to $iip port 80 keep state
pass in quick on $wan proto tcp from $lan:network to any port 5190 keep state
pass quick on $wan proto udp from any to $wan port 53 keep state
pass quick on $wan proto tcp from $wan port 53 to any keep state
pass quick on $lan proto udp from $local to any port 53 keep state
pass quick on $wan proto tcp from $filials to $serv port 3389 keep state
pass log inet proto icmp all
толку почти нет...заработали пинги внутрь сети от сервака...днс и нат не пашут, аська отваливается. подозреваю правила ната и правила с днс...чтото там напортачил, а что понять не могу...вроде логично всё.
думаю, может прописать для днс правила in и out?,
ещё момент. не могу понять почему не срабатывают правила типа
nat on $wan from $local to any -> $wan
т.е. если указываю именно сеть/маска, то фиг..ошибку не выдаёт, но видно что не проканывает...странно...судя по pf -ss пакеты наружу летят. я вижу что есть соединения причём established по порту 5190, но аська всё ровно не пашет...быть может нехватает правила out?
Re: непонятки с PF
Добавлено: 2009-06-04 9:29:44
$Alchemist
nat on $wan inet proto tcp from $lan:network to any -> ($wan)
можно так сделать:
Код: Выделить всё
nat on $wan inet from $local to any -> $oip
А по поводу разруливания выхода можно сделать по разному, в вашем случае рекомендую включить логгирование всего что блокируется:
И начать разбирацца:
Re: непонятки с PF
Добавлено: 2009-06-04 10:35:57
Sayman
мда...tcpdump выдал что pflog0 no ipv4 address assigned...
сделал tcpdump -ner /var/log/pflog выдал мне гору всякого всякого...например вижу что есть мой внешний адрес, только судя по всему номер порта идёт не через двоеточее а через точку в итоге вижу обознаение адреса как 1.2.3.4.5 и блокируется почти всё...очень странно, несмотря на то что я указываю в правилах pass...
Re: непонятки с PF
Добавлено: 2009-06-04 12:03:03
Zedik
Достаточно ли правил
pass in all
pass out all
что бы пропустить всех и вся хотя бы на интерфейсы?
уже пытаюсь ему все разрешить- не хочет даже icmp пропускать - permission denied
ядро пересобрал с поддержкой, в rc.conf запихнул необходмые enable и т.п.
Re: непонятки с PF
Добавлено: 2009-06-04 13:23:13
Sayman
снова переписал правила, толькол на этот раз добовлял по пунктам...начал дебагнить порты аськи и увидел в чём прочина...
вот как тпеперь всё выглядит.
Код: Выделить всё
macros
wan="nve0"
lan="xl0"
local="{ 192.168.0.0/24 }"
iip="192.168.0.1"
oip="212.164.x.x"
avia="{ 192.168.0.113, 192.168.0.139 }"
admin="192.168.0.112"
serv="192.168.0.2"
filials="{ 212.164.x.x, 85.118.x.x, 85.118.y.y, 193.43.x.x }"
no_routs="{ 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 }"
pings="{ echoreq, unreach }"
d_ports="{ 22, 135, 137 ,139, 445, 3306 }"
#tables
#options
set block-policy drop
set timeout { frag 10, tcp.established 3600 }
set loginterface nve0
scrub in all
#nat
rdr proto tcp from $lan:network to any port 80 -> 127.0.0.1 port 3128
nat on $wan inet from $lan:network to any port { 80, 443, domain } -> $wan
rdr on $wan proto tcp from $filials to $wan port 3389 -> $serv port 3389
#firewall
block log all
pass quick on lo0 all
pass on $lan from any to any
antispoof log quick for { lo0, $lan, $wan }
#
block in quick on $wan inet from $no_routs to any
block out quick on $wan inet from any to $no_routs
block in quick on $wan proto tcp from any to $oip port $d_ports
block out quick on $wan proto tcp from $wan port $d_ports to any
#
#admin
pass in quick on $lan proto tcp from $admin to $iip port 2022 keep state
pass in log quick on $lan proto tcp from $admin to $iip port 777 keep state
pass in quick on $lan proto tcp from $admin to $iip port 80 keep state
#ICQ
pass in log quick on $lan proto tcp from $local to any port 5190 keep state
pass out log quick on $wan proto tcp from $wan to any port 5190 keep state
#DNS
pass in log quick on $lan proto udp from $local to $iip port 53
pass out log quick on $lan proto udp from $iip port 53 to $local
pass in log quick on $wan proto { tcp, udp } from any to $oip port 53
pass out log quick on $wan proto { tcp, udp } from $oip port 53 to any
pass in log quick on $wan proto { tcp, udp } from any port 53 to $oip
pass out log quick on $wan proto { tcp, udp} from $oip to any port 53
#MAIL
pass in log quick on $lan proto tcp from $local to $iip port { 25, 143 } keep state
pass out log quick on $lan proto tcp from $iip port { 25,143 } to $local keep state
pass in log on $wan proto tcp from any to $oip port 25 keep state
pass out log quick on $wan proto tcp from $oip port 25 to any keep state
pass in log quick on $wan proto tcp from any port 25 to $oip keep state
pass out log quick on $wan proto tcp from $oip to any port 25 keep state
#http and https
pass in log quick on $lan proto tcp from $local to any port { 80, 443 }
pass out log quick on $wan proto tcp from $wan to any port { 80, 443 }
#SABRE
pass in log quick on $lan proto tcp from $avia to any port $sabre_ports keep state
pass out log quick on $wan proto tcp from $wan to any port $sabre_ports keep state
#RDP
pass in log quick on $wan proto tcp from $filials to any port 3389 keep state
pass out log quick on $lan proto tcp from $lan to $serv port 3389 keep state
#
pass inet proto icmp all
на мой взгляд не совсем красиво выглядит, потому что для того чтобы работала например аська пришлось сначала пустить с локалки на серв, а потом с серва в инет..
в ipfw немного не так. там одна строчка решает.. а чтобы народ страницы мог глазеть, ообще в Ipfw достаточно было бы простого ната, а тут кроме строки с натом, ещё две строки добавил. такое ощущение что пф не умеет с петлёй работать...
у кого какие мысли есть?
Re: непонятки с PF
Добавлено: 2009-06-04 19:58:27
$Alchemist
Sayman писал(а):
на мой взгляд не совсем красиво выглядит, потому что для того чтобы работала например аська пришлось сначала пустить с локалки на серв, а потом с серва в инет..
в ipfw немного не так.
Именно! Но по-другому не значит плохо.
Я даю с сервера полный выход, а клиентов разруливаю на внутреннем интерфейсе.
Re: непонятки с PF
Добавлено: 2009-06-04 20:04:24
$Alchemist
Не вкурил почему сообщения отправленные в личку виснут в папке Исходящие... ))
Вобщем я так делал:
http://www.opennet.ru/base/net/freebsd_gw3.txt.html
Re: непонятки с PF
Добавлено: 2009-06-05 9:03:31
Sayman
т.е. я правлиьно понял, что помимо открытого ната. в пф нужно ещё и 80й и прочие порты разрешать? вот фигн какой...
Re: непонятки с PF
Добавлено: 2009-06-05 9:16:46
AzureZ
Sayman писал(а):т.е. я правлиьно понял, что помимо открытого ната. в пф нужно ещё и 80й и прочие порты разрешать? вот фигн какой...
Ну если все блочите сначала. Уберите block log all и кроме ната ничего и не нужно будет
Re: непонятки с PF
Добавлено: 2009-06-05 10:02:14
Sayman
не...бл0ки убирать не годится! иначе смысл ставить фильтр

Re: непонятки с PF
Добавлено: 2009-06-08 7:03:06
Sayman
вобщем с этим серваком какие то чудеса творятся нереальные.
сегодня вырубился сам...толи питание прыгнуло толи как...включаю и бац..нет инета...есть машинка одна..терминальник. не наш. а левой конторы...они посмтавили его у нас чтобы человек мог работать с базами и выполнять заказы...работает на порту 55777, локальный адрес 192.168.0.250
ранее, т.е. на той неделе, когда смотрел по логам. было так. её терминалд лезит на серв, а потом уже от имени сера. т.е с внешним айпи подрубается к удалённому серваку. сёдня ничего совершенно не менял в правилах. после включения сервака у неё не пашет этот терминал. смотрю в логи и вижу:
Код: Выделить всё
054368 rule 95/0(match): pass in on xl0: 192.168.0.250.55777 > 80.69.179.66.55777: UDP, length 82
000009 rule 0/0(match): block out on nve0: 192.168.0.250.55777 > 80.69.179.66.55777: UDP, length 82
блок потому, что естественно что я не разрешал от имени локалдьных компов шарить по инету. да и не верно это чтобы на внешнем интерфейсе ворочился локальный айпи!
это как такое может быть? на той неделе было вот так:
Код: Выделить всё
096833 rule 0/0(match): pass in on xl0: 192.168.0.250.55777 > 80.69.179.66.55777 : UDP, length 113
000034 rule 0/0(match): pass out on nve0: 212.164.х.х.63220 > 80.69.179.66.55777: UDP, length 113
мне каже5тся что именно такая запись более верная, а не то что я увидел сегодня. ка ктакое вообще могло произойти? почему при старых правилах, этот ПФ живёт какой-то своей жизнью и кладёт большой и толстый на файл с парвилами? применяю правила вот так:
pfctl -f /etc/файл
хотя пробовал ещё pfctl -R -f /etc/файл
причём это стало касаться не только одной машины. все теперь пытаются именно так лезть в инет!
что может быть не так? сообщений об ошибках нет.