The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"FreeBSD Dummynet не работает"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Квоты, ограничения, QoS)
Изначальное сообщение [ Отслеживать ]

"FreeBSD Dummynet не работает"  +/
Сообщение от Sindikat88 (ok) on 26-Июн-17, 17:41 
Камрады, приветствую!
Имеется шлюз на FreeBSD 10.3 с параметрами ядра:
#NAT
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=5
options DUMMYNET
options HZ="1000"                       # for DUMMYNET

# Options for a IPsec enabled kernel
options         IPSEC
options         IPSEC_FILTERTUNNEL
options         IPSEC_NAT_T
device          crypto
device          enc

IPFW работает с таким набором правил:
#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

cmd="/sbin/ipfw add"
FWCMD="/sbin/ipfw -q"

LanOut="igb1" # Внешняя сетевуха
NetOut="xxx.xxx.xxx.xxx/30" # внешняя сеть
IpOut="xxx.xxx.xxx.xxx" # Внешний IP

LanIn="igb0" # внутренняя сетевуха
NetIn="192.168.180.0/23" # Внутренняя сеть
ip_lan="192.168" # Шаблон внутреннего адреса

LanGuest="vlan10" # VLAN для гостевой WI-FI сети
NetGuest="192.168.185.0/24" #VLAN сеть для гостевой WI-FI сети

LanSmart="vlan20" # VLAN для Smart WI-FI сети
NetSmart="192.168.190.0/24" #VLAN сеть для Smart

openvpn_if="tun0"       #OpenVPN port
IpVPN="192.168.225.0"


ipfw pipe 1 config bw 1000Kbit/s mask dst-ip 0x000000ff
ipfw pipe 2 config bw 1000Kbit/s mask src-ip 0x000000ff

ipfw add 041 pipe 1 ip from any to 192.168.180.0/23 in
ipfw add 042 pipe 2 ip from 192.168.180.0/23 to any out

#NAT
ipfw nat 1 config if igb1 log same_ports


#local
$cmd 005 allow all from any to any via $LanIn
#VPN
$cmd 006 allow all from any to any via tun0
#local Guest Network
$cmd 007 allow all from any to any via $LanGuest
#GIF
$cmd 008 allow ip from any to any via gif0
#local Smart Network
$cmd 009 allow all from any to any via $LanSmart
# loopback
$cmd 010 allow all from any to any via lo0

#Incoming traffic to NAT
$cmd 030 nat 1 ip from any to any in via $LanOut

#NAT from AS to Inet
$cmd 033 nat 1 ip from $NetIn to any out via $LanOut

#NAT from Guest to Inet
$cmd 035 nat 1 ip from $NetGuest to any out via $LanOut

#NAT from Smart to Inet
$cmd 038 nat 1 ip from $NetSmart to any out via $LanOut

#Allow DYN rules
$cmd 040 check-state

# DNS resolve
$cmd 052 allow ip from any 53 to any via $LanOut
$cmd 053 allow ip from any to any 53 via $LanOut

# Outgoing server to Internet
$cmd 060 allow ip from me to any out via $LanOut setup keep-state

#IPSEC VPN Smart
$cmd 061 allow udp from xxx.xxx.xxx.xxx to me isakmp
$cmd 062 allow udp from me to xxx.xxx.xxx.xxx isakmp
$cmd 063 allow esp from xxx.xxx.xxx.xxx to me
$cmd 064 allow esp from me to xxx.xxx.xxx.xxx
$cmd 065 allow ipencap from xxx.xxx.xxx.xxx to me
$cmd 066 allow ipencap from me to xxx.xxx.xxx.xxx

# ICMP
$cmd 100 allow icmp from any to any out via $LanOut keep-state

# OpenVPN
$cmd 101 allow tcp from xxx.xxx.xxx.xxx to me 2000 in via ${LanOut}
$cmd 102 allow tcp from me 2000 to xxx.xxx.xxx.xxx out via ${LanOut}
$cmd 103 allow all from any to any in via ${openvpn_if}
$cmd 104 allow all from any to any out via ${openvpn_if}

# Time
$cmd 120 allow udp from any to any 123 out via $LanOut keep-state

#WI-FI Guest
$cmd 123 allow ip from $NetGuest to any 80,443,21 out via $LanOut setup keep-state

#SIP
$cmd 131 allow ip from 193.201.230.128/26 to '192.168.180.0{31-89}' in via ${LanOut}
$cmd 132 allow ip from '192.168.180.0{31-89}' to 193.201.230.128/26 out via ${LanOut}

#NAT
$cmd 141 allow ip from '192.168.180.0{11-29}' to any out via $LanOut setup keep-state
#TV
$cmd 143 allow ip from '192.168.180.0{95-97}' to any out via $LanOut setup keep-state

