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

kernel nat freebsd 8.0

Добавлено: 2010-08-12 12:06:09
nordest
Собрал схему



PC1(192.168.10.254)<<------------>> (192.168.10.7)Gateway(1.1.1.1)<<-------------->>PC2(1.1.1.2)

Вопрос в следующем

На шлюзе вопрос трансляции решается kernel nat, в качестве firewall ipfw (ниже приведена выдержка из правил)

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

#------------- pipe И queue NAT config------------------------------

ipfw pipe 1 config bw 500Kbit/s queue 40 gred 0.002/10/30/0.1
ipfw queue 1 config pipe 1 mask src-ip 0xffffffff queue 10 gred 0.002/10/30/0.1
ipfw queue 3 config pipe 1 weight 80
ipfw queue 5 config pipe 1 weight 20
ipfw pipe 2 config bw 500Kbit/s queue 40 gred 0.002/10/30/0.1
ipfw queue 2 config pipe 2 mask src-ip 0xffffffff queue 10 gred 0.002/10/30/0.1
ipfw queue 4 config pipe 2 weight 80
ipfw queue 6 config pipe 2 weight 20

ipfw nat 1 config if $e_int reset same_ports deny_in \
redirect_port tcp 192.168.10.10:80 80 \
redirect_port tcp 192.168.10.10:3389 3389 \
redirect_port tcp 192.168.10.10:25 25

#------------------------------------------------------------------

#--------------------NAT action-----------------------------------
----------OUT-------------------------------------------------------
ipfw add 1000 set 1 queue 2 log ip from any to any out xmit $e_int
ipfw add set 1 queue 4 log  tcp from any to any out xmit $e_int
ipfw add set 1 queue 6 log udp from any to any out xmit $e_int
ipfw add set 1 queue 6 log icmp from any to any out xmit $e_int
ipfw add set 1 nat 1 log ip from any to any out xmit $e_int
ipfw add set 1 allow log ip from any to any out xmit $e_int
#---------------IN-------------------------
ipfw add 2000 set 1 nat 1 log ip from any to any in recv $e_int
ipfw add set 1 queue 1 log  ip from any to any in recv $e_int
ipfw add set 1 queue 3 log tcp from any to any in recv $e_int
ipfw add set 1 queue 5 log udp from any to any in recv $e_int
ipfw add set 1 queue 5 log icmp from any to any in recv $e_int
ipfw add set 1 allow log ip from any to any in recv $e_int
#---------------------------------------------------------------
В изначальном состоянии пинг инициированный PC2(1.1.1.2) --> Gateway(1.1.1.1) не проходит , что предусмотрено опцией deny_in в конфиге ната

Но стоит запустить пинг с PC1(192.168.10.254) ---> PC2(1.1.1.2)

И тут же начинают пролазить пинги с PC2(1.1.1.2) ---> GAteway (1.1.1.1) , и будут продолжаться не скончаемо долго

Также приводится вывод уже загруденных в ОЗУ правил касающихся pipe (в момент пинга PC2(1.1.1.2) ---> Gateway(1.1.1.1)

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

/home/admin/>ipfw pipe show
00001: 500.000 Kbit/s    0 ms   40 sl. 0 queues (1 buckets)
         GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
         burst: 0 Byte
00002: 500.000 Kbit/s    0 ms   40 sl. 0 queues (1 buckets)
         GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
         burst: 0 Byte
q00001: weight 1 pipe 1   10 sl. 1 queues (64 buckets)
         GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  5 ip           1.1.1.2/0             0.0.0.0/0     2311   138660  0    0   0
q00002: weight 1 pipe 2   10 sl. 1 queues (64 buckets)
         GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 20 ip    192.168.10.254/0             0.0.0.0/0     2311   138660  0    0   0
q00003: weight 80 pipe 1   50 sl. 0 queues (1 buckets) droptail
q00004: weight 80 pipe 2   50 sl. 0 queues (1 buckets) droptail
q00005: weight 20 pipe 1   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 icmp         1.1.1.2/0      192.168.10.254/0     2311   138660  0    0   0
q00006: weight 20 pipe 2   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 icmp  192.168.10.254/0             1.1.1.2/0     2311   138660  0    0   0
/home/admin/>
После команды ipfw pipe flush пинг не пролазит

P.S.

Предположение 1. таблица nat, но она должна иметь формат

Local IP Port Global IP Port
192.168.10.254 5433 213.45.67.2 5433

Предположение 2. Динамически созданные Pipe

Re: kernel nat freebsd 8.0

Добавлено: 2010-10-10 13:46:07
Alex Keda
ничё не понял =(