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

PF вопрос)

Добавлено: 2013-07-13 16:23:28
Phantomrat
Вопрос вот в чем взялся копаться в PF решил настроить по мануалам с этого сайта но есть проблема, машины которые сидят в trust_lan не видят интернета и решить не могу вот и прошу помощи :oops:

вот pf.conf

Код: Выделить всё

nt_if="re1"
ext_if="re0"
trust_lan="{ 10.1.1.0/24 }"
icmp_types="{ echoreq, unreach}"



set block-policy return
set skip on lo0
set skip on $int_if

                                                           
scrub in all            
                                                           
nat on $ext_if from $trust_lan to any -> ($ext_if)         
                                                           
antispoof quick for $ext_if                                
                                                           
block all                                                                         
                                                           
pass out on $ext_if from $ext_if to any keep state         
pass out on $ext_if from $trust_lan to keep state
pass out on $ext_if from $trust_lan to &ext_if keep state

pass log inet proto icmp all icmp-type $icmp_types

Re: PF вопрос)

Добавлено: 2013-07-13 18:57:41
mikie
эти правила совсем не понятны..

Код: Выделить всё

pass out on $ext_if from $ext_if to any keep state         
pass out on $ext_if from $trust_lan to keep state
pass out on $ext_if from $trust_lan to &ext_if keep state
удалите их

Код: Выделить всё

pass out on $ext_if from $trust_lan to any keep state
это правило разрешит исходящий трафик из внутренней сети через внешний интерфейс

Re: PF вопрос)

Добавлено: 2013-07-13 19:07:41
mikie
Следующее
Если хотите работать в браузере из $trust_lan то нужно разрешить входящий трафик на 80-й порт внешнего интерфейса $ext_if
приверно так

Код: Выделить всё

pass in on $ext_if proto tcp from any to ($ext_if) port 80 keep state
немного поясню, proto tcp - уточнение протокола для 80-го порта, ($ext_if) в скобочках на случай если внешний интерфейс получает адрес динамически(DHCP)

Re: PF вопрос)

Добавлено: 2013-07-14 11:02:47
Dmitriy_3206
Правило NAT выполняется первым. И дальнейшая фильтрация происходит уже с адресом источника внешнего интерфейса.
Т.е. Вашего правила

Код: Выделить всё

pass out on $ext_if from $ext_if to any keep state  
достаточно.
А "не работает интернет" как вы выяснили?
ВЫ пинговали, проверяли работу ДНС?
На своей машине FreeBSD пропингуйте свой DG и DNS
проверте сначала с FreeBSD работу DNS
потом с клиента за FreeBSD пропингуйте шлюз за FreeBSD (машину провайдера)
проверте работу DNS

Re: PF вопрос)

Добавлено: 2013-07-14 12:57:43
Phantomrat
Перепробовал варианты не спасло, айпишники локалки компы получают, а все что за фрей начиная с днс провайдера в мире не видят.

Re: PF вопрос)

Добавлено: 2013-07-14 12:59:49
Dmitriy_3206
Ну а при правиле nat и плюс pass out all локалка то у вас ходит?
Может у вас ip.forwarding не включён

Re: PF вопрос)

Добавлено: 2013-07-14 13:14:03
Phantomrat
Поставил nat и pass out all, ситация не изменилась)))полез смотреть форвард...

Re: PF вопрос)

Добавлено: 2013-07-14 13:20:41
Phantomrat
Судя по всему стоит так как sysctl net.inet.ip.forwarding=1 изменила значение с 1 на 1...(И как факт если из внешнего мира подключиться по VPN к фряхе а далее открыть рдп к машине которая в локалке за фряхой то все ок)

Re: PF вопрос)

Добавлено: 2013-07-14 13:39:53
Phantomrat
Проверил tcpdump'ом с интерфейса из локалки пакеты выходят например на 8.8.8.8 но обратно не приходят:(хотя опция gateway так же активна.

