pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2008-12-08 20:10:04

Привет всем, сделал я на базе FreeBSD роутер, который балансирует нагрузку между двумя провайдерами. Всё уже вроде бы хорошо и vpn-ы бегают и трифик балансируется, но с pf я окончательно умаялся.
ДАНО:
2 провайдера:

Stream: rl0 -> PPPoE -> ng1 (никаких внутренних ресурсов, всё вроде просто, кроме почтового ящика который можно проверить исключительно через это же подключение)

Briz: rl1 -> PPTP -> ng0 (всё сложно: интернет ходит через ng0, но внутренние ресурсы ftp, web, torrent к другим пользователям, IPTV через rl1)

Локальная сеть: bridge0 (wifi + кабель по квартире, dhcpd + dns запущены на роутере)

Оба провайдера предоставляют внешние IP и хочется пробрасывать подключения (ftp, www, hamachi, torrent) на свой комп в сети.


Взял конфиг с www.openbsd.org

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

briz_local = "{ 192.168.1.0/24, 172.0.0.0/8 }"
briz_local_if = "rl1"
briz_local_gw = "172.18.124.1"

lan_net = "10.0.0.0/24"
int_if  = "bridge0"

briz_if = "ng0"
stream_if = "ng1"

briz_gw = "213.231.0.9"
stream_gw = "89.209.95.254"

rdr_ip = "10.0.0.10"
rdr_ports = "{ 20, 21, 80, 443, 3389, 12975 }"

#  nat outgoing connections on each internet interface
nat on $briz_if from $lan_net to any -> ($briz_if)
nat on $stream_if from $lan_net to any -> ($stream_if)

#  default deny
block in  from any to any
block out from any to any

#  pass all outgoing packets on internal interface
pass out on $int_if from any to $lan_net allow-opts

#  pass in quick any packets destined for the gateway itself
pass in quick on $int_if from $lan_net to $int_if allow-opts


# TEST: route to BRIZ local resrources
# pass in on $int_if route-to $briz_local_if from $lan_net to $briz_local keep-state


#  load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
    { ($briz_if $briz_gw), ($stream_if $stream_gw) } round-robin \
    proto tcp from $lan_net to any flags S/SA modulate state

#  load balance outgoing udp and icmp traffic from internal network
pass in on $int_if route-to \
    { ($briz_if $briz_gw), ($stream_if $stream_gw) } round-robin \
    proto { udp, icmp } from $lan_net to any keep state

pass in on $int_if route-to $briz_local_if from any to $briz_local keep state allow-opts

#  general "pass out" rules for external interfaces
pass out on $briz_if proto tcp from any to any flags S/SA modulate state
pass out on $briz_if proto { udp, icmp } from any to any keep state
pass out on $stream_if proto tcp from any to any flags S/SA modulate state
pass out on $stream_if proto { udp, icmp } from any to any keep state

#  route packets from any IPs on $briz_if to $briz_gw and the same for
#  $stream_if and $stream_gw
pass out on $briz_if route-to ($stream_if $stream_gw) from $stream_if to any
pass out on $stream_if route-to ($briz_if $briz_gw) from $briz_if to any
Всё вроде хорошо - балансировка между провайдерами работает, инет раздаётся, казалось бы осталось совсем чуть-чуть:

1. Разрешить мультикаст с rl1 (на роутере уже поднят igmpproxy - и при простом конфиге всё прекрасно раздаётся в bridge0)

2. Сделать роутинг\nat на локальные ресурсы $briz_local через $briz_local_if

3. В нужное место всунуть rdr дабы перенаправлять $rdr_ports на $rdr_ip с интерфейсов ng1 и ng0


Эти 3 вещи для меня сейчас и встали боком, методу тыка pf не поддаётся, а принципы его работы я не до конца понимаю. Т.е. я уже продолбался с ним некоторое время и теперь вопрошаю к помощи знающих людей. Заранее спасибо.

