The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FreeBSD Dummynet не работает, !*! Sindikat88, 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, так сразу перестают ходить пакеты в локальную сеть.
Подскажите, как правильно организовать шейпинг?

  • FreeBSD Dummynet не работает, !*! Дум Дум, 15:20 , 27-Июн-17 (1)
    • FreeBSD Dummynet не работает, !*! Sindikat88, 15:27 , 27-Июн-17 (2)
      > Может 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

      • FreeBSD Dummynet не работает, !*! Дум Дум, 16:32 , 27-Июн-17 (3)
        Фигня какая-то с нумерацией. Пайпы же должны быть 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} должно бы срабатывать даже здесь...

        • FreeBSD Dummynet не работает, !*! Sindikat88, 16:33 , 27-Июн-17 (4)
          >[оверквотинг удален]
          > ответ
          > (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

          • FreeBSD Dummynet не работает, !*! Дум Дум, 13:33 , 28-Июн-17 (5)
            > Скрипты при написании правил не использовались.

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

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

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

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

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

            • FreeBSD Dummynet не работает, !*! Sindikat88, 19:51 , 28-Июн-17 (6)
              >> Скрипты при написании правил не использовались.
              > 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

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

              • FreeBSD Dummynet не работает, !*! Дум Дум, 10:02 , 29-Июн-17 (7)
                > Не совсем понял, какие правила нужно продублировать

                При 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)

                • FreeBSD Dummynet не работает, !*! Дум Дум, 10:08 , 29-Июн-17 (8)
                  Кстати, зачем в конце все правила 200-215, если сразу за ними '65535 deny ip from any to any'? Бдить по ipfw show?

                • FreeBSD Dummynet не работает, !*! Дум Дум, 10:11 , 29-Июн-17 (9)
                  >За 'nat 1 ip from 192.168.180.0/23 to any out via igb1'

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


                  • FreeBSD Dummynet не работает, !*! Дум Дум, 10:19 , 29-Июн-17 (10) +1
                    Причём
                    > '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

                    • FreeBSD Dummynet не работает, !*! Sindikat88, 18:59 , 02-Июл-17 (12)
                      > Причём
                      >> '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?

                      • FreeBSD Dummynet не работает, !*! Дум Дум, 13:21 , 03-Июл-17 (13)

                        > Единственный вопрос, можно ли назначать в каждой трубе очередь начиная с первой,
                        > т.е. 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.
                        (т.е. в одну трубу можно завернуть и несколько очередей...)

  • FreeBSD Dummynet не работает, !*! ыы, 09:16 , 01-Июл-17 (11)
    >[оверквотинг удален]
    > # 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. когда добьетесь работоспособности- переносите конфиг в реальную машину.

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




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

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