Re: PF вопрос)

Добавлено: 2013-07-14 13:42:25
Dmitriy_3206
А Free нормально ping на внешний ресурс?

Выглядит будто у Вас nat не работает. (раз Вы убедились что forwarding работает)
У Вас в первом посте первая строчка просто не скопировалась полностью?

Я Nat раньше писал так:

Код: Выделить всё

nat on $ext_if inet from ! $ext_if  to any -> ($ext_if) 
Ну и проверить что в правилах получилось

Код: Выделить всё

pfctl -s all | less

Re: PF вопрос)

Добавлено: 2013-07-14 13:57:09
Phantomrat
Ping с фри в мир уходят нормально порты обновляются и тд и тп.
вот что выдала команда "pfctl -s all | less"

Код: Выделить всё

No ALTQ support in kernel
ALTQ related functions disabled
FILTER RULES:

INFO:
Status: Enabled for 0 days 00:01:37           Debug: Urgent

State Table                          Total             Rate
  current entries                        0               
  searches                             192            2.0/s
  inserts                                0            0.0/s
  removals                               0            0.0/s
Counters
  match                                192            2.0/s
  bad-offset                             0            0.0/s
  fragment                               0            0.0/s
  short                                  0            0.0/s
  normalize                              0            0.0/s
  memory                                 0            0.0/s
  bad-timestamp                          0            0.0/s
  congestion                             0            0.0/s
  ip-option                              0            0.0/s
  proto-cksum                            0            0.0/s
  state-mismatch                         0            0.0/s
  state-insert                           0            0.0/s
  state-limit                            0            0.0/s
  src-limit                              0            0.0/s
  synproxy                               0            0.0/s

TIMEOUTS:
tcp.first                   120s
tcp.opening                  30s
tcp.established           86400s
tcp.closing                 900s
tcp.finwait                  45s
tcp.closed                   90s
tcp.tsdiff                   30s
udp.first                    60s
udp.single                   30s
udp.multiple                 60s
icmp.first                   20s
icmp.error                   10s
other.first                  60s
other.single                 30s
other.multiple               60s
frag                         30s
interval                     10s
adaptive.start             6000 states
adaptive.end              12000 states
src.track                     0s

LIMITS:
states        hard limit    10000
src-nodes     hard limit    10000
frags         hard limit     5000
tables        hard limit     1000
table-entries hard limit   200000

OS FINGERPRINTS:
700 fingerprints loaded

Re: PF вопрос)

Добавлено: 2013-07-14 14:16:34
Dmitriy_3206
Ну вот и показывает что у вас нет правил вообще. Вывод у меня на машине:

Код: Выделить всё

TRANSLATION RULES:
nat on age0 inet from <all_hosts> to any -> (age0) port 1024:65535 round-robin
rdr pass on tun0 inet proto tcp from <trust_net> to 10.20.25.1 port = rdp -> 192.168.244.100

FILTER RULES:
scrub all random-id fragment reassemble
anchor "int_tun/*" all
.............................................

Re: PF вопрос)

Добавлено: 2013-07-14 14:30:03
Phantomrat
Хм...а как такое возможно? Если правила в pf описаны и rc.conf есть строки:

Код: Выделить всё

pf_enable="YES"
pf_rules="/etc/pf.conf"

Re: PF вопрос)

Добавлено: 2013-07-14 15:33:50
Dmitriy_3206
Ну так проверте командой
pfctl -nf /etc/pf.conf
и загрузите
pfctl -f /etc/pf.conf

а вот перегружал командой
pfctl -R -f /etc/pf.conf загрузить только правила фитрации
то у меня пустой набор получался

Re: PF вопрос)

Добавлено: 2013-07-15 8:26:53
Phantomrat
Все, спасибо разобрался проблема была в одной строке в правиле, поэтому правила не включались ЗЫ логи рулят). Ладно всем спасибо:)