Помогите с написанием правил PF (ALTQ)

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dynamic
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-08-22 14:50:43

Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение Dynamic » 2010-08-23 17:22:46

Добрый вечер! Ситуация следующая. Есть сервер с 3 сетевыми картами.

К sk0 (172.16.1.1/16) подсоединен первый компьютер (172.16.1.2/16).
К sk (10.0.0.1/8) подсоединен второй компьютер (10.0.0.2/8) .
К ste0 (192.168.1.2/24) подсоединен ADSL модем, настроен в режиме моста(bridge).

PPPoE сессия поднимется на FreeBSD посредством mpd5. За первым компом часто играют в онлайн игру, а на втором смотрят видео на youtube (чем мешают играть в игру). И решил я сделать динамическое деление пропускной полосы, между двумя компами. Прочитал несколько статей в интернете.
Все сводится примерно к такому:

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

altq on ng0 cbq bandwidth 100Mb queue { inet_in, default_in }
queue inet_in bandwidth 4Mb { comp1_in, comp2_in }
queue comp1_in bandwidth 50% cbq(red, borrow)
queue comp2_in bandwidth 50% cbq(red, borrow)
queue default_in bandwidth 96% cbq(default) 
altq on sk0 cbq bandwidth 100Mb queue { inet_out, default_out }
queue inet_out bandwidth 1Mb { comp1_out, comp2_out }
queue comp1_out bandwidth 50% cbq(red, borrow)
queue comp2_out bandwidth 50% cbq(red, borrow)
queue default_out bandwidth 99% cbq(default)
Входящий трафик шейпится на внешнем интерфейсе, а исходящий на внутреннем. Дальше мы распихаем трафик от разных компов в их очереди. Но данный вариант мне не подходит тем, что в примере пользователи сидят на одной сетевой(sk0), а у меня на двоих(sk0 и sk1). Одним словом мне нужно шейпить трафик как исходящий так и входящий на одном внешнем интерфейсе(ng0). Придумал это реализовать таким способом :

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

altq on ng0 cbq bandwidth 100Mb queue { inet_out, inet_in, default_out }
queue inet_out bandwidth 1Mb { comp1_out, comp2_out }
queue comp1_out bandwidth 50% cbq(red, borrow)
queue comp2_out bandwidth 50% cbq(red, borrow)
queue inet_in bandwidth 4Mb { comp1_in, comp2_in }
queue comp1_in bandwidth 50% cbq(red, borrow)
queue comp2_in bandwidth 50% cbq(red, borrow)
queue default_out bandwidth 95% cbq(default)
Правильно, или есть варианты получше?

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Bacek_92
мл. сержант
Сообщения: 70
Зарегистрирован: 2010-05-22 18:02:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение Bacek_92 » 2010-08-24 21:59:25

А оно работает? А если работает значит не трожь )) (с) Правило Админа

Dynamic
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-08-22 14:50:43

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение Dynamic » 2010-08-25 3:15:38

Bacek_92 писал(а):А оно работает? А если работает значит не трожь )) (с) Правило Админа
Не работает, это были догадки ;-)

После нескольких часов работы с гуглом, понял почему в примерах приходящий трафик из интернета режут на интерфейсе, который смотрит в локальную сеть. ALTQ умеет резать только исходящий трафик. У меня пользователи подключены физически к разным сетевым картам, поэтому я не могу сделать динамический шейпинг входящего трафика. Есть конечно вариант подключить эти два компьютера через свитч, а его в сервер. Тогда даже освобождается одна сетевая карта. Но хотел узнать следующие:

В FreeBSD есть возможность создать промежуточный интерфейс, в который мы сможем запихать приходящий на ng0 интерфейс трафик, и проводить на нем шейпинг с помощью ALTQ?

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение BlackCat » 2010-08-31 4:12:57

Dynamic писал(а):В FreeBSD есть возможность создать промежуточный интерфейс, в который мы сможем запихать приходящий на ng0 интерфейс трафик, и проводить на нем шейпинг с помощью ALTQ?
Объедените ваши внутренние сетевые карты в мост, это и будет ваша промежуточная сетевая карта. Да ещё и комутатор (свитч) в некотором смысле.

Gauss
проходил мимо

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение Gauss » 2010-09-21 13:02:32