Хостинговая компания 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/

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-09 1:21:50

Все за 5 мин делается, только схемку набросай...не совсем понятна структура(схема с адресами + какие именно локальные, какие порты и т.д. и т.п.).

Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2008-12-09 14:00:23

Добавил во вложение.
Вложения
if.gif
структура сети

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-14 1:58:17

Сори за задержку...бурные выходные не позволяли подойти к компу..подпиши ип адреса всех интерфейсов сервера в схемке и стрелочки, что куда откуда зачем и почему ходит (с айпи адресами опять же) т.к. все это не очевидно и при попытке разобрать схему происходит взрыв мозга. Все данные можно в лс если не хочеш публиковать или выложи тут и замени на левые адреса типа 1.1.1.1 для наглядности.
Что удалось понять по данному варианту схемы-

1. Есть внутренняя сеть 10.0.0.0/24 с клиентами, висит на bridge0
2. Есть 2 внешних прова, при этом к Briz 2 физических коннекта - ng0 это инет и ??? локалка, у стрима 1 интерфейс ng1.
или 2-й вариант пункта 2 - Есть 2 внешних прова, при этом к Briz 1 физический коннект - rl1, а ng0 это VPN подключение через которое идет инет, у стрима 1 интерфейс ng1.
Опять же нужны точные ип адреса всех интерфейсов, тогда все будет понятно.


на вскидку...

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

briz_local = "{ 192.168.1.0/24, 172.0.0.0/8, 224.0.0.0/4 }"
briz_local_if = "rl1"
briz_local_gw = "172.18.124.1"

lan_net = "10.0.0.0/24"
int_if  = "bridge0"

briz_if = "ng0"
stream_if = "ng1"

briz_gw = "213.231.0.9"
stream_gw = "89.209.95.254"

rdr_ip = "10.0.0.10"
rdr_ports = "{ 20, 21, 80, 443, 3389, 12975 }"

# Options
set block-policy drop
set skip on lo0
set limit { states 100000, src-nodes 30000, frags 50000 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 3600}

#  nat outgoing connections on each internet interface
nat on $briz_if from $lan_net to any -> ($briz_if)
nat on $stream_if from $lan_net to any -> ($stream_if)
nat on $briz_local_if from $lan_net to any -> ($briz_local_if)

#RDR
rdr pass on $ng0 inet proto tcp from any to  ($ng0) port $rdr_ports -> $rdr_ip
rdr pass on $ng1 inet proto tcp from any to  ($ng1) port $rdr_ports -> $rdr_ip

#  default deny
block all

#IPTV
pass in on $briz_local_if proto igmp to $briz_local allow-opts
pass in on $briz_local_if proto udp to $briz_local port {1234, 9875}

# Pass in on int_if to me
pass in quick on $int_if from $lan_net to ($int_if)

#  pass all outgoing packets on interface's
pass out on $int_if from any to $lan_net allow-opts
pass out on $briz_local_if proto gre from ($briz_local_if) to any

#  route packets from any IPs on $briz_if to $briz_gw and the same for
#  $stream_if and $stream_gw
pass out on $briz_if route-to ($stream_if $stream_gw) from $stream_if to any
pass out on $stream_if route-to ($briz_if $briz_gw) from $briz_if to any

#  load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
    { ($briz_if $briz_gw), ($stream_if $stream_gw) } round-robin \
    proto { tcp, udp, icmp } from $lan_net to any
Последний раз редактировалось neyro 2008-12-14 16:46:24, всего редактировалось 4 раза.

Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2008-12-14 15:04:46

1. Да, внутренняя сеть на bridge0, по DHCP раздаются адреса, у машины на которую нужно пробрасывать порты постоянный ip: 10.0.0.10(подключена по ethernet), остальные клиенты (всё что только можно подключить к WiFi) - все ходят в инет без каких либо ограничений.