#Разрешаем определенный ICMP-трафик из мира к нам
$cmd 161 allow icmp from any to me in via $LanOut icmptype 3,8,12
#Разрешаем определенный ICMP-трафик от нас в мир
$cmd 162 allow icmp from me to any out via $LanOut icmptype 0,3,4,11,12
#Запрещаем прочий ICMP-трафик
$cmd 163 deny log icmp from any to me in via $LanOut icmptype 5,9,10,13,15,17

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 200 deny all from 192.168.0.0/16 to any in via $LanOut
$cmd 201 deny all from 172.16.0.0/12 to any in via $LanOut
$cmd 202 deny all from 10.0.0.0/8 to any in via $LanOut
$cmd 203 deny all from 127.0.0.0/8 to any in via $LanOut
$cmd 204 deny all from 0.0.0.0/8 to any in via $LanOut
$cmd 205 deny all from 169.254.0.0/16 to any in via $LanOut
$cmd 206 deny all from 192.0.2.0/24 to any in via $LanOut
$cmd 207 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 208 deny all from 224.0.0.0/3 to any in via $LanOut

# Deny ident
$cmd 209 deny tcp from any to any 113 in via $LanOut

#Netbios
$cmd 210 deny tcp from any to any 137 via $LanOut
$cmd 211 deny tcp from any to any 138 via $LanOut
$cmd 212 deny tcp from any to any 139 via $LanOut
$cmd 213 deny tcp from any to any 81 via $LanOut

# Deny fragments packets
$cmd 214 deny all from any to any frag in via $LanOut

# Deny ACK packets that did not match the dynamic rule table
$cmd 215 deny tcp from any to any established in via $LanOut

#Isolated Network
$cmd 216 allow all from 192.168.185.0/24 to 192.168.180.1
$cmd 217 allow all from 192.168.190.0/24 to 192.168.180.1
$cmd 218 deny all from 192.168.185.0/24 to 192.168.180.0/23
$cmd 219 deny all from 192.168.180.0/23 to 192.168.185.0/24
$cmd 220 deny all from 192.168.190.0/24 to 192.168.180.0/23
$cmd 221 deny all from 192.168.180.0/24 to 192.168.190.0/24

# Allow in ssh from Internet
$cmd 300 allow tcp from xxx.xxx.xxx.xxx to me 22 in via $LanOut setup limit src-addr 1

# Reject incomming traffic from Inet
$cmd 400 deny log all from any to any in via $LanOut

# Reject outgoing traffic to Inet
$cmd 410 deny log logamount 50 all from any to any out via $LanOut

$cmd 999 deny log all from any to any#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

cmd="/sbin/ipfw add"
FWCMD="/sbin/ipfw -q"

LanOut="igb1" # Внешняя сетевуха
NetOut="xxx.xxx.xxx.xxx/30" # внешняя сеть
IpOut="xxx.xxx.xxx.xxx" # Внешний IP

LanIn="igb0" # внутренняя сетевуха
NetIn="192.168.180.0/23" # Внутренняя сеть
ip_lan="192.168" # Шаблон внутреннего адреса

LanGuest="vlan10" # VLAN для гостевой WI-FI сети
NetGuest="192.168.185.0/24" #VLAN сеть для гостевой WI-FI сети

LanSmart="vlan20" # VLAN для Smart WI-FI сети
NetSmart="192.168.190.0/24" #VLAN сеть для Smart

openvpn_if="tun0"       #OpenVPN port
IpVPN="192.168.225.0"


ipfw pipe 1 config bw 1000Kbit/s mask dst-ip 0x000000ff
ipfw pipe 2 config bw 1000Kbit/s mask src-ip 0x000000ff

ipfw add 041 pipe 1 ip from any to 192.168.180.0/23 in
ipfw add 042 pipe 2 ip from 192.168.180.0/23 to any out

#NAT
ipfw nat 1 config if igb1 log same_ports


#local
$cmd 005 allow all from any to any via $LanIn
#VPN
$cmd 006 allow all from any to any via tun0
#local Guest Network
$cmd 007 allow all from any to any via $LanGuest
#GIF
$cmd 008 allow ip from any to any via gif0
#local Smart Network
$cmd 009 allow all from any to any via $LanSmart
# loopback
$cmd 010 allow all from any to any via lo0

#Incoming traffic to NAT
$cmd 030 nat 1 ip from any to any in via $LanOut

#NAT from AS to Inet
$cmd 033 nat 1 ip from $NetIn to any out via $LanOut

#NAT from Guest to Inet
$cmd 035 nat 1 ip from $NetGuest to any out via $LanOut

#NAT from Smart to Inet
$cmd 038 nat 1 ip from $NetSmart to any out via $LanOut

#Allow DYN rules
$cmd 040 check-state

# DNS resolve
$cmd 052 allow ip from any 53 to any via $LanOut
$cmd 053 allow ip from any to any 53 via $LanOut

# Outgoing server to Internet
$cmd 060 allow ip from me to any out via $LanOut setup keep-state

#IPSEC VPN Smart
$cmd 061 allow udp from xxx.xxx.xxx.xxx to me isakmp
$cmd 062 allow udp from me to xxx.xxx.xxx.xxx isakmp
$cmd 063 allow esp from xxx.xxx.xxx.xxx to me
$cmd 064 allow esp from me to xxx.xxx.xxx.xxx
$cmd 065 allow ipencap from xxx.xxx.xxx.xxx to me
$cmd 066 allow ipencap from me to xxx.xxx.xxx.xxx

