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

FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 9:36:44
beegimot
Что имею: FreeBSD 7.2 + IPFW + NAT: PF + squid 2.7 + stargazer (биллинг и авторизация порт 5555), а также named и apache22, пересобрал ядро со всеми необходимыми опциями для PF

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

#PF
device pf
device pflog
device pfsync
#PF-QOS
options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build
Подправил Makefile сквида в /usr/ports/www/squid, включил поддержку PF, сделал "make deinstall clean" и "make install clean"

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

SQUID_PF "Enable transparent proxying with PF" on \
Что хочу: трансляция нат + stargazer (открывает в ipfw дыру для клиента) на squid (127.0.0.1:3128 transparent) и собственно дальше счастливые будни. Данную схему уже прорабатывал на freebsd 6.2 только с natd, собственно и с этим демоном на новой 7.2 тоже не работал нат почемуто вот и решил использовать PF тем более что он намного производительнее демонов так как в ядре. ВОТ хочу понять где туплю.

pf.conf

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

ext_if="rl0"
int_if="re0"
nat on $ext_if proto { tcp udp icmp } from $int_if:network to any -> ($ext_if)
#nat on rl0 from re0:network to any -> (rl0)  ###тоже пробовал
pass out
pfctl -s state

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

all tcp 192.168.1.1:53366 -> 192.168.1.2:3389       ESTABLISHED:ESTABLISHED
all udp 192.168.1.1:53 -> 192.168.1.205:55187       SINGLE:NO_TRAFFIC
all tcp 10.100.10.162:61539 -> 93.186.229.2:80       ESTABLISHED:ESTABLISHED
all tcp 10.100.10.162:64313 -> 194.186.121.35:80       TIME_WAIT:TIME_WAIT
all tcp 10.100.10.162:56816 -> 217.73.200.221:80       FIN_WAIT_2:FIN_WAIT_2
all tcp 10.100.10.162:65338 -> 194.186.121.35:80       TIME_WAIT:TIME_WAIT
all udp 192.168.1.1:53 -> 192.168.1.7:54163       SINGLE:NO_TRAFFIC
all icmp 192.168.1.1:31236 -> 192.168.1.1       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.7       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.50       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.53       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.55       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.56       0:0
all tcp 10.100.10.162:51549 -> 217.69.128.41:80       FIN_WAIT_2:FIN_WAIT_2
all icmp 192.168.1.1:31236 -> 192.168.1.40       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.57       0:0
all udp 192.168.1.1:53 -> 192.168.1.2:62017       SINGLE:NO_TRAFFIC
all udp 192.168.1.1:5555 -> 192.168.1.2:5555       MULTIPLE:MULTIPLE
all icmp 192.168.1.1:31236 -> 192.168.1.2       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.120       0:0
all icmp 192.168.1.1:31236 -> 192.168.1.205       0:0
ifconfig

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

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:1b:b9:c9:88:6c
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:02:44:26:68:14
        inet 10.100.10.162 netmask 0xfffffffc broadcast 10.100.10.163
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
pfsync0: flags=0<> metric 0 mtu 1460
        syncpeer: 224.0.0.240 maxupd: 128
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
rc.conf

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

defaultrouter="10.100.10.161"
hostname="myhost.provader.ru"
ifconfig_re0="inet 192.168.1.1 netmask 255.255.255.0"
ifconfig_rl0="inet 10.100.10.162 netmask 255.255.255.252"
##########################################################
################
sshd_enable="YES"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
scrnmap="koi8-r2cp866"
keyrate="normal"
keymap="ru.koi8-r"
##
firewall_enable="YES"
firewall_script="/etc/myfw.fw"
firewall_loging="YES"
####
proftpd_enable="YES"
webmin_enable="YES"
###############
smbd_enable="YES"
nmbd_enable="YES"
###PF##
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"
pfsync_syncdev=""
pfsync_ifconfig=""
##
gateway_enable="YES"
############################
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
###########################
named_enable="YES"
rinetd_enable="YES"
mysql_enable="YES"
apache22_enable="YES"
squid_enable="YES"
myfw.fw

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

