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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 9:36:44

Что имею: 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
Последний раз редактировалось beegimot 2009-12-25 10:44:38, всего редактировалось 3 раза.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

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

Непрочитанное сообщение GRooVE » 2009-12-24 10:42:16

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

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

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

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 10:52:03

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

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

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

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 11:03:49

просто я не знаю как правильнее проверить как проходят у меня пакеты, может даже они пролетают по НАТ и теряются, где логи смотреть, в сквиде логи появляются только при коннекте по порту напрямую без ната. PF логи вот что дают вообще
pf.log

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

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

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

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

Непрочитанное сообщение GRooVE » 2009-12-24 11:17:42

beegimot писал(а):где логи смотреть. PF логи вот что дают вообще
pf.log

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

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

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

tcpdump -netttr /var/log/pflog

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 12:12:57

вот так исправьте

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

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 только натит, так что сдесь ни какой фильтрации)
з.ы.
терзают сомнения что вы воложили не весь конфиг....
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 12:17:07

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 молчит...

По поводу что не полностью конфиг выложил - это всё что не закомментированно, остальные редиректы, и опции я пока не открывал, т.к сначало надо поднять с уверенностью НАТ
Последний раз редактировалось beegimot 2009-12-24 12:28:46, всего редактировалось 1 раз.

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 12:27:46

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
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 12:33:00

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

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 12:33:44

так же при тестировании правил и ната полезны будут следующие команды. Нат и рдр

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

proxysrv# pfctl -vsn
Фильтр

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

pfctl -vsr
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 12:34:49

во уже интереснее
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 ]
Последний раз редактировалось beegimot 2009-12-24 12:55:32, всего редактировалось 1 раз.

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 12:36:03

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

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 12:37:33

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

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 12:43:12

мне просто не понятно, при всей видемой исправности(возможно мнимой) работы, нат почемуто не хочет работать, как будто кто то его глушит )))
Кстати вот что происходит на клиентских виндовых тачках :
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 меняется как положенно периодически в запросах, значит всетаки запрос доходит до сервака, но сервак не пускает дальше их ? поправте меня если нелепость несу..

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 12:56:52

Хм... хорошо, давайте поступим немного по другому. Сначала раскрутим нат 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
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 13:08:03

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

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 14:00:21

правило pass on $int_if может быть записано так

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

pass in on $int_if
pass out on $int_if
:smile: то есть одной строкой мы записали два правила
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-24 14:41:46

короче я потерял удаленный доступ в виду этих правил :(

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

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 градусов, и народ без инета остался несколько офисов :)

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-24 15:04:19

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

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

sysctl net.inet.ip.forwarding
что показывает?
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-25 6:53:10

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-м портом это пытался выйти в инет без авторизатора старгазер (ну это не важно главное проверить работу ната :) ), хотя... судя по количеству соединений это еще запросы юзеров в сети.
Я так понимаю нат всетаки работает ?

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-25 9:31:15

изменил одно правило добавил по больше разрешающих портов

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

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.
Или я коряво конфиг сквида состругал? хотя правила тоже по подобию первого сервера сделаны...

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-25 10:47:12

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

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-25 10:51:56

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

FessAectan
рядовой
Сообщения: 41
Зарегистрирован: 2009-04-23 17:49:46

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

Непрочитанное сообщение FessAectan » 2009-12-25 11:05:50

Встречал на этот форуме фразу что не стоит крутить одновеменно несколько ручек :smile:
Добейте NAT(отключив на время ВСЕ остальное), как только будт уверенность что все с натом ок двигайтесь дальше
Отсутствие мозгов не мешает видеть в себе гения(с) не мое

Аватара пользователя
beegimot
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-07-28 5:00:59

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

Непрочитанное сообщение beegimot » 2009-12-25 11:10:12

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