# ICMP
$cmd 100 allow icmp from any to any out via $LanOut keep-state

# OpenVPN
$cmd 101 allow tcp from xxx.xxx.xxx.xxx to me 2000 in via ${LanOut}
$cmd 102 allow tcp from me 2000 to xxx.xxx.xxx.xxx out via ${LanOut}
$cmd 103 allow all from any to any in via ${openvpn_if}
$cmd 104 allow all from any to any out via ${openvpn_if}

# Time
$cmd 120 allow udp from any to any 123 out via $LanOut keep-state

#WI-FI Guest
$cmd 123 allow ip from $NetGuest to any 80,443,21 out via $LanOut setup keep-state

#SIP
$cmd 131 allow ip from 193.201.230.128/26 to '192.168.180.0{31-89}' in via ${LanOut}
$cmd 132 allow ip from '192.168.180.0{31-89}' to 193.201.230.128/26 out via ${LanOut}

#NAT
$cmd 141 allow ip from '192.168.180.0{11-29}' to any out via $LanOut setup keep-state
#TV
$cmd 143 allow ip from '192.168.180.0{95-97}' to any out via $LanOut setup keep-state

#Разрешаем определенный ICMP-трафик из мира к нам
$cmd 161 allow icmp from any to me in via $LanOut icmptype 3,8,12
#Разрешаем определенный ICMP-трафик от нас в мир
$cmd 162 allow icmp from me to any out via $LanOut icmptype 0,3,4,11,12
#Запрещаем прочий ICMP-трафик
$cmd 163 deny log icmp from any to me in via $LanOut icmptype 5,9,10,13,15,17

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 200 deny all from 192.168.0.0/16 to any in via $LanOut
$cmd 201 deny all from 172.16.0.0/12 to any in via $LanOut
$cmd 202 deny all from 10.0.0.0/8 to any in via $LanOut
$cmd 203 deny all from 127.0.0.0/8 to any in via $LanOut
$cmd 204 deny all from 0.0.0.0/8 to any in via $LanOut
$cmd 205 deny all from 169.254.0.0/16 to any in via $LanOut
$cmd 206 deny all from 192.0.2.0/24 to any in via $LanOut
$cmd 207 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 208 deny all from 224.0.0.0/3 to any in via $LanOut

# Deny ident
$cmd 209 deny tcp from any to any 113 in via $LanOut

#Netbios
$cmd 210 deny tcp from any to any 137 via $LanOut
$cmd 211 deny tcp from any to any 138 via $LanOut
$cmd 212 deny tcp from any to any 139 via $LanOut
$cmd 213 deny tcp from any to any 81 via $LanOut

# Deny fragments packets
$cmd 214 deny all from any to any frag in via $LanOut

# Deny ACK packets that did not match the dynamic rule table
$cmd 215 deny tcp from any to any established in via $LanOut

#Isolated Network
$cmd 216 allow all from 192.168.185.0/24 to 192.168.180.1
$cmd 217 allow all from 192.168.190.0/24 to 192.168.180.1
$cmd 218 deny all from 192.168.185.0/24 to 192.168.180.0/23
$cmd 219 deny all from 192.168.180.0/23 to 192.168.185.0/24
$cmd 220 deny all from 192.168.190.0/24 to 192.168.180.0/23
$cmd 221 deny all from 192.168.180.0/24 to 192.168.190.0/24

# Allow in ssh from Internet
$cmd 300 allow tcp from xxx.xxx.xxx.xxx to me 22 in via $LanOut setup limit src-addr 1

# Reject incomming traffic from Inet
$cmd 400 deny log all from any to any in via $LanOut

# Reject outgoing traffic to Inet
$cmd 410 deny log logamount 50 all from any to any out via $LanOut

$cmd 999 deny log all from any to any

Хочу настроить шейпер.
Но как только я добавляю параметр net.inet.ip.fw.one_pass=0 в /etc/sysctl.conf, так сразу перестают ходить пакеты в локальную сеть.
Подскажите, как правильно организовать шейпинг?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 27-Июн-17, 15:20 
Может ipfw list?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "FreeBSD Dummynet не работает"  +/
Сообщение от Sindikat88 (ok) on 27-Июн-17, 15:27 
> Может ipfw list?