#!/bin/sh -
###
inn='re0'               #192.168.1.1
ipin='192.168.1.1'
innet='192.168.1.0/24'
###
out='rl0'
ipout='10.100.10.162'
#
ipfw="/sbin/ipfw -q"
#natdcmd="/sbin/natd"
####################
${ipfw} -f flush
${ipfw} add 100 deny ip from not 192.168.1.110 to me dst-port 3128 in via ${inn}
${ipfw} add 200 deny ip from 192.168.0.0/16 to any in via ${out}
${ipfw} add 400 deny icmp from any to any frag
${ipfw} add 500 deny ip from any to not me via ${out} in
${ipfw} add 510 deny ip from any to 192.168.0.0/16,10.0.0.0/16,172.16.0.0/12 out via ${out}
${ipfw} add 520 deny ip from 0.0.0.0/8,224.0.0.0/4,10.0.0.0/8,172.16.0.0/12 to any out via ${out}
${ipfw} add 530 deny ip from not ${innet} to any in via ${inn}
#################DIVERT!!! Отключил natd###########################
#${ipfw} add 700 divert natd ip4 from ${innet} to any out via ${out}
#${ipfw} add 700 divert natd ip4 from any to ${ipout} in via ${out}
#####################################################
${ipfw} add 710 check-state
${ipfw} add 720 allow ip from any to any via lo0
${ipfw} add 730 allow ip from me to any keep-state
##
${ipfw} add 740 deny all from any to 127.0.0.0/8
${ipfw} add 750 deny ip from 127.0.0.0/8 to any
########################################
${ipfw} add 780 allow tcp from any to me 27,25
#FTP
${ipfw} add 785 allow ip from any 20,21 to me keep-state
${ipfw} add 785 allow ip from any to me 20,21 keep-state
#####
${ipfw} add 800 allow ip from ${innet} to me 80,110,445,137-139,10000,5555,8080 in via ${inn}
${ipfw} add 810 allow icmp from any to me icmptypes 0,3,8
${ipfw} add 820 allow ip from any to me 53
##
# Allow access to our WWW
${ipfw} add 823 allow tcp from any to ${ipout} 80 via ${out}
#
${ipfw} add 65534 deny log ip from any to any
squid.conf

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

http_port 192.168.1.1:8080 #####- сейчас, временно юзеры ходят через этот прокси порт прописаный в браузере
http_port 127.0.0.1:3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_mem 64 MB
#maximum_object_size 16384 KB
dns_nameservers localhost
#cache_dir ufs /usr/local/squid/cache 3000 16 256
cache_dir ufs /250/shares/squid/cache 50000 64 512
cache_access_log /usr/local/squid/logs/access.log
cache_log /usr/local/squid/logs/cache.log
#cache_store_log /usr/local/squid/logs/store.log
cache_store_log none
pid_filename /usr/local/squid/squid.pid
ftp_user admin@myhost.provader.ru
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
quick_abort_pct 70
negative_ttl 1 minute
positive_dns_ttl 6 hour
negative_dns_ttl 1 minute
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 20          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
no_cache deny QUERY localhost to_localhost
acl net src 192.168.1.0/24
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow net
icp_access allow all
cache_mgr admin@myhost.provader.ru
cache_effective_user squid
cache_effective_group squid
####
forwarded_for on
cachemgr_passwd passwd all
client_db on
error_directory /usr/local/etc/squid/errors/Russian-koi8-r
coredump_dir /usr/local/squid/cache
Скрипт коннекта stargazer открывающий дырку в фаере OnConnect

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

