NAT devant Pfsense avec service OpenVPN
-
Bonjour,
Sujet: montage openvpn site2site tap
Environnement :
pfsense 2.2.2-REALEASE
Toutes les pfsenses sont des vms sur un esxi 5.5 avec des vswitch ayant le mode promiscous activé.Pfsense Services(openvpn) === PfSense Frontale (IP publique) === WAN === (IP publique)PfSense Frontale === Pfsense Services(openvpn)
J'ai tenté de faire un nat du port 1194 UDP depuis ma pfsense frontale(me servant à me connecter au net sur mon ESXI) vers ma seconde pfsense qui elle, héberge l'openvpn.
Or, il s'avere que je n'arrive pas à monter le vpn.
Suite à cela j'ai tenté de monter le vpn selon la meme configuration à partir de la pfsense frontale et le résultat fut concluant.
Ce qui m'amène à en déduire qu'une simple regle NAT n'est pas suffisant pour permettre le montage du vpn.
Pourriez vous me donner un indice sur l'élément que j'omets de configurer.
Merci d'avoir pris le temps de lire.
Si des détails manquent, n'hésiter pas à me les demander.
-
Pfsense Services(openvpn) === PfSense Frontale (IP publique) === WAN === (IP publique)PfSense Frontale === Pfsense Services(openvpn)
Dans le cas d'un VPN site-à-site, ce qu'il est intéressant de montrer c'est également le reste du réseau :) surtout lorsque le serveur VPN n'est pas exactement à la frontière entre le LAN et le WAN.
Dans ta description, je ne comprends pas(*****) l'intérêt de la cascade de pfSense mais c'est ton choix 8)
Si je décris ce que je vois, il s'agit de:- 2 sites connectés au WAN derrière un pfSense frontal sur chaque site
- un client / serveur VPN sur le LAN de chaque coté
- l'objectif est d'établir un tunnel TAP entre les 2.
Là aussi je ne discute pas ton choix mais il faut bien être conscient que TAP est assez consommateur et donc moins performant (surtout si tu es en ADSL de part et d'autre) mais il se peut bien sûr que tu en ais besoin ;)
Pour en revenir à ta question initiale: un tunnel entre les 2 sites tel que décrit ci-dessus fonctionne mais il faut faire très (TRES) attention aux routes et routes par défaut.
Je ne sais pas te conseiller plus pour le moment faute de précision de ta part sur la structure de chaque LAN mais je soupçonne un problème à ce niveau là.Fait une recherche, il y a eu un long sujet discuté il y a quelques semaines à propos de VPN site-à-site lors duquel nous avons évoqué ces problématiques.
(*****): ce design a un sens si ta motivation première, respectable ;) est de dire: le firewall ne fait office que de firewall mais dans ce cas, il n'est pas nécessaire d'utiliser pfSense pour faire tourner le client et serveur VPN.
-
Bonjour,
Merci pour ta réponse.
Voici le schema une petit peu revisité et corrigé
topology:
--PfsenseR1DC2(10.1.1.1)-- --PfsenseR1DC1(10.2.1.1)-- DC1--| |--CARP(10.1.1.10)--(10.1.1.254)PfsenseFrontDC1(Public IP)----WAN----(Public IP)PfsenseFrontDC2(10.2.1.254)--CARP(10.2.1.10)--| |--DC2 --PfsenseR2DC2(10.1.1.2)-- --PfsenseR2DC1(10.2.1.2)--
Chaque DC contient 2esxi et deux sans que je vais repartir dans 2 vlans différent.
(*)Concernant le design, la Pfsense frontale de chaque site fait office de firewall indépendant qui pourrait être remplacé à l'avenir par n'importe quel autre distrib remplissant les criteres.
J'ai aussi fait du CARP derriere la frontale car je ne pense pas avoir le droit d'attribuer la meme MAC à deux VM en front (tout ce ceci est sur un esxi et donc chaque IP m'est attribué en fonction de la MAC de la machine.Merci pour l'info du sujet discuté il y a quelques semaine, je m'en vais de ce pas le chercher.
Bonne journée
-
Le fait de rajouter les info dans le cham IPV4 Remote Network et IPV4 Local Network ne crée t il pas automatiquement les routes?
PS: je sais je vis peut etre dans le monde des bizounours ^^"
-
Donc Pour en revenir au problème initial, en prenant comme prédicat que je n'utilise que des pfsense à chaque fois.
Cette connection openvpn fonctionne, je peux pinger n'importe quelle interface
Pfsense frontalDC1---WAN---PfSense frontal DC2
En rajoutant le CARP derrière la Pfsense Frontale et en nattant le port UDP 1194, je n'arrive à monter le tunnel vpn.
Mon hypothèse serait que comme les 2 services vpn ne savent pas qu'ils sont nattés, et qu'ils n'arrivent donc pas à communiquer pour monter le tunnel VPN.
En résumé soit je fais mal mon NAT, soit j'oublie de lui rajouter quelque chose.
J'ai lu des articles concernant le les "manual outbound", je vous avoue ne pas y comprendre beaucoup de choses, et ne pas comprendre si cela interviendrait dans mon casPS: Concernant les routes je les ai ajoutés manuellement, en configurant une gateway sur le server openvpn qui était l'ip attribué au client openVPN, et plus de soucis de connection.
PS2: Apres un petit coup de fil chez SoYouStart(ovh) ils mont confirmé que je ne pouvais pas faire mon CARP en frontale car dans ce cas là, cela nécessiterait que les deux vms aient la même MAC et une interruption de service pointerait son bout du nez.
Merci de la lecture
Si un schéma des vswitchs et des connections physiques au vswitch est nécessaire, je me ferai un plaisir de vous le créer, néanmoins ayant constaté un CARP fonctionnant et une connection internet effective, j'assume le fait que le problème ne viendrait pas de là.
-
Le fait de rajouter les info dans le cham IPV4 Remote Network et IPV4 Local Network ne crée t il pas automatiquement les routes?
Non
cf https://forum.pfsense.org/index.php?topic=92048.0Les problème de route agis simplement sur l’aiguillage de paquets dans les deux sens.
Celui-ci n'impacte pas le liaison en elle même. -
Merci d'avoir pris le temps de lire.
Donc oui j'ai vu ça et j'ai du coup ajouter les routes, cela a réglé mon problème et a conclu que le tunnel pouvait se monter directement (test fait depuis la pfsense frontale donc sans NAT).
Or le tunnel n'arrive pas à se monter une fois que je le fais depuis la pfsense qui est derriere la frontale.
addressage réseau
==>10.1.1.1(Master pfsense) Public IP=Pfsense Frontale=10.1.1.254=>10.1.1.10(CARP VIP)==>| ==>10.1.1.2(Slave pfsense)
Regles NAT
<rule><source> <any><destination><network>wanip</network> <port>1194</port></destination> <protocol>udp</protocol> <target>10.1.1.10</target> <local-port>1194</local-port> <interface>wan</interface> <descr><associated-rule-id>nat_557aa0cfd877b8.73983935</associated-rule-id></descr></any></rule>
-
As-tu agis sur l'onglet "Client Specific Override" ?
Que donne les logs OpenVPN lors d'un essai de connexion ?
Verrifie dans t'es logs firewall que tu n'a pas bloqué le traffic sur un de t'es pfSense.
-
Non je n'ai pas agi sur le client override.
Comme je le disais plus haut la même configuration de vpn fonctionne depuis les pfsense frontales.
Il n'ya que lorsque je tente de le faire avec du nat derriere la pfsense frontale que ça ne fonctionne pas.Les logs du client:
Jun 12 15:20:24 openvpn[97824]: virtual_hash_size = 256 Jun 12 15:20:24 openvpn[97824]: client_connect_script = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: learn_address_script = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: client_disconnect_script = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: client_config_dir = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: ccd_exclusive = DISABLED Jun 12 15:20:24 openvpn[97824]: tmp_dir = '/tmp' Jun 12 15:20:24 openvpn[97824]: push_ifconfig_defined = DISABLED Jun 12 15:20:24 openvpn[97824]: push_ifconfig_local = 0.0.0.0 Jun 12 15:20:24 openvpn[97824]: push_ifconfig_remote_netmask = 0.0.0.0 Jun 12 15:20:24 openvpn[97824]: push_ifconfig_ipv6_defined = DISABLED Jun 12 15:20:24 openvpn[97824]: push_ifconfig_ipv6_local = ::/0 Jun 12 15:20:24 openvpn[97824]: push_ifconfig_ipv6_remote = :: Jun 12 15:20:24 openvpn[97824]: enable_c2c = DISABLED Jun 12 15:20:24 openvpn[97824]: duplicate_cn = DISABLED Jun 12 15:20:24 openvpn[97824]: cf_max = 0 Jun 12 15:20:24 openvpn[97824]: cf_per = 0 Jun 12 15:20:24 openvpn[97824]: max_clients = 1024 Jun 12 15:20:24 openvpn[97824]: max_routes_per_client = 256 Jun 12 15:20:24 openvpn[97824]: auth_user_pass_verify_script = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: auth_user_pass_verify_script_via_file = DISABLED Jun 12 15:20:24 openvpn[97824]: port_share_host = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: port_share_port = 0 Jun 12 15:20:24 openvpn[97824]: client = DISABLED Jun 12 15:20:24 openvpn[97824]: pull = DISABLED Jun 12 15:20:24 openvpn[97824]: auth_user_pass_file = '[UNDEF]' Jun 12 15:20:24 openvpn[97824]: OpenVPN 2.3.6 amd64-portbld-freebsd10.1 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on Apr 8 2015 Jun 12 15:20:24 openvpn[97824]: library versions: OpenSSL 1.0.1l-freebsd 15 Jan 2015, LZO 2.09 Jun 12 15:20:24 openvpn[97824]: MANAGEMENT: unix domain socket listening on /var/etc/openvpn/client1.sock Jun 12 15:20:24 openvpn[97985]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts Jun 12 15:20:24 openvpn[97985]: Static Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Jun 12 15:20:24 openvpn[97985]: Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Jun 12 15:20:24 openvpn[97985]: Static Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Jun 12 15:20:24 openvpn[97985]: Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Jun 12 15:20:24 openvpn[97985]: Socket Buffers: R=[42080->65536] S=[57344->65536] Jun 12 15:20:24 openvpn[97985]: TUN/TAP device ovpnc1 exists previously, keep at program end Jun 12 15:20:24 openvpn[97985]: TUN/TAP device /dev/tap1 opened Jun 12 15:20:24 openvpn[97985]: do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Jun 12 15:20:24 openvpn[97985]: /sbin/ifconfig ovpnc1 10.10.8.2 netmask 255.255.255.248 mtu 1500 up Jun 12 15:20:24 openvpn[97985]: /usr/local/sbin/ovpn-linkup ovpnc1 1500 1592 10.10.8.2 255.255.255.248 init Jun 12 15:20:24 openvpn[97985]: Data Channel MTU parms [ L:1592 D:1450 EF:60 EB:4 ET:32 EL:0 ] Jun 12 15:20:24 openvpn[97985]: Local Options String: 'V4,dev-type tap,link-mtu 1592,tun-mtu 1532,proto UDPv4,ifconfig 10.10.8.0 255.255.255.248,cipher AES-128-CBC,auth SHA1,keysize 128,secret' Jun 12 15:20:24 openvpn[97985]: Expected Remote Options String: 'V4,dev-type tap,link-mtu 1592,tun-mtu 1532,proto UDPv4,ifconfig 10.10.8.0 255.255.255.248,cipher AES-128-CBC,auth SHA1,keysize 128,secret' Jun 12 15:20:24 openvpn[97985]: Local Options hash (VER=V4): 'ac469f59' Jun 12 15:20:24 openvpn[97985]: Expected Remote Options hash (VER=V4): 'ac469f59' Jun 12 15:20:24 openvpn[97985]: UDPv4 link local (bound): [AF_INET]10.2.1.1 Jun 12 15:20:24 openvpn[97985]: UDPv4 link remote: [AF_INET]PfSenseFrontale1:1194 Jun 12 15:20:32 openvpn[97985]: MANAGEMENT: Client connected from /var/etc/openvpn/client1.sock Jun 12 15:20:32 openvpn[97985]: MANAGEMENT: CMD 'state 1' Jun 12 15:20:32 openvpn[97985]: MANAGEMENT: Client disconnected
logs serveur vpn:
Jun 12 15:20:20 openvpn[57151]: push_ifconfig_defined = DISABLED Jun 12 15:20:20 openvpn[57151]: push_ifconfig_local = 0.0.0.0 Jun 12 15:20:20 openvpn[57151]: push_ifconfig_remote_netmask = 0.0.0.0 Jun 12 15:20:20 openvpn[57151]: push_ifconfig_ipv6_defined = DISABLED Jun 12 15:20:20 openvpn[57151]: push_ifconfig_ipv6_local = ::/0 Jun 12 15:20:20 openvpn[57151]: push_ifconfig_ipv6_remote = :: Jun 12 15:20:20 openvpn[57151]: enable_c2c = DISABLED Jun 12 15:20:20 openvpn[57151]: duplicate_cn = DISABLED Jun 12 15:20:20 openvpn[57151]: cf_max = 0 Jun 12 15:20:20 openvpn[57151]: cf_per = 0 Jun 12 15:20:20 openvpn[57151]: max_clients = 1024 Jun 12 15:20:20 openvpn[57151]: max_routes_per_client = 256 Jun 12 15:20:20 openvpn[57151]: auth_user_pass_verify_script = '[UNDEF]' Jun 12 15:20:20 openvpn[57151]: auth_user_pass_verify_script_via_file = DISABLED Jun 12 15:20:20 openvpn[57151]: port_share_host = '[UNDEF]' Jun 12 15:20:20 openvpn[57151]: port_share_port = 0 Jun 12 15:20:20 openvpn[57151]: client = DISABLED Jun 12 15:20:20 openvpn[57151]: pull = DISABLED Jun 12 15:20:20 openvpn[57151]: auth_user_pass_file = '[UNDEF]' Jun 12 15:20:20 openvpn[57151]: OpenVPN 2.3.6 amd64-portbld-freebsd10.1 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on Apr 8 2015 Jun 12 15:20:20 openvpn[57151]: library versions: OpenSSL 1.0.1l-freebsd 15 Jan 2015, LZO 2.09 Jun 12 15:20:20 openvpn[57151]: MANAGEMENT: unix domain socket listening on /var/etc/openvpn/server1.sock Jun 12 15:20:20 openvpn[57254]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts Jun 12 15:20:20 openvpn[57254]: Static Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Jun 12 15:20:20 openvpn[57254]: Static Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Jun 12 15:20:20 openvpn[57254]: Static Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key Jun 12 15:20:20 openvpn[57254]: Static Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Jun 12 15:20:20 openvpn[57254]: Socket Buffers: R=[42080->65536] S=[57344->65536] Jun 12 15:20:20 openvpn[57254]: ROUTE_GATEWAY 10.1.1.254 Jun 12 15:20:20 openvpn[57254]: OpenVPN ROUTE: OpenVPN needs a gateway parameter for a --route option and no default was specified by either --route-gateway or --ifconfig options Jun 12 15:20:20 openvpn[57254]: OpenVPN ROUTE: failed to parse/resolve route for host/network: 10.2.1.0 Jun 12 15:20:20 openvpn[57254]: TUN/TAP device ovpns1 exists previously, keep at program end Jun 12 15:20:20 openvpn[57254]: TUN/TAP device /dev/tap1 opened Jun 12 15:20:20 openvpn[57254]: do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Jun 12 15:20:20 openvpn[57254]: /sbin/ifconfig ovpns1 10.10.8.1 netmask 255.255.255.248 mtu 1500 up Jun 12 15:20:20 openvpn[57254]: /usr/local/sbin/ovpn-linkup ovpns1 1500 1592 10.10.8.1 255.255.255.248 init Jun 12 15:20:20 openvpn[57254]: Data Channel MTU parms [ L:1592 D:1450 EF:60 EB:4 ET:32 EL:0 ] Jun 12 15:20:20 openvpn[57254]: Local Options String: 'V4,dev-type tap,link-mtu 1592,tun-mtu 1532,proto UDPv4,ifconfig 10.10.8.0 255.255.255.248,cipher AES-128-CBC,auth SHA1,keysize 128,secret' Jun 12 15:20:20 openvpn[57254]: Expected Remote Options String: 'V4,dev-type tap,link-mtu 1592,tun-mtu 1532,proto UDPv4,ifconfig 10.10.8.0 255.255.255.248,cipher AES-128-CBC,auth SHA1,keysize 128,secret' Jun 12 15:20:20 openvpn[57254]: Local Options hash (VER=V4): 'ac469f59' Jun 12 15:20:20 openvpn[57254]: Expected Remote Options hash (VER=V4): 'ac469f59' Jun 12 15:20:20 openvpn[57254]: UDPv4 link local (bound): [AF_INET]10.1.1.1:1194 Jun 12 15:20:20 openvpn[57254]: UDPv4 link remote: [undef] Jun 12 15:20:21 openvpn[57254]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock Jun 12 15:20:22 openvpn[57254]: MANAGEMENT: CMD 'status 2' Jun 12 15:20:22 openvpn[57254]: MANAGEMENT: CMD 'quit' Jun 12 15:20:22 openvpn[57254]: MANAGEMENT: Client disconnected Jun 12 15:20:35 openvpn[57254]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock Jun 12 15:20:35 openvpn[57254]: MANAGEMENT: CMD 'state 1' Jun 12 15:20:35 openvpn[57254]: MANAGEMENT: Client disconnected
-
Tu n'a rien vu au niveau des firewall pfSense ? (Les deux frontaux)
Je vois pas d'erreur dans les log, t'es conf openvpn doivent être correcte. (Je te conseil plutôt l'AES-256-CBC)
Hmm le nat ne devrais pas poser soucis, j'ai du NAT sur mon pfSense est un serveur OpenVpn dessus.
Ca fonctionne très bien. Mon pfSense est en frontal.As tu essayer de mettre du NAT sur ton frontal et sur ton serveur ? (je sais pas si ça va résoudre ton problème.)
-
Merci pour ta réponse.
Pour mieux situer ta configuration, ta pfsense est en frontale c'est elle qui a l'ip publique et aussi elle qui a le service openvpn d'actif.
Si oui, cela correspond au test que j'ai effectué afin de savoir si ma conf vpn etait viable, qui fut concluant.
Donc je m'orrient plus sur un soucis de masquerade nat