Прочитал Вашу статью о шейпинге, почитал мануал на оффсайте про pf. Хорошая статья, но:
есть грабли, которые бьют меня уже 4 дня
Имеется:
локалка – 10.0.0.0/8
VPN клиенты – 192.168.100.0/24
Канал в инет 16 Mbit/s
Нужно поделить его между пользователями локалки поровну,(канал в инет создается посредством подключение к вышестоящему интернет провайдеру тоже через VPN по локалке посредством mpd5) но не выходит! Шейпил на локальном интерфейсе, как в статье и сказано.
Фишка в том,что весь траффик заворачивается на default queue и как бы я не старался, трафик не хочет идти на приписаные к локальым адресам пользоваетелей очереди

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

int_if=”em0?
ext_if=”ng0?
inet_users=”192.168.100.0/24?
allows=”{ 10.112.0.57 10.112.0.59 10.112.6.2 10.117.4.172 10.112.6.27 10.112.8.55 }”
admin=”10.112.6.2?
olya=”10.117.4.172?
test=”{10.112.0.57, 10.112.0.59}”
mig=”10.112.6.27?
localka=”10.0.0.0/8?
scrub in all

altq on $int_if cbq bandwidth 100Mb queue { inet_in, local }
queue local bandwidth 60Mb cbq (default)
queue inet_in bandwidth 40Mb qlimit 1000 cbq {admin, olya, test, mig}
queue admin bandwidth 512Kb cbq(red)
queue olya bandwidth 1.5Mb cbq(red)
queue mig bandwidth 1.5Mb cbq(red)
queue test bandwidth 1.5Mb cbq(red)

nat on ng0 from $inet_users to any -> $ext_if
nat on em0 from any to $ext_if -> $int_if

block in on $int_if all
block in on $ext_if all
pass out on $int_if from $int_if to $localka
pass out on $ext_if all
pass out quick on $int_if from !$localka to $admin queue admin no state
pass out quick on $int_if from !$localka to $mig queue mig no state
pass out quick on $int_if from !$localka to $olya queue olya no state
pass out quick on $int_if from !$localka to $test queue test no state

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 18:46:58

Здравствуйте. Всех с наступившим НГ, удачи Вам и здоровья.

Сразу оговорюсь – это мой первый маршрутизатор на БСД , так что не судите строго за непонимание, возможно, прописных истин.

Есть тазик PII 350 МГц 256+256+128 ram + два интерфейса realtek 8129. На данный момент цель – сделать простой шлюз который бы пропускал все и всюду, а со временем корректировать правила PF и ALTQ. Для этого пересобирал ядро с поддержкой PF и ALTQ, заодно поубирал лишние на мой взгляд устройства. Ниже привожу конфиг ядра и настройки которые менялись.

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

aquila# uname -a
FreeBSD aquila.navi 8.3-RELEASE-p5 FreeBSD 8.3-RELEASE-p5 #0: Sat Dec 29 17:19:16 EET 2012     root@aquila.navi:/usr/obj/usr/src/sys/AQUILA  i386
Привожу полный конфиг ядра, просмотрите, может где-то начудил по незнанию

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

aquila# cat /usr/src/sys/i386/conf/AQUILA
cpu             I686_CPU
ident           AQUILA

device          pf
device          pflog
#device         pfsync

options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_CDNR
options         ALTQ_PRIQ

#hints          "AQUILA.hints"          # Default places to look for devices.
#env            "AQUILA.env"

options         SCHED_ULE               # ULE scheduler
options         PREEMPTION              # Enable kernel thread preemption
options         INET                    # InterNETworking
options         FFS                     # Berkeley Fast Filesystem
options         SOFTUPDATES             # Enable FFS soft updates support
options         UFS_ACL                 # Support for access control lists
options         UFS_DIRHASH             # Improve performance on big directories
options         UFS_GJOURNAL            # Enable gjournal-based UFS journaling
options         NFSCLIENT               # Network Filesystem Client
options         NFSSERVER               # Network Filesystem Server
options         NFSLOCKD                # Network Lock Manager
options         NFS_ROOT                # NFS usable as /, requires NFSCLIENT
options         CD9660                  # ISO 9660 Filesystem
options         PROCFS                  # Process filesystem (requires PSEUDOFS)
options         PSEUDOFS                # Pseudo-filesystem framework
options         GEOM_PART_GPT           # GUID Partition Tables.
options         GEOM_LABEL              # Provides labelization
options         COMPAT_43TTY            # BSD 4.3 TTY compat (sgtty)
options         COMPAT_FREEBSD4         # Compatible with FreeBSD4
options         COMPAT_FREEBSD5         # Compatible with FreeBSD5
options         COMPAT_FREEBSD6         # Compatible with FreeBSD6
options         COMPAT_FREEBSD7         # Compatible with FreeBSD7
options         SYSVSHM                 # SYSV-style shared memory
options         SYSVMSG                 # SYSV-style message queues
options         SYSVSEM                 # SYSV-style semaphores
options         P1003_1B_SEMAPHORES     # POSIX-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options         PRINTF_BUFR_SIZE=128    # Prevent printf output being interspersed.
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev
options         HWPMC_HOOKS             # Necessary kernel hooks for hwpmc(4)
options         MAC                     # TrustedBSD MAC Framework
#options        KDTRACE_HOOKS           # Kernel DTrace hooks
options         INCLUDE_CONFIG_FILE     # Include this file in kernel

