- FreeBSD PF Firewall
- FreeBSD. PF-Verkehr filtern
- FreeBSD. Streams, Tags und Anker in PF
- FreeBSD. PF Bedingtes Routing
- FreeBSD. Der Pfad des Netzwerkpakets im Kernel. <- Du bist hier
In früheren Artikeln haben wir PF, seine Hauptfunktionen, erörtert und versucht, diese Firewall in verschiedenen Situationen anzuwenden. Es reicht jedoch nicht immer aus, nur zu wissen, welche Regeln und in welcher Reihenfolge in die Konfiguration aufgenommen werden sollen, um das Ziel zu erreichen. Vieles wird nur klar, wenn Sie etwas genauer hinschauen: auf der Ebene des Betriebssystemkerns und wie Firewalls damit interagieren.
Wir werden die Ebenen des Netzwerkkartentreibers (Ebene 2 des OSI-Modells) nicht analysieren, sondern sofort auf Ebene 3 aufsteigen, wo der TCP / IP-Kernel-Stack funktioniert.
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 .