00005 allow ip from any to any via igb0
00006 allow ip from any to any via tun0
00007 allow ip from any to any via vlan10
00008 allow ip from any to any via gif0
00009 allow ip from any to any via vlan20
00010 allow ip from any to any via lo0
00030 nat 1 ip from any to any in via igb1
00033 nat 1 ip from 192.168.180.0/23 to any out via igb1
00034 pipe 2 ip from 192.168.180.0/23 to any out
00035 pipe 1 ip from any to 192.168.180.0/23 in
00035 nat 1 ip from 192.168.185.0/24 to any out via igb1
00038 nat 1 ip from 192.168.190.0/24 to any out via igb1
00040 check-state
00052 allow ip from any 53 to any via igb1
00053 allow ip from any to any dst-port 53 via igb1
00060 allow ip from me to any out via igb1 setup keep-state
00061 allow udp from xxx.xxx.xxx.xxx to me dst-port 500
00062 allow udp from me to xxx.xxx.xxx.xxx dst-port 500
00063 allow esp from xxx.xxx.xxx.xxx to me
00064 allow esp from me to xxx.xxx.xxx.xxx
00065 allow ipencap from xxx.xxx.xxx.xxx to me
00066 allow ipencap from me to xxx.xxx.xxx.xxx
00100 allow icmp from any to any out via igb1 keep-state
00101 allow tcp from xxx.xxx.xxx.xxx to me dst-port 2000 in via igb1
00102 allow tcp from me 2000 to xxx.xxx.xxx.xxx out via igb1
00103 allow ip from any to any in via tun0
00104 allow ip from any to any out via tun0
00120 allow udp from any to any dst-port 123 out via igb1 keep-state
00123 allow ip from 192.168.185.0/24 to any dst-port 80,443,21 out via igb1 setup keep-state
00131 allow ip from 193.201.230.128/26 to 192.168.180.0/24{31-89} in via igb1
00132 allow ip from 192.168.180.0/24{31-89} to 193.201.230.128/26 out via igb1
00141 allow ip from 192.168.180.0/24{11-29} to any out via igb1 setup keep-state
00142 allow ip from any to 192.168.180.0/24{11-29} in via igb1 setup keep-state
00143 allow ip from 192.168.180.0/24{95-97} to any out via igb1 setup keep-state
00161 allow icmp from any to me in via igb1 icmptypes 3,8,12
00162 allow icmp from me to any out via igb1 icmptypes 0,3,4,11,12
00163 deny log logamount 50 icmp from any to me in via igb1 icmptypes 5,9,10,13,15,17
00200 deny ip from 192.168.0.0/16 to any in via igb1
00201 deny ip from 172.16.0.0/12 to any in via igb1
00202 deny ip from 10.0.0.0/8 to any in via igb1
00203 deny ip from 127.0.0.0/8 to any in via igb1
00204 deny ip from 0.0.0.0/8 to any in via igb1
00205 deny ip from 169.254.0.0/16 to any in via igb1
00206 deny ip from 192.0.2.0/24 to any in via igb1
00207 deny ip from 204.152.64.0/23 to any in via igb1
00208 deny ip from 224.0.0.0/3 to any in via igb1
00209 deny tcp from any to any dst-port 113 in via igb1
00210 deny tcp from any to any dst-port 137 via igb1
00211 deny tcp from any to any dst-port 138 via igb1
00212 deny tcp from any to any dst-port 139 via igb1
00213 deny tcp from any to any dst-port 81 via igb1
00214 deny ip from any to any frag in via igb1
00215 deny tcp from any to any established in via igb1
00300 allow tcp from xxx.xxx.xxx.xxx to me dst-port 22 in via igb1 setup limit src-addr 1
00400 deny log logamount 50 ip from any to any in via igb1
00410 deny log logamount 50 ip from any to any out via igb1
65535 deny ip from any to any

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 27-Июн-17, 16:32 
Фигня какая-то с нумерацией. Пайпы же должны быть 41 и 42? А пайп 1 перекрывает нат1...?
Как бы правила - каша вперемешку из скрипта и ручного ввода?

Если не ошибусь, при onepass=0 туда-сюда-обмен пройдёт как-то так:

пришло из внутр. сети
(192.168.180.x -> out.out.out.out) -> in igb0
005 -> вошло в шлюз
(192.168.180.x -> out.out.out.out) -> out igb1
033
(me -> out.out.out.out) -> out igb1
060 -> ушло

ответ
(out.out.out.out -> me) -> in igb1
030
(out.out.out.out -> 192.168.180.x) -> in igb1
035 (пайп)
142 -> вошло в шлюз для x{11-29}
215 -> прибило для x!{11-29}
(out.out.out.out -> 192.168.180.x для x{11-29}) -> out igb0
005 -> ушло во внутрь для x{11-29}

т.е. для x{11-29} должно бы срабатывать даже здесь...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "FreeBSD Dummynet не работает"  +/
Сообщение от Sindikat88 (ok) on 27-Июн-17, 16:33 
>[оверквотинг удален]
> ответ
> (out.out.out.out -> me) -> in igb1
> 030
> (out.out.out.out -> 192.168.180.x) -> in igb1
> 035 (пайп)
> 142 -> вошло в шлюз для x{11-29}
> 215 -> прибило для x!{11-29}
> (out.out.out.out -> 192.168.180.x для x{11-29}) -> out igb0
> 005 -> ушло во внутрь для x{11-29}
> т.е. для x{11-29} должно бы срабатывать даже здесь...

Скрипты при написании правил не использовались.
Буду рад, если подскажете, как заставить работать шейпер.

PS. Я же игрался с номерами правил. Сейчас начало правил выглядит так:
ipfw pipe 1 config bw 1000Kbit/s mask dst-ip 0x000000ff
ipfw pipe 2 config bw 1000Kbit/s mask src-ip 0x000000ff