options         KDB                     # Kernel debugger related code
options         KDB_TRACE               # Print a stack trace for a panic

# To make an SMP kernel, the next two lines are needed
device          apic                    # I/O APIC

# CPU frequency control
device          cpufreq

# Bus support.
device          acpi
device          eisa
device          pci

# Floppy drives
device          fdc

# ATA and ATAPI devices
device          ata
device          atadisk         # ATA disk drives
device          ataraid         # ATA RAID drives
device          atapicd         # ATAPI CDROM drives
device          atapifd         # ATAPI floppy drives
device          atapist         # ATAPI tape drives
options         ATA_STATIC_ID   # Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard
device          psm             # PS/2 mouse
device          vga             # VGA video card driver

# syscons is the default console driver, resembling an SCO console
device          sc

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
device          rl              # RealTek 8129/8139

# Pseudo devices.
device          loop            # Network loopback
device          random          # Entropy device
device          ether           # Ethernet support
device          tun             # Packet tunnel.
device          pty             # BSD-style compatibility pseudo ttys
device          gif             # IPv6 and IPv4 tunneling

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device          bpf             # Berkeley packet filter

# USB support
options         USB_DEBUG       # enable debug msgs
device          uhci            # UHCI PCI->USB interface
device          ohci            # OHCI PCI->USB interface
device          usb             # USB Bus (required)
настройки в /etc/rc.conf

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

aquila# cat /etc/rc.conf
#ifconfig_rl0="ether 00:22:b0:52:4e:ea DHCP"
 ifconfig_rl1="inet 192.168.1.1 netmask 255.255.255.0"
 hostname="aquila.navi"
 named_enable="YES"
 gateway_enable="YES"
 sshd_enable="YES"

 ifconfig_rl0="inet 192.168.0.100 netmask 255.255.255.0"
 defaultrouter="192.168.0.1"

#keymap="ru.koi8-r"

#SysTune
 clear_tmp_enable="YES"
 background_fsck="NO"

#pf(packet filter)
 pf_enable="YES"
 pf_rules="/etc/pf.rules"
#pf_program="/sbin/pfctl"
#pf_flags=""

 pflog_enable="YES"
 pflog_logfile="/var/log/pflog"
#pflog_program="/sbin/pflog"
#pflog_flags=""

#pfsync_enable="NO"
#pfsync_syncdev=""
#pfsync_ifconfig=""
Настройки /etc/pf.rules

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

aquila# cat /etc/pf.rules
#ext_if="rl0"
#int_if="rl1"
#int_net="192.168.1.0/24"
icmp_types="{ echoreq, unreach }"

#set block-policy drop
#set state-policy if-bound
pass all
#pass out all keep state
#pass quick on lo0 all
pass inet proto icmp all icmp-type $icmp_types
#block all
#scrub all reassemble tcp fragment reassemble
Настройки /etc/namedb/named.conf
Менял только
listen-on { 127.0.0.1; };
на
listen-on { any; };

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

aquila# netstat -r
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            aquila             UGS         0       14    rl0
localhost          link#4             UH          0        0    lo0
192.168.0.0        link#2             U           0      351    rl0
192.168.0.100      link#2             UHS         0        0    lo0
192.168.1.0        link#3             U           0        4    rl1
192.168.1.1        link#3             UHS         0        0    lo0
Примерная схема конфигурации:
Изображение

Проблема в том, что со Шлюз BSD я пингую как внешнюю(Шлюз Win XP) так и внутреннюю(Win XP) сеть, а вот пинг с Win XP на Шлюз Win XP и наоборот не проходит. В итоге получаю сообщение вида:

При пинге из внутренней сети

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

C:\Documents and Settings\mikie>ping i.ua

Обмен пакетами с i.ua [91.198.36.14] по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Выходит что ИП i.ua мы получаем, а вот пакеты обратно не доходят

При пинге из внешней сети

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

C:\Documents and Settings\mikie>ping 192.168.1.2

Обмен пакетами с 192.168.1.2 по 32 байт:

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

ыть
проходил мимо

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение ыть » 2013-01-01 19:32:30

свинку надо еще научить маршрутизировать, надо в реестре там гднто разенабливать роутинг..
зачем она там? ставте уж серверные поделки дяди билли, если так хочется, 2003-ю, например..

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 19:44:44

ыть, дело в том что это временная конструкция, когда настрою шлюз на фри то он заменит шлюз на хрю и будет выходить в инет по DHCP, что и является главной целью этого мероприятия. такую конструкцию построил для того чтоб была возможность ходить на форум с вопросами и тестить шлюзБСД без лишних переключений и перестроек.
Суть вопроса остается - не проходит пинг через Шлюз БСД в обе стороны, подозреваю что мой косяк в правилах pf..

ыть
проходил мимо

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение ыть » 2013-01-01 20:02:05

дык я и говорю
со свиньей сложно работать как с маршрутизатором..
во первых, свинушка знает про существование 192.168.1.0/24 сетки?
добавьте на ней маршрут
и я говорил уже, даже с маршрутом, свинка, по задумке дяди билли, не должна уметь маршрутизировать..

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 20:16:02

да что вы прицепились то к свинке, лучше прочтите вводные данные может я допустил там ошибку какую в настройках, если разбераетесь
а Шлюз на ХР к слову работает уже более 2х лет с ССProxy и в локалке висит от 3х компов и сетевой принтер все спокойно ходят в сеть и никаких проблем и шлюз БСД в данной конструкции тоже нормально ходит в сеть, а вот то что за ним не пингует ни Шлюз ХР ни интернет.

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 20:22:54

специально для ыть маршруты для Шлюз ХР

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

C:\Documents and Settings\mikie>route print
===========================================================================
Список интерфейсов
0x1 ........................... MS TCP Loopback interface
0x3 ...00 02 44 23 0c 35 ...... Realtek RTL8029(AS) PCI Ethernet рфряЄхЁ - ?шэшя
юЁЄ яырэшЁют?шър яръхЄют
0x20002 ...00 22 b0 52 4e ea ...... VIA Rhine III Fast Ethernet Adapter - ?шэшяю
ЁЄ яырэшЁют?шър яръхЄют
===========================================================================
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0     94.74.80.126     94.74.80.71       20
       94.74.80.0  255.255.255.128      94.74.80.71     94.74.80.71       20
      94.74.80.71  255.255.255.255        127.0.0.1       127.0.0.1       20
   94.255.255.255  255.255.255.255      94.74.80.71     94.74.80.71       20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.0.0    255.255.255.0      192.168.0.1     192.168.0.1       30
      192.168.0.1  255.255.255.255        127.0.0.1       127.0.0.1       30
    192.168.0.255  255.255.255.255      192.168.0.1     192.168.0.1       30
        224.0.0.0        240.0.0.0      94.74.80.71     94.74.80.71       20
        224.0.0.0        240.0.0.0      192.168.0.1     192.168.0.1       30
  255.255.255.255  255.255.255.255      94.74.80.71     94.74.80.71       1
  255.255.255.255  255.255.255.255      192.168.0.1     192.168.0.1       1
Основной шлюз:        94.74.80.126
===========================================================================
Постоянные маршруты:
  Отсутствует

lordlev
рядовой
Сообщения: 33
Зарегистрирован: 2012-12-02 8:51:16

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение lordlev » 2013-01-01 20:40:22

Может я и не прав, но не вижу в приведенных конфигах упоминания о nat-е ....

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 20:46:27

Вы правы, нат отсутствует, а что без ната подобная конструкция не будет работать?

lordlev
рядовой
Сообщения: 33
Зарегистрирован: 2012-12-02 8:51:16

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение lordlev » 2013-01-01 20:56:29

шлюз на фре получает запрос от 1,2, передает его 0,1 не модифицируя (фря-то знает про все сетки). 0,1 получает запрос и долго думает куда его вернуть. но не придумывает :) Вариантов 2 - или объяснить 0,1 куда отдавать запросы от сети 0.х или поднимать нат. Это не так уж и больно :)

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 21:05:54

lordlev, спасибо, добавил соответствующий маршрут в Шлюз ХР, теперь пингуется в обе стороны.
вопрос номер 2 когда Шлюз БСД заменит Шлюз ХР и будет выходить в инет напрямую по DHCP я без ната уже не обойдусь?

ыть
проходил мимо

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение ыть » 2013-01-01 21:17:50

mikie писал(а):специально для ыть маршруты для Шлюз ХР
у вас нет обратного маршрута в первую сетку
mikie писал(а):При пинге из внешней сети
КОД: ВЫДЕЛИТЬ ВСЁ
C:\Documents and Settings\mikie>ping 192.168.1.2

Обмен пакетами с 192.168.1.2 по 32 байт:

Превышен интервал ожидания для запроса.
сделайте трасерт 192.168.1.2
дайка угодаю где будим искать хост
в инете?
mikie писал(а):Вы правы, нат отсутствует, а что без ната подобная конструкция не будет работать?
у вас инет раздается через виндопроксю
отключите ее, добейтесь, чтоб инет приходил в локалку без прокси (нат, роутинг)
должно заработать
но это черезсрачное решение
хипи не для этого придумывалась

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-01 21:27:19

ыть, вам тоже спасибо, добавил соответствующий маршрут в Шлюз ХР - пингуется в обе сторони и изнутря инет тоже пингуется, так что вы были правы, простите за дерзост)
повторюсь еще - если шлюз БСД станет вместо Шлюз ХР то без ната мне уже не обойтись?

ыть
проходил мимо

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение ыть » 2013-01-01 21:35:25

да не за что
что и требовалось доказать
ыть писал(а):отключите ее, добейтесь, чтоб инет приходил в локалку без прокси (нат, роутинг)
к тому, что хрюшка никакой не роутер как вы думали
mikie писал(а):повторюсь еще - если шлюз БСД станет вместо Шлюз ХР то без ната мне уже не обойтись?
не обойтись

mikie
мл. сержант
Сообщения: 84
Зарегистрирован: 2012-11-21 18:33:03

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение mikie » 2013-01-02 0:06:44

Спасибо ыть и lordlev за помощ, все заработало после поднятия nat-а
уже сижу в инете через свой первый шлюз на FreeBSD

схема подключения на рисунке:
Изображение

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

первое что нужно сделать - пересобрать ядро включив в него следующие параметры

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

device          pf
device          pflog
а если требуется шейпинг то и:

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

options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_CDNR
options         ALTQ_PRIQ
Настройки /etc/rc.conf

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

$# cat /etc/rc.conf
ifconfig_rl0=" DHCP"
ifconfig_rl1="inet 192.168.0.1 netmask 255.255.255.0"
hostname="yourhost"
named_enable="YES"
gateway_enable="YES"

#NAT
natd_enable=”YES”
natd_interface="rl0"

#PF
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
Настройки /etc/pf.rules простейшие правила которые разрешают весь трафик в любом направлении и натят его на внешнем интерфейсе

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

$# cat /etc/pf.conf
ext_if="rl0"
int_if="rl1"
int_net="192.168.0.0/24"
nat on $ext_if from $int_net to any -> ($ext_if)
pass all
Настройки /etc/namedb/named.conf
нужно изменить строку

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

listen-on       { 127.0.0.1; };
на

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

listen-on       { any; };

lordlev
рядовой
Сообщения: 33
Зарегистрирован: 2012-12-02 8:51:16

Re: Помогите с написанием правил PF (ALTQ)

Непрочитанное сообщение lordlev » 2013-01-02 7:59:01

Да не за что ....
Конфиг ... да "ниачом" ... Уж извини, без обид (даже для такого нуба как я). Даже в "ручной книге" он и то интересней :)
Опять-же, могу ошибаться (а я сначала погуглил :) , с pf-ом никак не дойдут руки\ноги разобраться, НО
Как я понимаю, у тебя сейчас подняты 2 nat-a: демон natd и еще один через pf. Убери natd, чичас не модно :)
Named. А зачем он тебе на ВСЕХ интерфейсах? 127.0.0.1 и 192.168.0.1 и все.
Ну уж прикручивай ALTQ, а то в ядре есть, а не задействован.