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

Исходное сообщение
"Проблема с PF NAT RDR (FreeBSD 6.1) - переодическое отключен..."

Отправлено netic , 04-Мрт-07 09:36 
Есть рутер (даже 2, настроеных по аналогии) в один рутер входит инет с айпишником х.х.151.16, в другой инет с айпишником х.х.151.109 (дабы небыло поблем в работе с системой авторизации провайдера пришлось разделить на 2 сервера, оба на FreeBSD6.1)

оба рутера соеденены по локальной сети с внутренним сервером windows 2003

Рутер 1: 192.168.250.1 на сервер с айпи 192.168.250.10
Рутер 2: 172.100.100.1 на сервер с айпи 172.100.100.10

т.е на сервере внутреннем, под управление Windows 2003, подняты 2 интерфейса:

Ethernet adapter Lan1:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) PRO/1000 EB
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 192.168.250.10
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.250.1
   DNS Servers . . . . . . . . . . . : 192.168.250.1

Ethernet adapter Lan2:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) PRO/1000 EB
   DHCP Enabled. . . . . . . . . . . : No
   IP Address. . . . . . . . . . . . : 172.100.100.10
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 172.100.100.1
   DNS Servers . . . . . . . . . . . : 172.100.100.10

на внутреннем сервере win2003 запущены службы: http, ftp, rdp, mysqld, ircd И т.п.

Используется PF для организации доступа из ИНЕТА во внутреннюю методом NAT+RDR.
все работает, НО!!!!! периодически PF отрубается, точнее, отрубаются правила редиректа и ната. при падении (проверяется отстутствием сайта или доступом к какой либо внутренней службе на внутреннем сервере) если зайти на сам рутер, там интернет есть, при этом пинг до самих рутеров тоже есть.

Настройка PF (/etc/pf.conf):

# $RuOBSD: pf-dual.conf,v 1.9 2006/04/22 17:25:57 andrey Exp $
#
# Пример настройки PF для маршрутизатора с двумя внешними каналами
# с трансляцией адресов и переадресацией некоторых сервисов во внутреннюю сеть.
#
# В данном примере также настраивается симметричная маршрутизация для
# правильного возврата пакетов в канал, с которого было инициировано
# соединение, независимо от настройки default route.
#
#  WAN_1  WAN_2             LAN
#    |      |      +------------+--------
#    |      |      |            |
# +-rl0----rl1----em0-+  +--------------+
# |                   |  |  10.10.10.2  |
# +-------------------+  +--------------+

# Внешние и внутренний интерфейсы.
#
ext_if_a        = "bfe0"
int_if          = "re0"

# Шлюзы для каналов.
#
ext_gw_a        = "x.x.151.1"

# TCP/UDP сервисы, обслуживаемые маршрутизатором.
#
tcp_svc         = "ssh smtp domain 8899 8314"
udp_svc         = "domain 8899 8314"

# TCP сервисы, обслуживаемые внутренним сервером.
#
tcp_rdr         = "http ftp ftp-data rdp ircd mysqld 8021"
host_rdr        = "192.168.250.10"

# Таблицы черного и белого списков для spamd.
#
#table <spamd> persist
#table <spamd-white> persist

# Выполнить нормализацию всех пакетов.
#
#scrub in

# Транслировать внутренние адреса в (основной) адрес внешнего интерфейса.
#
#nat on $ext_if_a from !(self) -> ($ext_if_a:0)
nat on $ext_if_a from 192.168.250.10 -> ($ext_if_a:0)

# Пропустить FTP через transparent FTP proxy.
#
rdr on $int_if proto tcp to !(self) port ftp -> 127.0.0.1 port ftp-proxy

# Переадресовать TCP сервисы, обслуживаемые внутренним сервером.
#
rdr pass on $ext_if_a proto tcp from ($ext_if_a:network) to port { $tcp_rdr } \
        -> $host_rdr
rdr on $ext_if_a proto tcp to port { $tcp_rdr } tag EXT_IF_A -> $host_rdr

# Защита от IP spoofing.
#
#pass quick on { lo $int_if }
#antispoof quick for { lo $int_if }

# По умолчанию блокировать входящий трафик на внешних интерфейсах.
# Для TCP соединений возвращать RST.
#
block in on { $ext_if_a }
block return-rst in on { $ext_if_a } proto tcp

# Фтп чего то там правило, чтобы работало видимо!

pass in on $ext_if_a inet proto tcp from port ftp-data to ($ext_if_a) user proxy flags S/SA keep state

# Направить исходящие пакеты в канал, соответствующий адресу источника.
#
pass out route-to ($ext_if_a $ext_gw_a) from ($ext_if_a) to !(self:network) \
        keep state

# Установить маршрут для ответа на входящие пакеты для переадресованных
# TCP сервисов.
#
pass in reply-to ($ext_if_a $ext_gw_a) proto tcp flags S/SA tagged EXT_IF_A \
        keep state

# Разрешить входящие ICMP ping пакеты, обслуживаемые UDP и TCP сервисы.
#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) inet proto icmp \
        icmp-type echoreq code 0 keep state
pass in on $ext_if_a inet proto icmp from ($ext_if_a:network) \
        icmp-type echoreq code 0 keep state
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto udp \
        to port { $udp_svc } keep state
pass in on $ext_if_a proto udp from ($ext_if_a:network) to port { $udp_svc } \
        keep state
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto tcp \
        to port { $tcp_svc } flags S/SA keep state
pass in on $ext_if_a proto tcp from ($ext_if_a:network) to port { $tcp_svc } \
        flags S/SA keep state

# Разрешить входящие TCP соединения для FTP proxy.
#
pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto tcp \
        to port > 49151 flags S/SA user proxy keep state
pass in on $ext_if_a proto tcp from ($ext_if_a:network) to port > 49151 \
        flags S/SA user proxy keep state

#############################################################
# Блокировка доступа по RDP всем и разрешение тока довереным#
#############################################################
# x.x.211.48, 82.193.139.2 - user1 (user1 Work)             #
# x.x.211.36 - user2                                        #
# x.x.151.109, x.x.211.156                                  #
#############################################################

table <hosts_rdp> {x.x.211.156, x.x.151.109, x.x.211.48, x.x.211.36, 82.193.139.2}
pass  in  quick on $ext_if_a proto tcp from <hosts_rdp> to any port rdp
block in  quick on $ext_if_a proto tcp from any to any port rdp

###############################################################
# Блокировка доступа по SSH всем и разрешение тока довереным  #
# x.x.211.48, 82.193.139.2 - user1 (Netic Work)               #
# x.x.151.109, x.x.211.156 -  Servers                         #
###############################################################

table <hosts_sshd> {x.x.211.156, x.x.151.109, x.x.211.48, 82.193.139.2}
pass  in  quick on $ext_if_a proto tcp from <hosts_sshd> to any port ssh
block in  quick on $ext_if_a proto tcp from any to any port ssh

###############################################################
# Блокировка доступа по MySQL всем и разрешение тока довереным#
# x.x.211.48 - user1                                          #
# x.x.211.36 - user2                                          #
###############################################################

table <hosts_mysqld> {x.x.211.156, x.x.151.109, x.x.211.48, x.x.211.36}
pass  in  quick on $ext_if_a proto tcp from <hosts_mysqld> to any port mysqld
block in  quick on $ext_if_a proto tcp from any to any port mysqld

###############################################################
# Авторизатор                                                 #
###############################################################

pass in quick on $ext_if_a proto tcp from x.x.151.1 to any
pass out quick on $ext_if_a proto tcp from any to x.x.151.1 port 8899

###############################################################
# Баны                                                        #
###############################################################

block in quick on $ext_if_a proto tcp from x.x.212.87 to any
block in quick on $ext_if_a proto tcp from any to x.x.212.87


конфиг RC.CONF:

local_startup="/usr/local/etc/rc.d"
gateway_enable="YES"
hostname="ns"
keymap="ru.koi8-r"
ipv6_enable="NO"
sshd_enable="YES"
usbd_enable="YES"
sendmail_enable="NO"
inetd_enable="YES"

#LOCAL
ifconfig_re0="inet 192.168.250.1 netmask 255.255.255.0"

#INET 151.16
ifconfig_bfe0="inet х.х.151.16 netmask 255.255.255.128"

данные IFCONFIG:

bfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::2e0:18ff:fed0:5814©e0 prefixlen 64 scopeid 0x1
        inet x.x.151.16 netmask 0xffffff80 broadcast x.x.151.127
        ether xx:xx:xx:xx:xx:xx
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=18<VLAN_MTU,VLAN_HWTAGGING>
        inet6 fe80::20c:76ff:feae:b793%re0 prefixlen 64 scopeid 0x2
        inet 192.168.250.1 netmask 0xffffff00 broadcast 192.168.250.255
        ether 00:0c:76:ae:b7:93
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active

как видно, юзается дефолтный опенбсдшный конфиг. все работает.
но падения постоянные, который не могу понять от чего происходят уже замучали :(

как можно определить в чем проблема?


Содержание

Сообщения в этом обсуждении
"Проблема с PF NAT RDR (FreeBSD 6.1) - переодическое отключен..."
Отправлено Netic , 06-Мрт-07 08:09 
nat on $ext_if_a from $int_if -> ($ext_if_a:0)

rdr pass on $ext_if_a proto tcp from ($ext_if_a:network) to port { $tcp_rdr } -> $host_rdr
rdr on $ext_if_a proto tcp to port { $tcp_rdr } tag EXT_IF_A -> $host_rdr
pass in reply-to ($ext_if_a $ext_gw_a) proto tcp flags S/SA tagged EXT_IF_A keep state

укоротил правила до токого, но все равно наедается