#!/usr/local/bin/bash
#Этот скрипт вызывается в момент, когда пользователь
#успешно прошел авторизацию на сервере. Задача скрипта - перестроить
#файрвол так, что бы пользователь получил доступ в интернет
# Login
LOGIN=$1
IP=$2
#cash
CASH=$3
#user ID
ID=$4
#Selected dirs to connect
DIRS=$5
ipfw="/sbin/ipfw"
inn='re0'
SG=`/usr/local/sbin/squid -k reconfigure`
test -x /var/stargazer/users/$LOGIN/OnConnect
if [ $? == 0 ]
then
echo $IP > /var/stargazer/users/$LOGIN/ip
echo $ID > /var/stargazer/users/$LOGIN/id
echo $LOGIN > /var/stargazer/users/$LOGIN/login
cd /var/stargazer/users/$LOGIN/ && ./OnConnect
$SG
exit 0
fi
echo "connect $LOGIN $IP" >> /usr/local/stargazer/var/log/connect.log

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 10:42:16
GRooVE
beegimot писал(а):Данную схему уже прорабатывал на freebsd 6.2 только с natd, собственно и с этим демоном на новой 7.2 тоже не работал нат почемуто вот и решил использовать PF тем более что он намного производительнее демонов так как в ядре.
Начиная с семерки в ipfw появился тоже ядерный нат
И еще:
Со stargazer'ом никогда не работал, но глядя на этот комментарий

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

#Этот скрипт вызывается в момент, когда пользователь
#успешно прошел авторизацию на сервере. Задача скрипта - перестроить
#файрвол так, что бы пользователь получил доступ в интернет
и задаваемые переменные после него, то складывается впечатление, что в конце явно не хватает правила ipfw, которое, например, должно добавлять айпишник юзера в какой-то table
или я что-то не так понял?

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 10:52:03
beegimot
GRooVE писал(а):
beegimot писал(а):Данную схему уже прорабатывал на freebsd 6.2 только с natd, собственно и с этим демоном на новой 7.2 тоже не работал нат почемуто вот и решил использовать PF тем более что он намного производительнее демонов так как в ядре.
Начиная с семерки в ipfw появился тоже ядерный нат
Про это я в курсе, но меня такой нат не возбуждает :), уж больно он не логичный и замудренный, для дальнейшего использования, я решил остановиться именно на PF, да дело даже не в выборе НАТа, а видимо в корявости моих рук, вот хочу не пробовать всё подряд а чтоб конкретно понять что не так делаю, дабы впредь можно было обходить такие простые моменты без ошибок...
в конце явно не хватает правила ipfw, которое, например, должно добавлять айпишник юзера в какой-то table
или я что-то не так понял?

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

ipfw="/sbin/ipfw"
inn='re0'
по моему это правило которое не нашли ?
дело в том что с таким же фаерволом и с такими же скриптами stargazerа у меня первый сервак работает отлично

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 11:03:49
beegimot
просто я не знаю как правильнее проверить как проходят у меня пакеты, может даже они пролетают по НАТ и теряются, где логи смотреть, в сквиде логи появляются только при коннекте по порту напрямую без ната. PF логи вот что дают вообще
pf.log

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

тц??............t...u...
... в общем гемор

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 11:17:42
GRooVE
beegimot писал(а):где логи смотреть. PF логи вот что дают вообще
pf.log

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

тц??............t...u...

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

tcpdump -netttr /var/log/pflog

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:12:57
FessAectan
вот так исправьте

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

ext_if="rl0"
int_if="re0"
nat on $ext_if from $int_if:network to any -> ($ext_if) 
#nat on rl0 from re0:network to any -> (rl0)  ###тоже пробовал
pass all#(если я правильно понял pf только натит, так что сдесь ни какой фильтрации)
з.ы.
терзают сомнения что вы воложили не весь конфиг....

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:17:07
beegimot
FessAectan писал(а):вот так исправьте

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

