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

FBSD 8.2+PF+ADSL не работает проброс портов

Добавлено: 2011-10-19 10:40:07
lamobot
Доброго времени суток!

Имею FBSD 8.2, настроенное adsl соединение, "настроенный" PF, в инет локалка ходит, а вот из инета ничего не долетает.

Настроил шлюз по инструкции на опеннет.

em0 - локалка
em1 - сеть с adsl-модемом
tun0 - ADSL-соединение

ADSL-соединение поднимает именно шлюз, не модем(так надо...).

Вот конфиг rc.conf

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

defaultrouter="<шлюз, назначаемый после установки ADSL-соединения>"
hostname="bsd.domain"
ifconfig_em0="inet 172.16.50.160  netmask 255.255.255.0"
ifconfig_em1="inet 192.168.1.2  netmask 255.255.255.0"
keymap="ru.koi8-r"
# -- sysinstall generated deltas -- # Wed Oct 19 00:56:28 2011
sshd_enable="YES"
gateway_enable="YES"
linux_enable="yes"

#PPPoE Enable
ppp_enable="YES"
ppp_mode="dedicated"
ppp_profile="adsl"

#PF Enable
pf_enable="YES"
pf_program="/sbin/pfctl"
pf_flags=""
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
Вот netstat

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

bsd# netstat -r
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            <шлюз, назначаемый после установки ADSL-соединения>      UGS         0    27524   tun0
localhost          link#4             UH          0       28    lo0
172.16.50.0        link#1             U           3    27138    em0
172.16.50.160      link#1             UHS         0        0    lo0
192.168.1.0        link#2             U           0      180    em1
bsd                link#2             UHS         0        0    lo0
<ИП tun0>    link#6             UHS         0        0    lo0
<ИП шлюза tun0>      link#6             UHS         0        0   tun0

Internet6:
Destination        Gateway            Flags      Netif Expire
localhost          localhost          UH          lo0
fe80::%lo0         link#4             U           lo0
fe80::1%lo0        link#4             UHS         lo0
ff01:4::           fe80::1%lo0        U           lo0
ff02::%lo0         fe80::1%lo0        U           lo0
Вот конфиг pf.conf

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

        # Written By Alchemist 20.03.2009
        # http://alchemist-unix.blogspot.com/
        #################################################################

        #################################################################
        # Опции
        #################################################################

        # Интерфейсы
        ext_if = "tun0" #интерфейс, создаваемый при поднятии ADSL-соединения
        int_if = "em0"

        # IP адреса
        lannet = "172.16.50.0/24"
        ext_ip = "<внещний ИП, получаемый при поднятии ADSL-соединения>/32"
        bsd = "172.16.50.160/32"
        bserv = "172.16.50.99/32"

        #------------------------------
        # Нормализация
        #------------------------------

        # Определяем политику при блокировке пакетов
        set block-policy drop
        # Поведение пакетного фильтра при использовании таблицы состояний
        set state-policy floating
        # Логируемый интерфейс
        set loginterface $ext_if
        # Максимальное количество записей в пуле отвечающем за нормализацию трафика (scrub)
        # Максимальное количество вхождений в пул отвечающий за состояние таблицы состояний соединений (keep state)
        set limit { frags 100000, states 100000 }
        # Устанавливаем тип оптимизации
        set optimization normal
        # Игнорируем фильтрацию на кольцевом интерфейсе
        set skip on lo0
        # Нормализация всего входящего трафика на всех интерфейсах
        scrub in all

        #------------------------------
        # NAT & RDR
        #------------------------------

        # NAT для локалки
        nat on $ext_if inet from $lannet to any -> $ext_ip

        # Пробрасываем порты на web сервер
        rdr on $ext_if proto tcp from any to $ext_ip port www -> $bsrv
        rdr on $ext_if proto udp from any to $ext_ip port domain -> $bserv
#       rdr on $ext_if proto tcp from any to $ext_ip port domain -> $bserv
        rdr on $ext_if proto tcp from any to $ext_ip port rdp -> $bserv

        #------------------------------
        # Правила фильтрации
        #------------------------------

        # Защита от спуфинга
        antispoof quick for { lo0, $int_if, $ext_if }

        # Блокируем всё
        block log all

        # Разрешаем icmp
        pass inet proto icmp icmp-type echoreq

        # Разрешаем DNS для локалки
        pass in on $int_if proto udp from $lannet to $bsd port domain

        # Разрешаем NTP для локалки
        pass in on $int_if proto udp from $lannet to $bsd port ntp

        # Тестовый полный выход для отладки
        pass in on $int_if from $lannet to any

        # Разрешаем нашему шлюзу полный выход с обоих интерфейсов
        pass out on $ext_if proto tcp from any to any
        pass out on $ext_if proto udp from any to any keep state
        pass out on $int_if proto tcp from any to any
        pass out on $int_if proto udp from any to any keep state

        #------------------------------
        # Icoming #

        pass in on $ext_if proto tcp from any to $ext_ip port www flags S/SA synproxy state
        pass in on $ext_if proto udp from any to $ext_ip port rdp
        pass in on $ext_if proto udp from any to $ext_ip port domain
#       pass in on $ext_if proto tcp from any to $ext_ip port domain
Не знаю важно или нет, но шлюз - это виртуалка ESXi 5.
Повторюсь, инет для локалки раздается вполне нормально.

Какие есть предложения?

Re: FBSD 8.2+PF+ADSL не работает проброс портов

Добавлено: 2011-10-19 11:04:11
Gamerman
пробросить порты через ррр

Re: FBSD 8.2+PF+ADSL не работает проброс портов

Добавлено: 2011-10-19 11:07:03
lamobot
Как? Можно подробнее?

Re: FBSD 8.2+PF+ADSL не работает проброс портов

Добавлено: 2011-10-19 11:50:53
lamobot
Победа, ошибка найдена!

У меня:

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

# Icoming #

        pass in on $ext_if proto tcp from any to $ext_ip port www flags S/SA synproxy state
        pass in on $ext_if proto udp from any to $ext_ip port rdp
        pass in on $ext_if proto udp from any to $ext_ip port domain
#       pass in on $ext_if proto tcp from any to $ext_ip port domain
А надо:

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

# Icoming #

       pass in on $ext_if proto tcp from any to $bserv port www flags S/SA synproxy state
        pass in on $ext_if proto udp from any to $bserv port rdp
        pass in on $ext_if proto udp from any to $bserv port domain
#       pass in on $ext_if proto tcp from any to $bserv port domain