2. Оба провайдера подключены по Ethernet:
Briz- интерфейс rl1, получает IP по DHCP, что-то из серии 172.0.0.0/8 (на самом деле интервал гораздо меньше, но в подробности я не вдавался) используется для доступа к внутреним ресурсам провайдера(192.168.1.0/24), расшареным ресурсам других пользователей (172.0.0.0/8) и IPTV(224.0.0.0/4), всё это ходит через gateway(briz_local_gw = "172.18.124.1")
Поверх ethernet поднимается PPTP соединение ($briz_if = "ng0", IP динамический: 213.231.х.y) оно и используется для доступа в интернет.
Т.е. провайдер один, но с двумя интерфейсами (briz_local_if = "rl1") для доступа к локальным ресурсам и (briz_if = "ng0") для доступа в инет.

Stream - подключён по ehternet (интерфейс rl0, ему присвоен IP от фонаря, в моём случае 169.1.1.1). Поверх ethernet поднимается PPPoE соединение(stream_if = "ng1", IP статический: 89.209.81.3) все соединеня ходят через него, у провайдера нет никаких локальных ресурсов.

Спасибо за подправленый конфиг, IPTV отлично заработало, а перед block all я добавил строку pass quick proto gre from any to any дабы нормально работал PPTP, к сожалению rdr не заработал и как посмотреть где проблема - я не знаю :(

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-14 16:44:05

Подправил конфиг, попробуй с новой версией. По поводу роутинга для работы локальных ресурсов-добавь маршруты к ним командой route add, дефолт маршрут(0.0.0.0 при этом должен идти через ng0 интерфейс), если что-то не будет работать напиши в ICQ.

Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2008-12-14 17:52:49

Огромное спасибо за помощь, в новом конфиге пришлось вернуть предыдущую версию отвечающую за IPTV, и добавил роутинг для локальных ресурсов в pf.conf, окончательный конфиг выглядит так, пока всё вроде бегает нормально допиливать буду по мере надобности :)

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

briz_local = "{ 192.168.1.0/24, 172.0.0.0/8, 224.0.0.0/4 }"
briz_local_if = "rl1"
briz_local_gw = "172.18.124.1"

lan_net = "10.0.0.0/24"
int_if  = "bridge0"

briz_if = "ng0"
stream_if = "ng1"

briz_gw = "213.231.0.9"
stream_gw = "89.209.95.254"


# 3389 - RemoteDesktop
# 48429 - Skype
# 12975 - Hamachi
# 3724, 6112, 6881-6999 - WoW

rdr_ip = "10.0.0.10"
rdr_ports = "{ 20, 21, 80, 443, 3389, 12975, 48429, 3724, 6112, 6881:6999 }"

# Options
set block-policy drop
set skip on lo0
set limit { states 100000, src-nodes 30000, frags 50000 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 3600}

#  nat outgoing connections on each internet interface
nat on $briz_if from $lan_net to any -> ($briz_if)
nat on $stream_if from $lan_net to any -> ($stream_if)
nat on $briz_local_if from $lan_net to any -> ($briz_local_if)

#RDR
rdr pass on $stream_if inet proto tcp from any to  ($stream_if) port $rdr_ports -> $rdr_ip
rdr pass on $briz_if inet proto tcp from any to  ($briz_if) port $rdr_ports -> $rdr_ip

#  default deny
# block all

#IPTV
pass quick on {$int_if $briz_local_if} proto igmp to $briz_local allow-opts
pass quick on {$int_if $briz_local_if} proto udp to $briz_local port {1234, 9875}

# Pass in on int_if to me
pass in quick on $int_if from $lan_net to ($int_if)

#  pass all outgoing packets on interface's
pass out on $int_if from any to $lan_net allow-opts
pass out on $briz_local_if proto gre from ($briz_local_if) to any

#  route packets from any IPs on $briz_if to $briz_gw and the same for
#  $stream_if and $stream_gw
pass out on $briz_if route-to ($stream_if $stream_gw) from $stream_if to any
pass out on $stream_if route-to ($briz_if $briz_gw) from $briz_if to any


#  load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
    { ($briz_if $briz_gw), ($stream_if $stream_gw) } round-robin \
    proto { tcp, udp, icmp } from $lan_net to any

# briz local resources
pass in on $int_if route-to ($briz_local_if $briz_local_gw) proto { tcp, udp, icmp } from $lan_net to $briz_local


block all пока пришлось убрать, т.к. pptp всё таки не работает, но это уже буду гуглить :)

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-14 18:59:13

Без block all смысла в фаерволе нет-он все пропускает.

______________________10 мин спустя... )
Ошибся в правилах...нужно ведь еще выпустить трафик с внешнего физ. интерфейса...
измени это правило

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

pass out on $briz_local_if proto gre from ($briz_local_if) to any
на

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

pass out on $briz_local_if proto { gre, tcp, udp } from ($briz_local_if) to any
и все должно заработать..
Насчет IPTV - измени правила так

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

#IPTV
pass in on $briz_local_if proto igmp to $briz_local allow-opts
pass in on $briz_local_if proto udp to $briz_local port {1234, 9875}
pass out on $int_if proto igmp to any allow-opts

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение zingel » 2008-12-15 10:03:09

и как ты собрался без mrouting гонять iptv?

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

briz_gw = "213.231.0.9"
Z301171463546 - можно пожертвовать мне денег

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-15 19:16:04

zingel писал(а):и как ты собрался без mrouting гонять iptv?

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

briz_gw = "213.231.0.9"
1. Разрешить мультикаст с rl1 (на роутере уже поднят igmpproxy - и при простом конфиге всё прекрасно раздаётся в bridge0)
:Yahoo!:

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение zingel » 2008-12-15 19:18:34

вот чтобы разрешить мультикаст нужно поднимать mroute в ядре, тут не yahoo, а ooops
Z301171463546 - можно пожертвовать мне денег

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2008-12-15 19:36:50

Ну хз..судя по овтету автора все работает без mrouting.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение zingel » 2008-12-15 19:53:09

сомневаюсь, пусть покажет

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

netstat -rn
Z301171463546 - можно пожертвовать мне денег

Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2008-12-16 17:25:10

mrouting в ядре уже есть, всё нормально :)

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение zingel » 2008-12-16 17:42:24

ну и ок
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение iZEN » 2010-01-01 22:53:37

Бьюсь с возможностью смотреть IPTV на локальном компе при поднятом PF.
UDP-порт для каналов открыл, IGMP ходит туда-сюда, но телевидение можно начать смотреть только при отключенном PF.

Вынужденная схема работы такая:
1) pfctl -d — торможу PF;
2) vlc — запускаю vlc и включаю потоковое вещание (всё работает);
3) pfctl -f /etc/pf.conf && pfctl -e — включаю PF (тоже всё работает);
4) vlc — переключаю канал на другой IP (вещание не работает);
5) повторяю с п.1).

Повторяю: нужно настроить показ IPTV на компьютере с запущенным PF.
Правило:

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

pass on $ext_if inet proto igmp all
ни на что не влияет (при работающем PF протокол IGMP на открытом порту получает статус "keep state" и ничего не происходит — подозреваю, что это неправильный тип состояния.).
Что дополнительно надо сделать?

Система: FreeBSD 8.0-STABLE. Трафик приходит с ADSL-модема по Ethernet (NAT на модеме). IPTV настроено на модеме. Машина в DMZ модема.

Добавлено:
Вот тут нашёл, что нужно делать:

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

pass on $ext_if inet proto igmp to any allow-opts
Завтра попробую и отпишусь.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Kaspian
рядовой
Сообщения: 22
Зарегистрирован: 2008-12-08 20:00:10

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение Kaspian » 2010-01-02 15:02:02

pass quick on {$int_if $briz_local_if} proto igmp to $briz_local allow-opts
у меня так, где $int_if - интерфейс в локльную сеть, а $briz_loca - провайдерский интерфейс по которому приходит iptv.
правда у меня ещё и igmpproxy.

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение iZEN » 2010-01-02 15:53:12

iZEN писал(а):Бьюсь с возможностью смотреть IPTV на локальном компе при поднятом PF.
<...>
Вот тут нашёл, что нужно делать:

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

pass on $ext_if inet proto igmp to any allow-opts
Завтра попробую и отпишусь.
Бесполезно.
Правило:

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

pass inet proto igmp from any to any allow-opts
В статусе PF пишет:

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

STATES:
<...>
all igmp 192.168.1.223 -> 239.1.1.19       SINGLE:NO_TRAFFIC
all igmp 224.0.0.1 <- 1.0.0.1       NO_TRAFFIC:SINGLE
VLC ничего не показывает пока не остановишь PF.

Прикольно, если в PF ставишь:

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

pass in all
то VLC всё равно не воспроизводит IPTV!!! Нужно вообще выключать PF. :st:
В чём ещё засада может быть?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2010-01-02 19:32:55

Перед тем как начать проигрывать плеер на компе\приставке посылает igmp запрос на роутер\свитч ближайший, который включает мультикаст на порту(соответственно пф блочит скорее всего именно этот исходящий запрос).
Вы писали pass in all, попробуйте pass out all еще...
да и кстати весь заблоченный траф если включен log можно посмотреть через tcpdump -i pflog0 - все сразу станет понятно.
п.с. если не секрет, а зачем вообще нужен пф если Вы и так за натом сидите ?

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение iZEN » 2010-01-02 20:12:39

neyro писал(а):Перед тем как начать проигрывать плеер на компе\приставке посылает igmp запрос на роутер\свитч ближайший, который включает мультикаст на порту(соответственно пф блочит скорее всего именно этот исходящий запрос).
Вы писали pass in all, попробуйте pass out all еще...
"pass out all" стоит в конце файла pf.conf.
neyro писал(а):да и кстати весь заблоченный траф если включен log можно посмотреть через tcpdump -i pflog0 - все сразу станет понятно.
п.с. если не секрет, а зачем вообще нужен пф если Вы и так за натом сидите ?
PF нужен, так как машина в DMZ. не хочется голой задницей в Сеть выглядывать.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение neyro » 2010-01-02 20:48:38

Если Вы уже за натом (как написали выше) то входящие коннекты невозможны...смысла в использовании пф-0.
Что показывает tcpdump -i pflog0 ? (правило блока должно быть вида block log all)

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение iZEN » 2010-01-02 22:28:24

neyro писал(а):Если Вы уже за натом (как написали выше) то входящие коннекты невозможны...смысла в использовании пф-0.
Я так не думаю.
neyro писал(а):Что показывает tcpdump -i pflog0 ? (правило блока должно быть вида block log all)

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

% tcpdump -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 68 bytes
22:30:52.150977 IP [|ip]
22:30:52.643069 IP [|ip]
22:30:56.159540 IP [|ip]
22:30:58.205826 IP [|ip]
22:30:59.829049 IP [|ip]
22:30:59.829065 IP [|ip]
22:31:00.848745 IP [|ip]
22:31:02.418412 IP [|ip]
Действующие правила:

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

% pfctl -sa
TRANSLATION RULES:
rdr inet proto tcp from any to any port = http -> { 192.168.1.223, 127.0.0.1 } port 8080 round-robin