ext_if="rl0"
int_if="re0"
nat on $ext_if from $int_if:network to any -> ($ext_if) 
#nat on rl0 from re0:network to any -> (rl0)  ###тоже пробовал
pass all#(если я правильно понял pf только натит, так что сдесь ни какой фильтрации)
я сначало тоже так думал, но без переменной pass all не работает совсем: команнда pfctl -s state не чего не показывает
В мануале по PF говорится помоему: что на каждое правило или группу правил должно быть разрешающее правило, или можно сделать так

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

nat pass on $ext_if from $int_if:network to any -> ($ext_if)
, где pass-это исключить данное правило из правил фильтрации, но так тоже pfctl -s state молчит...

По поводу что не полностью конфиг выложил - это всё что не закомментированно, остальные редиректы, и опции я пока не открывал, т.к сначало надо поднять с уверенностью НАТ

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:27:46
FessAectan
beegimot писал(а):
FessAectan писал(а):вот так исправьте

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

ext_if="rl0"
int_if="re0"
nat on $ext_if from $int_if:network to any -> ($ext_if) 
#nat on rl0 from re0:network to any -> (rl0)  ###тоже пробовал
pass all#(если я правильно понял pf только натит, так что сдесь ни какой фильтрации)
я сначало тоже так думал, но без переменной pass all не работает совсем: команнда pfctl -s state не чего не показывает
В мануале по PF говорится помоему: после каждого правила должно быть разрешающее правило, или можно сделать так

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

nat pass on $ext_if from $int_if:network to any -> ($ext_if)
, но так тоже pfctl -s state молчит...
вы ошибаетесь, в мануале говорится о том что на правила фильтрации приходят уже оттранслированные пакеты, указав в конфиге pass all мы вообще ни чего не фильтруем(читать мы разрешили все).
C.2.1.5.2. NAT и фильтрация

Пакеты подвергаемые трансляции проходят через фильтр и будут отброшены или пропущены в зависимости от правил которые там встретятся. Единственное исключение — если в правиле NAT встретится ключевое слово pass, то в этом случае пакет не будет подвергнут фильтрации.

Трансляция осуществляется до фильтрации. Правила фильтра увидят уже оттранслированные пакеты.
сперто с http://house.hcn-strela.ru/BSDCert/BSDA ... irewall-pf

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:33:00
beegimot
вы ошибаетесь, в мануале говорится о том что на правила фильтрации приходят уже оттранслированные пакеты, указав в конфиге pass all мы вообще ни чего не фильтруем(читать мы разрешили все).
Примерно тоже самое я вам и сказал, но суть не в этом без pass out, правило нат не работает, кстати не pass all

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:33:44
FessAectan
так же при тестировании правил и ната полезны будут следующие команды. Нат и рдр

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

proxysrv# pfctl -vsn
Фильтр

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

pfctl -vsr

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:34:49
beegimot
во уже интереснее
pfctl -vsn

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

nat on rl0 inet proto tcp from 192.168.1.0/24 to any -> (rl0) round-robin
  [ Evaluations: 113569    Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 495 ]
nat on rl0 inet proto udp from 192.168.1.0/24 to any -> (rl0) round-robin
  [ Evaluations: 2122      Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 495 ]
nat on rl0 inet proto icmp from 192.168.1.0/24 to any -> (rl0) round-robin
  [ Evaluations: 12        Packets: 0         Bytes: 0           States: 0     ]
  [ Inserted: uid 0 pid 495 ]
pfctl -vsr

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