ipfw add 035 pipe 1 ip from any to 192.168.180.0/23 in
ipfw add 034 pipe 2 ip from 192.168.180.0/23 to any out

#NAT
ipfw nat 1 config if igb1 log same_ports
#ipfw nat 2 config if igb1 log same_ports
#ipfw nat 3 config if igb1 log same_ports

#local
$cmd 005 allow all from any to any via $LanIn
#VPN
$cmd 006 allow all from any to any via tun0
#local Guest Network
$cmd 007 allow all from any to any via $LanGuest
#GIF
$cmd 008 allow ip from any to any via gif0
#local Smart Network
$cmd 009 allow all from any to any via $LanSmart
# loopback
$cmd 010 allow all from any to any via lo0

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 28-Июн-17, 13:33 
> Скрипты при написании правил не использовались.

rc.firewall - скрипт, вообще-то...

> Буду рад, если подскажете, как заставить работать шейпер.

при изменении onepass в 0 при ранее отлаженных правилах, если шейпить надо только для 192.168.180.0, камкаж, пайпы лучше вставить перед "allow all from any to any via $LanIn" и продублировать все правила с nat сразу за ними соответствующими правилами с "allow".

> PS. Я же игрался с номерами правил. Сейчас начало правил выглядит так:

Всё-равно легче ориентироваться по "ipfw list" после перезагрузки (или перезапуска скрипта).

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "FreeBSD Dummynet не работает"  +/
Сообщение от Sindikat88 (ok) on 28-Июн-17, 19:51 
>> Скрипты при написании правил не использовались.
> rc.firewall - скрипт, вообще-то...
>> Буду рад, если подскажете, как заставить работать шейпер.
> при изменении onepass в 0 при ранее отлаженных правилах, если шейпить надо
> только для 192.168.180.0, камкаж, пайпы лучше вставить перед "allow all from
> any to any via $LanIn" и продублировать все правила с nat
> сразу за ними соответствующими правилами с "allow".
>> PS. Я же игрался с номерами правил. Сейчас начало правил выглядит так:
> Всё-равно легче ориентироваться по "ipfw list" после перезагрузки (или перезапуска скрипта).

После перевода onepass=0 и изменения правил до такого состояния не помогло.
00003 pipe 1 ip from any to 192.168.180.0/23 in
00004 pipe 2 ip from 192.168.180.0/23 to any out
00005 allow ip from any to any via igb0
00006 allow ip from any to any via tun0
00007 allow ip from any to any via vlan10
00008 allow ip from any to any via gif0
00009 allow ip from any to any via vlan20
00010 allow ip from any to any via lo0
00030 nat 1 ip from any to any in via igb1
00033 nat 1 ip from 192.168.180.0/23 to any out via igb1
00035 nat 1 ip from 192.168.185.0/24 to any out via igb1
00038 nat 1 ip from 192.168.190.0/24 to any out via igb1
00040 check-state
00052 allow ip from any 53 to any via igb1
00053 allow ip from any to any dst-port 53 via igb1
00060 allow ip from me to any out via igb1 setup keep-state
00061 allow udp from xxx.xxx.xxx.xxx to me dst-port 500
00062 allow udp from me to xxx.xxx.xxx.xxx dst-port 500
00063 allow esp from xxx.xxx.xxx.xxx to me
00064 allow esp from me to xxx.xxx.xxx.xxx
00065 allow ipencap from xxx.xxx.xxx.xxx to me
00066 allow ipencap from me to xxx.xxx.xxx.xxx
00100 allow icmp from any to any out via igb1 keep-state
00101 allow tcp from xxx.xxx.xxx.xxx to me dst-port 2000 in via igb1
00102 allow tcp from me 2000 to xxx.xxx.xxx.xxx out via igb1
00103 allow ip from any to any in via tun0
00104 allow ip from any to any out via tun0
00120 allow udp from any to any dst-port 123 out via igb1 keep-state
00123 allow ip from 192.168.185.0/24 to any dst-port 80,443,21 out via igb1 setup keep-state
00131 allow ip from 193.201.230.128/26 to 192.168.180.0/24{31-89} in via igb1
00132 allow ip from 192.168.180.0/24{31-89} to 193.201.230.128/26 out via igb1
00141 allow ip from 192.168.180.0/24{11-29} to any out via igb1 setup keep-state
00142 allow ip from any to 192.168.180.0/24{11-29} in via igb1 setup keep-state
00143 allow ip from 192.168.180.0/24{95-97} to any out via igb1 setup keep-state
00161 allow icmp from any to me in via igb1 icmptypes 3,8,12
00162 allow icmp from me to any out via igb1 icmptypes 0,3,4,11,12
00163 deny log logamount 50 icmp from any to me in via igb1 icmptypes 5,9,10,13,15,17
00200 deny ip from 192.168.0.0/16 to any in via igb1
00201 deny ip from 172.16.0.0/12 to any in via igb1
00202 deny ip from 10.0.0.0/8 to any in via igb1
00203 deny ip from 127.0.0.0/8 to any in via igb1
00204 deny ip from 0.0.0.0/8 to any in via igb1
00205 deny ip from 169.254.0.0/16 to any in via igb1
00206 deny ip from 192.0.2.0/24 to any in via igb1
00207 deny ip from 204.152.64.0/23 to any in via igb1
00208 deny ip from 224.0.0.0/3 to any in via igb1
00209 deny tcp from any to any dst-port 113 in via igb1
00210 deny tcp from any to any dst-port 137 via igb1
00211 deny tcp from any to any dst-port 138 via igb1
00212 deny tcp from any to any dst-port 139 via igb1
00213 deny tcp from any to any dst-port 81 via igb1
00214 deny ip from any to any frag in via igb1
00215 deny tcp from any to any established in via igb1
00300 allow tcp from xxx.xxx.xxx.xxx to me dst-port 22 in via igb1 setup limit src-addr 1
00400 deny log logamount 50 ip from any to any in via igb1
00410 deny log logamount 50 ip from any to any out via igb1
65535 deny ip from any to any

