- Firewall FreeBSD PF
- FreeBSD. Filtragem de tráfego PF
- FreeBSD. streams, tags e âncoras em PF
- FreeBSD. Roteamento Condicional PF
- FreeBSD. O caminho do pacote de rede dentro do kernel. <- você está aqui
Em artigos anteriores, discutimos o PF, seus principais recursos, e tentamos aplicar esse firewall em várias situações. No entanto, o simples conhecimento de quais regras e em que sequência devem ser colocadas na configuração nem sempre é suficiente para atingir o objetivo. Muito fica claro apenas se você olhar um pouco mais a fundo: no nível do kernel do sistema operacional e como os firewalls interagem com ele.
Não analisaremos os níveis do driver da placa de rede (nível 2 do modelo OSI), mas iremos imediatamente para o nível 3, onde funciona a pilha do kernel tcp / ip.
mbuf. , , : a , (next hop), ttl, , . . . mbuf .
ip_input()
ip_input().
- ttl .
- ALTQ ( ), .
- IPSEC_CAPS(), ipsec, , , , . ipsec ip_input(), .
- pfil. . , , . rc.conf PF, .
- . — IP, ip_forward(). .
- (reassemble), .
- IPSEC_INPUT().
- , . — icmp error ip_output().
, .
ip_forward()
.
- ipsec — IPSEC_FORWARD().
- . , net.inet.ip.forwarding 1. - , icmp error ip_output().
- , , icmp_redirect, .
- ttl.
- ip_output().
ip_output()
.
- . , .
- ipsec — IPSEC_OUTPUT().
- pfil — .
- , (dst), (fib) . , . , .
- , .
- .
, . , . , . , , , . mbuf.
, pf in out.
pass in on re0 inet...
ip_input. out — ip_output.
pass out quick on $ExtIf2 ...
anchors .
route-to reply-to next hop :
pass in quick on $ExtIf2 reply-to ($ExtIf2 $ExtIf2Gw ) tagged DSTNAT pass in quick on $IntIf1 route-to ( $Tun1 $Tun1Gw ) from ($IntIf1:network)
rtable:
pass in quick on $IntIf2 from { $IntIf2Net } rtable 1 tag PASS
FreeBSD, , , , .
— . , , , , , VPN , , ftp-, web- jabber-, IP-… , . 35 , 9 .