FILTER RULES:
scrub in all fragment reassemble
block drop log all
pass inet proto icmp all icmp-type echoreq keep state
pass inet proto icmp all icmp-type unreach keep state
pass on net0 inet proto igmp all keep state allow-opts
pass in quick on net0 proto tcp from any to any port = ssh flags S/SA keep state
pass in quick on net0 proto tcp from any to any port = http flags S/SA keep state
pass in quick on net0 proto tcp from any to any port = http flags S/SA keep state
pass in quick on net0 proto tcp from any to any port = https flags S/SA keep state
pass in quick on net0 proto tcp from any to any port 6881:6991 flags S/SA keep state
pass in quick on net0 proto tcp from any to any port = 8080 flags S/SA keep state
pass in quick on net0 proto udp from any to any port = ntp keep state
pass in quick on net0 proto udp from any to any port = 5501 keep state
pass in quick on net0 proto udp from any to any port 6881:6991 keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = ssh flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = http flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = http flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = https flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = ntp flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = nfsd flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = sunrpc flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = 883 flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = 884 flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = 885 flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port 6881:6991 flags S/SA keep state
pass in quick on net0 inet proto tcp from 192.168.1.0/24 to any port = 8080 flags S/SA keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = ntp keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = nfsd keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = sunrpc keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = 883 keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = 884 keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port = 885 keep state
pass in quick on net0 inet proto udp from 192.168.1.0/24 to any port 6881:6991 keep state
pass out all flags S/SA keep state
No queue in use

STATES:
all tcp 192.168.1.223:50038 -> 92.241.170.196:80       CLOSING:FIN_WAIT_2
all tcp 192.168.1.223:54522 -> 206.127.23.226:80       CLOSING:FIN_WAIT_2
all tcp 192.168.1.223:18159 -> 206.127.23.226:80       CLOSING:FIN_WAIT_2
all tcp 192.168.1.223:53657 -> 89.222.192.50:80       CLOSING:FIN_WAIT_2
all tcp 192.168.1.223:50392 -> 89.222.192.50:80       CLOSING:FIN_WAIT_2
all tcp 192.168.1.223:24443 -> 194.67.128.198:80       CLOSING:FIN_WAIT_2
all udp 239.1.1.24:5501 <- 20.20.20.20:5501       NO_TRAFFIC:SINGLE

INFO:
Status: Enabled for 0 days 00:01:01           Debug: Urgent

State Table                          Total             Rate
  current entries                        7               
  searches                           89211         1462.5/s
  inserts                              256            4.2/s
  removals                             249            4.1/s
Counters
  match                                391            6.4/s
  bad-offset                             0            0.0/s
  fragment                               0            0.0/s
  short                                  0            0.0/s
  normalize                              0            0.0/s
  memory                                 0            0.0/s
  bad-timestamp                          0            0.0/s
  congestion                             0            0.0/s
  ip-option                             12            0.2/s
  proto-cksum                            0            0.0/s
  state-mismatch                         0            0.0/s
  state-insert                           0            0.0/s
  state-limit                            0            0.0/s
  src-limit                              0            0.0/s
  synproxy                               0            0.0/s

TIMEOUTS:
tcp.first                   120s
tcp.opening                  30s
tcp.established           24000s
tcp.closing                 900s
tcp.finwait                  45s
tcp.closed                   90s
tcp.tsdiff                   30s
udp.first                    60s
udp.single                   30s
udp.multiple                 60s
icmp.first                   10s
icmp.error                    5s
other.first                  60s
other.single                 30s
other.multiple               60s
frag                         10s
interval                     10s
adaptive.start             6000 states
adaptive.end              12000 states
src.track                     0s

LIMITS:
states        hard limit    10000
src-nodes     hard limit    10000
frags         hard limit     5000
tables        hard limit     1000
table-entries hard limit   100000

OS FINGERPRINTS:
696 fingerprints loaded
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1087
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: pf: nat-> balancing, IPTV, rdr (чуть допилить конфиг)

Непрочитанное сообщение iZEN » 2010-01-02 23:52:10

На самом деле всё работает, вот только воспроизведение видеоконтента IPTV в VLC начинается спустя 45 секунд с момента нажатия кнопки "Play"! :Yahoo!: :cz2:
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix