Nftables und ipsec
Zur Navigation springen
Zur Suche springen
Verbindungsaufbau
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 10:46:55.688317 IP 10.82.227.22.500 > 10.82.227.12.500: isakmp: parent_sa ikev2_init[I] 10:46:55.789900 IP 10.82.227.12.500 > 10.82.227.22.500: isakmp: parent_sa ikev2_init[R] 10:46:55.846630 IP 10.82.227.22.500 > 10.82.227.12.500: isakmp: child_sa ikev2_auth[I] 10:46:55.850998 IP 10.82.227.12.500 > 10.82.227.22.500: isakmp: child_sa ikev2_auth[R]
Verschlüsselter Verkehr
10:47:28.011055 IP 10.82.227.22 > 10.82.227.12: ESP(spi=0xc25a59e4,seq=0x1), length 136 10:47:28.011282 IP 10.82.227.12 > 10.82.227.22: ESP(spi=0xc13ff7cb,seq=0x1), length 136 10:47:29.012067 IP 10.82.227.22 > 10.82.227.12: ESP(spi=0xc25a59e4,seq=0x2), length 136 10:47:29.012211 IP 10.82.227.12 > 10.82.227.22: ESP(spi=0xc13ff7cb,seq=0x2), length 136
Firewall Regeln
VPN Traffic
- Eingehendes IKE erlauben
- nft add rule inet filter input iifname "$WANDEV" udp dport 500 ct state new accept
- Ausgehendes IKE erlauben
- nft add rule inet filter output oifname "$WANDEV" udp dport 500 ct state new accept
- Eingehendes NAT-TRAVERSAL erlauben
- nft add rule inet filter input iifname "$WANDEV" udp dport 4500 ct state new accept
- Ausgehendes NAT-TRAVERSAL erlauben
- nft add rule inet filter output oifname "$WANDEV" udp dport 4500 ct state new accept
- Eingehendes ESP erlauben
- nft add rule inet filter input iifname "$WANDEV" proto esp ct state new accept
- Ausgehendes ESP erlauben
- nft add rule inet filter output oifname "$WANDEV" proto esp ct state new accept
Realer Traffic
- Verwenden von ipsec in und ipsec out
- Funktion
- Beim Entpacken des VPN Traffic wird das Paket im Kernel als IPsec markiert.
- Dies kann später in der forward-Kette mit ipsec geprüft werden.
- Eingehender Traffic von dem anderen Netz ins eigene erlauben
- nft add rule inet filter forward iifname "$WANDEV" oifname "$LANDEV" ip saddr $DIENEN ip daddr $LAN ipsec in ct state new accept
- Ausgehender Traffic vom eigenen Netz ins andere erlauben
- nft add rule inet filter forward iifname "$LANDEV" oifname "$WANDEV" ip saddr $LAN ip daddr $DIENET ipsec out ct state new accept
Zu Bedenken
- Verkehr, der in den VPN-Tunnel soll, muss vom SNAT ausgenommen werden
- nft add rule ip nat postrouting oifname "$WANDEV" ip saddr $LAN ip daddr $DIENET return