Ik heb in mijn netwerk een machine met daarop proxmox draaien. Op deze machine draaien allerlei VMs en containers, waaronder m'n PiHole en een op StrongSwan gebaseerde VPN server. Mijn Router is een UniFi UDR en ik maak gebruik van de zone based firewall.
Mijn VPN clients zijn allemaal Mac en iOS apparaten en ik wil dat, wanneer ik op een ander wifi netwerk dan thuis ben, of wanneer ik op 4G/5G zit, de telefoons automatisch een VPN verbinding opzetten. Daarvoor is mijn keuze gevallen op een configuratie met IKEv2, en na wat gefröbel met mobileconfig bestandjes werkt dit nu goed. Mijn telefoons hebben een IPv4 en IPv6 verbinding via de VPN en maken netjes gebruik van de PiHole, wat de hoeveelheid reclame vermindert. Tot zover prima dus, en ik ben op zich wel tevreden met deze oplossing.
Echter... voor we verder gaan even wat meer details over mijn configuratie:
Swanctl.conf:
En dan op de Linux host waar Strongswan op draait, naast de standaard instellingen voor IP forwarding:
Deze laatste zorgen ervoor dat verkeer van de VPN geNAT wordt, en op die manier mijn netwerk binnenkomt.
Iets in mij wil van die dubbele NAT af, maar daar kom ik toch niet hemelaam uit.
Wat heb ik geprobeerd:
Ik kan vanaf de VPN clients met geen mogelijkheid via IPv6 bij andere machines op mijn LAN. Mijn vermoeden is dat ik nog ergens een firewall rule mis, die verkeer vanaf mijn VPN subnets toelaat op mijn gewone netwerk (de zone 'internal') maar ik kan nergens vinden hoe ik dit voor elkaar ga krijgen.
Wie heeft voor mij de gouden tip?
Mijn VPN clients zijn allemaal Mac en iOS apparaten en ik wil dat, wanneer ik op een ander wifi netwerk dan thuis ben, of wanneer ik op 4G/5G zit, de telefoons automatisch een VPN verbinding opzetten. Daarvoor is mijn keuze gevallen op een configuratie met IKEv2, en na wat gefröbel met mobileconfig bestandjes werkt dit nu goed. Mijn telefoons hebben een IPv4 en IPv6 verbinding via de VPN en maken netjes gebruik van de PiHole, wat de hoeveelheid reclame vermindert. Tot zover prima dus, en ik ben op zich wel tevreden met deze oplossing.
Echter... voor we verder gaan even wat meer details over mijn configuratie:
Swanctl.conf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| connections { vpn { dpd_delay = 35s encap = yes pools = ipv4,ipv6 proposals = aes256gcm16-prfsha384-ecp384,aes256gcm16-prfsha384-ecp521 rekey_time = 0 version = 2 local { auth = psk id = <mijn publieke IPv4 adres> } remote { auth = psk id = %any } children { vpn-child { esp_proposals = aes256gcm16-ecp384,aes256gcm16-ecp521 local_ts = 0.0.0.0/0,::/0 # LAN subnets rekey_time = 0 updown = /usr/lib/ipsec/_updown iptables } icmpv6-ns { local_ts = ::/0[ipv6-icmp/135] remote_ts = ::/0[ipv6-icmp/135] mode = pass start_action = trap } icmpv6-na { local_ts = ::/0[ipv6-icmp/136] remote_ts = ::/0[ipv6-icmp/136] mode = pass start_action = trap } } pools = vpn-ipv4-pool,vpn-ipv6-pool } } secrets { ike-psk { secret = "<geheim>" } } pools { vpn-ipv4-pool { addrs = 10.23.100.0/24 # IPv4 range for VPN clients } vpn-ipv6-pool { addrs = fd6a:6ce3:c8d8:7caa::/64 # IPv6 range for VPN clients } } |
En dan op de Linux host waar Strongswan op draait, naast de standaard instellingen voor IP forwarding:
code:
1
2
| iptables -t nat -A POSTROUTING -s 10.23.100.0/24 -o ens18 -j MASQUERADE Ip6tables -t nat -A POSTROUTING -s fd6a:6ce3:c8d8:7caa::/64 -o ens18 -j MASQUERADE |
Deze laatste zorgen ervoor dat verkeer van de VPN geNAT wordt, en op die manier mijn netwerk binnenkomt.
Iets in mij wil van die dubbele NAT af, maar daar kom ik toch niet hemelaam uit.
Wat heb ik geprobeerd:
- Ik heb mijn Strongswan.conf aangepast om voor IPV6 een subnet te gebruiken wat aansluit bij de delegation prefix die ik van Ziggo krijg. IPv4 zou ik al kunnen routeren, de NAT daarvoor kan mijn UniFi router verzorgen.
- Ik heb de iptables voor nat weer uitgezet.
- Ik heb normale routing aangezet voor de subnets die door de VPN clients gebruikt moeten worden:
code:1 2 3 4
ip route add 10.23.100.0/24 via 10.0.50.1 sysctl net.ipv4.conf.all.send_redirects=0 sysctl net.ipv4.conf.default.send_redirects=0 ip -6 route add <ipv6 prefix>:1b23::/64 via <ipv6 adres van router>:1b00::1
- Ik heb op mijn UDR static routes aangemaakt voor deze zelfde subnets, net het IP adres van de VPN server als 'next hop'.
Ik kan vanaf de VPN clients met geen mogelijkheid via IPv6 bij andere machines op mijn LAN. Mijn vermoeden is dat ik nog ergens een firewall rule mis, die verkeer vanaf mijn VPN subnets toelaat op mijn gewone netwerk (de zone 'internal') maar ik kan nergens vinden hoe ik dit voor elkaar ga krijgen.
Wie heeft voor mij de gouden tip?