pass out all flags S/SA keep state
  [ Evaluations: 297257    Packets: 236213    Bytes: 98096784    States: 181   ]
  [ Inserted: uid 0 pid 495 ]

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:36:03
FessAectan
beegimot писал(а):
вы ошибаетесь, в мануале говорится о том что на правила фильтрации приходят уже оттранслированные пакеты, указав в конфиге pass all мы вообще ни чего не фильтруем(читать мы разрешили все).
Примерно тоже самое я вам и сказал, но суть не в этом без pass out, правило нат не работает, кстати не pass all
А с чего бы ему работать если вы не разрешили в конфиге пф хождение пакетов? Если вы хотите от pf только нат то конфиг pf должен выглядеть именно так, а уже фильтрация на ipfw... или я вас не понял?

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:37:33
beegimot
FessAectan писал(а):
beegimot писал(а):
вы ошибаетесь, в мануале говорится о том что на правила фильтрации приходят уже оттранслированные пакеты, указав в конфиге pass all мы вообще ни чего не фильтруем(читать мы разрешили все).
Примерно тоже самое я вам и сказал, но суть не в этом без pass out, правило нат не работает, кстати не pass all
А с чего бы ему работать если вы не разрешили в конфиге пф хождение пакетов? Если вы хотите от pf только нат то конфиг pf должен выглядеть именно так, а уже фильтрация на ipfw... или я вас не понял?
Ну в топике же написал я про ipfw (Что имею: FreeBSD 7.2 + IPFW + NAT: PF) и написал почему у меня в конфиге pf стоит pass out - разрешающее правило

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:43:12
beegimot
мне просто не понятно, при всей видемой исправности(возможно мнимой) работы, нат почемуто не хочет работать, как будто кто то его глушит )))
Кстати вот что происходит на клиентских виндовых тачках :
IP: 192.168.1.2
Шлюз: 192.168.1.1
ДНС: 192.168.1.1

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

C:\>ping ya.ru

Обмен пакетами с ya.ru [77.88.21.8] по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 77.88.21.8:
    Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),
перед этим запросом очищал dns кеш на этой тачке, вывод: по нат возможно доходит, т.к. определил IP сервера ya.ru , причем IP меняется как положенно периодически в запросах, значит всетаки запрос доходит до сервака, но сервак не пускает дальше их ? поправте меня если нелепость несу..

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 12:56:52
FessAectan
Хм... хорошо, давайте поступим немного по другому. Сначала раскрутим нат PF. Итак pf.conf

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

ext_if="rl0"
int_if="re0"

set skip on lo0 #здесь мы могли бы добавить и $int_if, но тогда придется забыть о трансперент прокси

nat on $ext_if from $int_if:network to any -> ($ext_if) 
block all #сперва запретим всё
pass on $int_if #на внутреннем всё можно
pass out log on $ext_if #включим логирование и разрешим весь исходящий
pass in on $ext_if proto tcp from any to $ext_if port ssh #к примеру пустим на внешний ssh
на всякий случай проверим

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

proxysrv# pfctl -e
pfctl: pf already enabled
проверим наши правила

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

pfctl -nf /etc/pf.conf
если все гуд то

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

pfctl -n /etc/pf.conf
теперь идем тестить... а поможет нам

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

tcpdump -nq -i pflog0

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 13:08:03
beegimot
FessAectan писал(а):Хм... хорошо, давайте поступим немного по другому. Сначала раскрутим нат PF. Итак pf.conf

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

ext_if="rl0"
int_if="re0"

set skip on lo0 #здесь мы могли бы добавить и $int_if, но тогда придется забыть о трансперент прокси

nat on $ext_if from $int_if:network to any -> ($ext_if) 
block all #сперва запретим всё
pass on $int_if #на внутреннем всё можно
pass out log on $ext_if #включим логирование и разрешим весь исходящий
pass in on $ext_if proto tcp from any to $ext_if port ssh #к примеру пустим на внешний ssh
на всякий случай проверим

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

proxysrv# pfctl -e
pfctl: pf already enabled
проверим наши правила

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

pfctl -nf /etc/pf.conf
если все гуд то

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

pfctl -n /etc/pf.conf
теперь идем тестить... а поможет нам

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

tcpdump -nq -i pflog0
pass on $int_if
так разве пойдет ? не должно случайно быть

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

pass out on $int_if

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 14:00:21
FessAectan
правило pass on $int_if может быть записано так

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

pass in on $int_if
pass out on $int_if
:smile: то есть одной строкой мы записали два правила

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 14:41:46
beegimot
короче я потерял удаленный доступ в виду этих правил :(

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

ext_if="rl0"
int_if="re0"
set skip on lo0 #здесь мы могли бы добавить и $int_if, но тогда придется забыть о трансперент прокси
nat on $ext_if from $int_if:network to any -> ($ext_if) 
block all #сперва запретим всё
pass on $int_if #на внутреннем всё можно
pass out log on $ext_if #включим логирование и разрешим весь исходящий
pass in on $ext_if proto tcp from any to $ext_if port ssh #к примеру пустим на внешний ssh
придется завтра ехать в тот офис по морозу -35 градусов, и народ без инета остался несколько офисов :)

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-24 15:04:19
FessAectan
извините но :ROFL: .... вы что игрались с фаерволом удаленно?? ну сюдя по всему да... жжете товарищ. На будущие, если играете с конфигом удаленно то зосовывайте в крон конфиг которы бы разрешал все, к примеру чтобы скрипт применяющий правила которые разрешают все отрабатывал каждые 15 минут. Таким образом если вы где то ошибётесь то не потеряете связь....
P.S.
что то я совсем забыл, а

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

sysctl net.inet.ip.forwarding
что показывает?

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 6:53:10
beegimot
FessAectan писал(а):извините но :ROFL: .... вы что игрались с фаерволом удаленно?? ну сюдя по всему да... жжете товарищ. На будущие, если играете с конфигом удаленно то зосовывайте в крон конфиг которы бы разрешал все, к примеру чтобы скрипт применяющий правила которые разрешают все отрабатывал каждые 15 минут. Таким образом если вы где то ошибётесь то не потеряете связь....
P.S.
что то я совсем забыл, а

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

sysctl net.inet.ip.forwarding
что показывает?
Всё закоментил блокировку по умолчанию, можно теперь опять этим заняться
Ну разумеется что форвардинг включен, ядро собрано с максимальными возможностями

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

#sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 1
теперь отом что выше написано:
FessAectan писал(а):Хм... хорошо, давайте поступим немного по другому. Сначала раскрутим нат PF. Итак pf.conf

на всякий случай проверим

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

proxysrv# pfctl -e
pfctl: pf already enabled
проверим наши правила

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

pfctl -nf /etc/pf.conf
если все гуд то

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

pfctl -n /etc/pf.conf
теперь идем тестить... а поможет нам

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

tcpdump -nq -i pflog0

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

#pfctl -nf /etc/pf.conf
# тишина полная
pfctl -n /etc/pf.conf - такой комманды не существует

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

#tcpdump -nq -i pflog0
tcpdump: WARNING: pflog0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pflog0, link-type PFLOG (OpenBSD pflog file), capture size 96 bytes
11:32:35.828350 IP 10.100.10.162.61497 > 94.100.178.64.53: UDP, length 41
11:33:48.821417 IP 10.100.10.162.55342 > 193.232.128.6.53: UDP, length 34
11:33:48.925314 IP 10.100.10.162.58428 > 213.180.193.1.53: UDP, length 34
11:35:06.522867 IP 10.100.10.162.54405 > 192.41.162.30.53: UDP, length 38
11:35:06.786430 IP 10.100.10.162.51470 > 216.239.34.10.53: UDP, length 38
11:35:08.495582 IP 10.100.10.162.60324 > 94.100.178.66.53: UDP, length 41
11:36:31.933961 IP 10.100.10.162.52697 > 212.193.241.55.80:  tcp 40 [bad hdr length 0 - too shor t, < 20]                                
11:36:31.936063 IP 10.100.10.162.58493 > 212.193.241.55.80:  tcp 36 [bad hdr length 4 - too shor t, < 20]
и так далее
и такого рода
11:40:34.974065 IP 10.100.10.162.49660 > 217.69.128.53.80: [|tcp]
11:40:43.850743 IP 10.100.10.162.60681 > 217.69.128.54.80: [|tcp]
и еще
11:45:59.342424 IP 10.100.10.162 > 10.100.10.34(IP моего первого серва): ICMP echo reply, id 23, seq 58019, length 40
^C
532 packets captured
532 packets received by filter
0 packets dropped by kernel
соответсвенно те что под 53-им портом это я пинговал свой сервак и другие общие серверы типа mail.ru и ya.ru
те что под 80-м портом это пытался выйти в инет без авторизатора старгазер (ну это не важно главное проверить работу ната :) ), хотя... судя по количеству соединений это еще запросы юзеров в сети.
Я так понимаю нат всетаки работает ?

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 9:31:15
beegimot
изменил одно правило добавил по больше разрешающих портов

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