Не совсем понял, какие правила нужно продублировать

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 29-Июн-17, 10:02 
> Не совсем понял, какие правила нужно продублировать

При onepass = 1 правило
> 00030 nat 1 ip from any to any in via igb1

, например, срабатывало, как разрешающее и пакет выскакивал из ipfw. C onepass=0, пакет выскакивает на следующее правило за nat и я бы добавил за ним 'allow ip from any to any in via igb1', для сохранения логики обхода правил. За 'nat 1 ip from 192.168.180.0/23 to any out via igb1' - 'allow ip from 192.168.180.0/23 to any out via igb1' соответственно и т.д. (что, конечно,"в лоб", безо всяких keep/check state)

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 29-Июн-17, 10:08 
Кстати, зачем в конце все правила 200-215, если сразу за ними '65535 deny ip from any to any'? Бдить по ipfw show?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 29-Июн-17, 10:11 
>За 'nat 1 ip from 192.168.180.0/23 to any out via igb1'

'allow ip from _me_ to any out via igb1' скосячил :)


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "FreeBSD Dummynet не работает"  +1 +/
Сообщение от Дум Дум on 29-Июн-17, 10:19 
Причём
> 'allow ip from me to any out via igb1'

1 раз для 33, 35 и 38, а за "nat 1 ip from any to any in via igb1", наверное тогда не "allow ip from any to any in via igb1", конечно, а три правила:
allow ip from any to 192.168.180.0/23 in via igb1
allow ip from any to 192.168.185.0/24 in via igb1
allow ip from any to 192.168.190.0/24 in via igb1

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "FreeBSD Dummynet не работает"  +/
Сообщение от Sindikat88 (ok) on 02-Июл-17, 18:59 
> Причём
>> 'allow ip from me to any out via igb1'
> 1 раз для 33, 35 и 38, а за "nat 1 ip
> from any to any in via igb1", наверное тогда не "allow
> ip from any to any in via igb1", конечно, а три
> правила:
> allow ip from any to 192.168.180.0/23 in via igb1
> allow ip from any to 192.168.185.0/24 in via igb1
> allow ip from any to 192.168.190.0/24 in via igb1

Спасибо за правильные мысли.
Оказывается весь косяк был во входящих правилах. Если стояло keep-state, то пакеты не ходили.
Сейчас привел IPFW к такому виду, и все прекрасно работает.
#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

cmd="/sbin/ipfw add"
FWCMD="/sbin/ipfw -q"

LanOut="igb1" # External Ethernet
IpOut="xxx.xxx.xxx.xxx" # External IP

LanIn="igb0" # Internal Ethernet
NetIn="192.168.180.0/23" # Internal Lan

LanGuest="vlan10" # VLAN guest WI-FI
NetGuest="192.168.185.0/24" #VLAN network for WI-FI guest

LanSmart="vlan20" # VLAN Smart
NetSmart="192.168.190.0/24" #VLAN network fow Smart

openvpn_if="tun0"       #OpenVPN port
IpVPN="192.168.225.0"

VIP="192.168.180.0{11-29}"
SIP="192.168.180.0/24{31-89}"
NetLocal="192.168.181.1/24{1-254}"

#Pipe 1 - SIP Phone out - 4Mbit/s
#Pipe 2 - SIP Phone in - 4Mbit/s
ipfw pipe 1 config bw 4Mbit/s
ipfw queue 1 config pipe 1 weight 50 queue 20 mask dst-ip 0x00000000
ipfw pipe 2 config bw 4Mbit/s
ipfw queue 2 config pipe 2 weight 50 queue 20 mask src-ip 0x00000000
$cmd 010 queue 1 ip from any to $SIP out
$cmd 020 queue 2 ip from $SIP to any in
$cmd 021 queue 2 ip from any to $SIP in via $LanOut
$cmd 022 queue 2 ip from 193.201.230.128/26 to me 5060,11024 in via $LanOut
$cmd 011 queue 1 ip from me 5060,11024 to any out via $LanOut
$cmd 012 queue 1 ip from me to 193.201.230.128/26 out via $LanOut

#Pipe 3 - Guest WI-FI out - 4Mbit/s
#Pipe 4 - Guest WI-FI in - 4Mbit/s
ipfw pipe 3 config bw 4Mbit/s
ipfw queue 3 config pipe 3 weight 50 queue 20 mask src-ip 0x00000000
ipfw pipe 4 config bw 4Mbit/s
ipfw queue 4 config pipe 4 weight 50 queue 20 mask src-ip 0x00000000
$cmd 030 queue 3 ip from any to $NetGuest out
$cmd 040 queue 4 ip from $NetGuest to any in

#Pipe 5 - Network Local out - 6Mbit/s
#Pipe 6 - Network Local in - 6Mbit/s
ipfw pipe 5 config bw 6Mbit/s
ipfw queue 5 config pipe 5 weight 50 queue 20 mask dst-ip 0x00000000
ipfw pipe 6 config bw 6Mbit/s
ipfw queue 6 config pipe 6 weight 50 queue 20 mask src-ip 0x00000000
$cmd 050 queue 5 ip from any to $NetLocal out
$cmd 060 queue 6 ip from $NetLocal to any in

#Pipe 7 - Network Smart out - 5Mbit/s
#Pipe 8 - Network Smart in - 5Mbit/s
ipfw pipe 7 config bw 5Mbit/s
ipfw queue 7 config pipe 7 weight 50 queue 20 mask dst-ip 0x00000000
ipfw pipe 8 config bw 5Mbit/s
ipfw queue 8 config pipe 8 weight 50 queue 20 mask src-ip 0x00000000
$cmd 070 queue 7 ip from any to $NetSmart out
$cmd 080 queue 8 ip from $NetSmart to any in

#NAT
ipfw nat 1 config if igb1 log same_ports

#local
$cmd 105 allow all from any to any via $LanIn
#VPN
$cmd 106 allow all from any to any via tun0
#local Guest Network
$cmd 107 allow all from any to any via $LanGuest
#GIF
$cmd 108 allow ip from any to any via gif0
#local Smart Network
$cmd 109 allow all from any to any via $LanSmart
# loopback
$cmd 110 allow all from any to any via lo0

#Incoming traffic to NAT
$cmd 130 nat 1 ip from any to any in via $LanOut

#NAT from ASG to Inet
$cmd 133 nat 1 ip from $NetIn to any out via $LanOut

#NAT from Guest to Inet
$cmd 135 nat 1 ip from $NetGuest to any out via $LanOut

#NAT from Smart to Inet
$cmd 138 nat 1 ip from $NetSmart to any out via $LanOut

#Allow DYN rules
$cmd 140 check-state

# DNS resolve
#$cmd 052 allow ip from any 53 to me via $LanOut
#$cmd 053 allow ip from me to any 53 via $LanOut
$cmd 172 allow ip from any 53 to any via $LanOut
$cmd 173 allow ip from any to any 53 via $LanOut

# Outgoing server to Internet
$cmd 180 allow ip from me to any out via $LanOut setup keep-state

#IPSEC VPN Smart
$cmd 191 allow udp from xxx.xxx.xxx.xxx to me isakmp
$cmd 192 allow udp from me to xxx.xxx.xxx.xxx isakmp
$cmd 193 allow esp from xxx.xxx.xxx.xxx to me
$cmd 194 allow esp from me to xxx.xxx.xxx.xxx
$cmd 195 allow ipencap from xxx.xxx.xxx.xxx to me
$cmd 196 allow ipencap from me to xxx.xxx.xxx.xxx

# ICMP
$cmd 200 allow icmp from any to any out via $LanOut keep-state

# OpenVPN
$cmd 201 allow tcp from xxx.xxx.xxx.xxx to me 2000 in via ${LanOut}
$cmd 202 allow tcp from me 2000 to xxx.xxx.xxx.xxx out via ${LanOut}
$cmd 203 allow all from any to any in via ${openvpn_if}
$cmd 204 allow all from any to any out via ${openvpn_if}

# Time
$cmd 210 allow udp from any to any 123 out via $LanOut keep-state

#WI-FI Guest
$cmd 221 allow ip from $NetGuest to any out via $LanOut setup keep-state
$cmd 222 allow ip from any to $NetGuest in via $LanOut

#SIP
$cmd 231 allow ip from any to $SIP in via $LanOut
$cmd 232 allow ip from 193.201.230.128/26 to me 5060,11024 in via $LanOut
$cmd 233 allow ip from me 5060,11024 to any out via $LanOut
$cmd 234 allow ip from me to 193.201.230.128/26 out via $LanOut


#NAT
$cmd 241 allow ip from '192.168.180.0{11-29}' to any out via $LanOut setup keep-state
$cmd 242 allow ip from any to '192.168.180.0{11-29}' in via $LanOut

#TV
$cmd 243 allow ip from '192.168.180.0{95-97}' to any out via $LanOut setup keep-state
$cmd 244 allow ip from any to '192.168.180.0{95-97}' in via $LanOut

#Smart
$cmd 251 allow ip from $NetSmart to any out via $LanOut setup keep-state
$cmd 252 allow ip from any to $NetSmart in via $LanOut

#Разрешаем определенный ICMP-трафик из мира к нам
$cmd 261 allow icmp from any to me in via $LanOut icmptype 3,8,12
#Разрешаем определенный ICMP-трафик от нас в мир
$cmd 262 allow icmp from me to any out via $LanOut icmptype 0,3,4,11,12
#Запрещаем прочий ICMP-трафик
$cmd 263 deny log icmp from any to me in via $LanOut icmptype 5,9,10,13,15,17

# Deny all inbound traffic from non-routable reserved address spaces
$cmd 300 deny all from 192.168.0.0/16 to any in via $LanOut
$cmd 301 deny all from 172.16.0.0/12 to any in via $LanOut
$cmd 302 deny all from 10.0.0.0/8 to any in via $LanOut
$cmd 303 deny all from 127.0.0.0/8 to any in via $LanOut
$cmd 304 deny all from 0.0.0.0/8 to any in via $LanOut
$cmd 305 deny all from 169.254.0.0/16 to any in via $LanOut
$cmd 306 deny all from 192.0.2.0/24 to any in via $LanOut
$cmd 307 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 308 deny all from 224.0.0.0/3 to any in via $LanOut

# Deny ident
$cmd 309 deny tcp from any to any 113 in via $LanOut

#Netbios
$cmd 310 deny tcp from any to any 137 via $LanOut
$cmd 311 deny tcp from any to any 138 via $LanOut
$cmd 312 deny tcp from any to any 139 via $LanOut
$cmd 313 deny tcp from any to any 81 via $LanOut

# Deny fragments packets
$cmd 314 deny all from any to any frag in via $LanOut

# Deny ACK packets that did not match the dynamic rule table
$cmd 315 deny log tcp from any to any established in via $LanOut

#Изолируем подсети друг от друга
$cmd 351 allow all from 192.168.185.0/24 to 192.168.180.1/32
$cmd 352 allow all from 192.168.190.0/24 to 192.168.180.1/32
$cmd 353 deny all from 192.168.185.0/24 to 192.168.180.0/23
$cmd 354 deny all from 192.168.180.0/23 to 192.168.185.0/24
$cmd 355 deny all from 192.168.190.0/24 to 192.168.180.0/23
$cmd 356 deny all from 192.168.180.0/24 to 192.168.190.0/24

# Allow in ssh from Internet
$cmd 400 allow tcp from xxx.xxx.xxx.xxx to me 22 in via $LanOut setup limit src-addr 1

# Reject incomming traffic from Inet
$cmd 500 deny log all from any to any in via $LanOut

# Reject outgoing traffic to Inet
$cmd 510 deny log logamount 50 all from any to any out via $LanOut

$cmd 999 deny log all from any to any

Единственный вопрос, можно ли назначать в каждой трубе очередь начиная с первой, т.е. ipfw queue 1 config pipe 3, или же очередь в трубе должна начинаться со следующего номера, ipfw queue 3 config pipe 3?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "FreeBSD Dummynet не работает"  +/
Сообщение от Дум Дум on 03-Июл-17, 13:21 

> Единственный вопрос, можно ли назначать в каждой трубе очередь начиная с первой,
> т.е. ipfw queue 1 config pipe 3, или же очередь в
> трубе должна начинаться со следующего номера, ipfw queue 3 config pipe
> 3?

Как я правильно понял, очереди от труб не зависят, т.е. мы можем выбрать, какую очередь в какую трубу завернуть, а не конфигурируем очереди внутри трубы. Вот из мана ipfw:
pipe pipe_nr
         Connects a    queue to the specified pipe.  Multiple queues (with
         the same or different weights) can    be connected to    the same pipe,
         which specifies the aggregate rate    for the    set of queues.
(т.е. в одну трубу можно завернуть и несколько очередей...)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

11. "FreeBSD Dummynet не работает"  +/
Сообщение от ыы on 01-Июл-17, 09:16 
>[оверквотинг удален]
> # Reject incomming traffic from Inet
> $cmd 400 deny log all from any to any in via $LanOut
> # Reject outgoing traffic to Inet
> $cmd 410 deny log logamount 50 all from any to any out
> via $LanOut
> $cmd 999 deny log all from any to any
> Хочу настроить шейпер.
> Но как только я добавляю параметр net.inet.ip.fw.one_pass=0 в /etc/sysctl.conf, так сразу
> перестают ходить пакеты в локальную сеть.
> Подскажите, как правильно организовать шейпинг?

1. Собираете на virtualbox или vmware сеть из трех машин, две "пользовательские" и по середине которых - "шлюз".
2. настраиваете шлюз, использовав вместо той простыни которую вы привели- минимально необходимый набор правил
3. когда добьетесь работоспособности- переносите конфиг в реальную машину.

А разбираться в вашей простыне, которую сам автор похоже не понимает - реально влом...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру