Ik heb mijn oplossing gepost hier.
----------------------------------
Ik heb pfSense op gezet met een openvpn client. Ik routeer al het LAN-verkeer via de VPN op basis van regels en laat mijn standaard gateway op mijn ISP staan, geen probleem en het werkt perfect.
Ik wil dat al het DNS-verkeer ook via de VPN gaat. Er moet een uitzondering zijn: queries van pfsense zelf om pool.somevpnprovider.com op te lossen, moeten via een directe internetverbinding gaan, om de volgende reden:
Ik wil dat mijn VPN-client een FQDN gebruikt dat naar een pool van VPN-servers van mijn provider verwijst, zodat ik de beste server heb op het moment dat ik verbind. Wanneer de client wordt gereset of opnieuw opgestart, wordt er opnieuw gedi DNS en kan het verbinden met een andere server uit de pool. Ik kies voor deze strategie boven een vast IP-adres van één VPN-server, zodat ik niet het risico loop te proberen verbinding te maken met een server die down is of te druk bezet.
Oke? Dus al het DNS-verkeer, van eender welke client in mijn netwerk, moet worden afgevangen door en gerouteerd worden naar pfSense om via VPN te worden verzonden. Daarom heb ik een NAT-configuratie gemaakt:
source prot: tcp/udp
source addr: LAN-netwerk
dest addr: niet LAN-netwerk
dest port: 53
NAT IP en poort: pfsense:53
Het probleem is dat ik, om een FQDN te gebruiken in mijn VPN-client, mijn DNS-server van mijn VPN-provider (10.4.0.1) niet kan gebruiken, omdat ik DNS nodig heb om verbinding te maken, maar daarvoor moet VPN al actief zijn. Dit lijkt de meest veilige optie, maar ik kan dat niet gebruiken om de bovenstaande reden.
Momenteel is DNS onder Algemene Instellingen in pfsense ingesteld met 2 servers van dns.watch. Gateway staat op geen.
Dit betekent dat alle DNS-queries via de standaard gateway gaan. Als ik een DNS-test doe vanaf de diagnostiek van pfsense, krijg ik dit (fictieve IP-adressen):
127.0.0.1 - 0 ms
21.22.23.24 - 20 ms
21.22.24.25 - 24 ms
Hier is mijn probleem. Ik wil de gateway wijzigen op de pagina voor algemene instellingen voor de DNS-servers van geen naar de VPN-gateway. Als ik dat doe, blijft localhost goed werken, maar krijgen de 2 DNS-servers geen antwoord wanneer ik de DNS-test van pfsense uitvoer. Ik weet niet wat er gebeurt en hoe localhost wordt opgelost.
Ik weet niet hoe ik dit moet configureren voor wat ik wil. Ipleak.net ziet de dns.watch servers en ik lek niets. 127.0.0.1 blijft werken op de DNS-testpagina van pfsense, maar wat ik niet begrijp is dat de DNS-resolver is geconfigureerd om forward DNS te gebruiken, dus alles wat onder algemene instellingen staat, wordt door localhost gebruikt. Zou localhost daarom niet de dns.watch servers moeten gebruiken, die de VPN-gateway hebben? Maar wanneer ik de VPN uitzet, ligt het internet voor mijn clients plat, maar de DNS-controle van pfsense blijft voor localhost werken. Dit zegt mij dat deze queries rechtstreeks mijn ISP moeten gebruiken.
Ik heb tcpdumps gedaan op de console van pfsense zoals volgt:
tcpdump -i ovpnc1 -nnn -vvv poort 53
Ik heb dat gedaan voor re0 (verbinding met de internetrouter), re1, verbinding met mijn LAN en voor lo0.
Op alle interfaces zie ik verzoeken naar de servers van dns.watch met antwoorden. Ik heb geen idee wat er aan de hand is, sorry.
Dus wie gaat de uitdaging aan om me te helpen en dit correct in te stellen? :P.
Alvast heel erg bedankt jongens!