pass in on $ext_if proto tcp from any to $ext_if port { 28, 25, 80, 3389, 21 }
28 для ssh :)(сразу не сообразил ssh=22 поэтому и потерял доступ) теперь пускает по этим портам с правилом block all.

так значит теперь смотрим, делаю запрос (на машине 192.168.1.2) через браузер на сайт и смотрю активность:

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

#pfctl -s state
all udp 66.199.250.170:8915 <- 192.168.1.2:13378       NO_TRAFFIC:SINGLE
all udp 219.232.241.91:57 <- 192.168.1.2:13378       NO_TRAFFIC:SINGLE
all tcp 212.0.75.130:80 <- 192.168.1.2:4758       CLOSED:SYN_SENT
all tcp 219.232.241.91:53 <- 192.168.1.2:4759       CLOSED:SYN_SENT
all tcp 80.252.110.146:4661 <- 192.168.1.2:4760       CLOSED:SYN_SENT
all tcp 60.28.197.35:28221 <- 192.168.1.2:4761       CLOSED:SYN_SENT
видно что нат работает (?), но как и должно быть доступ закрыт, значит авторизацию надо пилить теперь? или же присутсвует корявость ната ?
Потому что биллинг и авторизация на stargazer должна 100% работать, все конфиги были сделаны по подобию рабочей системы 6.2.
Или я коряво конфиг сквида состругал? хотя правила тоже по подобию первого сервера сделаны...

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 10:47:12
FessAectan
прошу меня простить :smile: не внимателен стал по вечер, не pfctl -n /etc/pf.conf a pfctl -f /etc/pf.conf(это команда говорит PF'у перечитать правила и применить их, а pfctl -nf только почитать и проверить)
с остальным, сек счас перечитаю еще разок :smile:

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 10:51:56
beegimot
FessAectan писал(а):прошу меня простить :smile: не внимателен стал по вечер, не pfctl -n /etc/pf.conf a pfctl -f /etc/pf.conf(это команда говорит PF'у перечитать правила и применить их, а pfctl -nf только почитать и проверить)
с остальным, сек счас перечитаю еще разок :smile:
Я так и понял :) поэтому вместо n - f подставил и пропал тогда доступ )

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 11:05:50
FessAectan
Встречал на этот форуме фразу что не стоит крутить одновеменно несколько ручек :smile:
Добейте NAT(отключив на время ВСЕ остальное), как только будт уверенность что все с натом ок двигайтесь дальше

Re: FreeBSD 7.2 не поднимается NAT или туплю

Добавлено: 2009-12-25 11:10:12
beegimot
я собственно и хочу понять работает он или нет, а то как то коряво всё это дело, я выложил результаты некоторых комманд по ним вроде видно что работает или нет? И как мне проверить что НАТ работает на практике если есть возможность что сквид через транспорент настроен не верно (http_port 3128 transparent), ладно видимо придется не по научному делать а на угад тыкать всё подряд, не может быть такого что нельзя было с уверенностью проверить работу того или иного компонента системы тем более сквида и ната....