Kein Routing bei pfsense als openvpn-Client



  • Moin *,

    ich teste gerade den VPN-Service von 'ShadeYou'. Dort habe ich eine Testkonfiguration mit CA und Zertifikaten bekommen und diese in einen NetworkManager-Setup eingebunden - das funktionert.

    Als nächsten Schritt wollte ich das mit meiner pfSense (2.2.5) testen. Dazu habe ich die Zertifikate im Cert-Manager hinterlegt und einen openvpn-Client mit den Properties erstellt, die ich aus der Konfiguration auslesen konnte. Damit kann ich scheinbar auch eine Verbindung hinbekommen:

    
    Feb 13 22:22:28 	openvpn[21920]: Initialization Sequence Completed
    Feb 13 22:22:28 	openvpn[21920]: ERROR: FreeBSD route add command failed: external program exited with error status: 1
    Feb 13 22:22:27 	openvpn[21920]: /usr/local/sbin/ovpn-linkup ovpnc4 1500 1559 10.101.0.42 10.101.0.41 init
    Feb 13 22:22:27 	openvpn[21920]: /sbin/ifconfig ovpnc4 10.101.0.42 10.101.0.41 mtu 1500 netmask 255.255.255.255 up
    Feb 13 22:22:27 	openvpn[21920]: do_ifconfig, tt->ipv6=1, tt->did_ifconfig_ipv6_setup=0
    Feb 13 22:22:27 	openvpn[21920]: TUN/TAP device /dev/tun4 opened
    Feb 13 22:22:27 	openvpn[21920]: TUN/TAP device ovpnc4 exists previously, keep at program end
    Feb 13 22:22:25 	openvpn[21920]: [shadeyou.com] Peer Connection Initiated with [AF_INET]178.162.194.40:443
    Feb 13 22:22:23 	openvpn[21920]: TCPv4_CLIENT link remote: [AF_INET]178.162.194.40:443
    Feb 13 22:22:23 	openvpn[21920]: TCPv4_CLIENT link local (bound): [AF_INET] <xxx>Feb 13 22:22:23 	openvpn[21920]: TCP connection established with [AF_INET]178.162.194.40:443
    Feb 13 22:22:22 	openvpn[21920]: Attempting to establish TCP connection with [AF_INET]178.162.194.40:443 [nonblock]
    Feb 13 22:22:22 	openvpn[21920]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
    Feb 13 22:22:22 	openvpn[21920]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
    Feb 13 22:22:22 	openvpn[21638]: library versions: OpenSSL 1.0.1l-freebsd 15 Jan 2015, LZO 2.09
    Feb 13 22:22:22 	openvpn[21638]: OpenVPN 2.3.8 amd64-portbld-freebsd10.1 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on</xxx> 
    

    Leider komme ich aber überhaupt nicht raus, solange der Client gestartet ist.

    Die Konfiguration des Clients:

    
    Server host or address  178.162.194.40
    Server port             443
    IPv4 Remote Network/s   172.16.11.0/24
    
    

    Was ich nicht habe und IMHO noch eingetragen werden müsste, ist die Einstellung von IPv4 Tunnel Network. Wo kann ich diese Information her bekommen? Oder liege ich damit komplett falsch und muss an anderer Stelle suchen?
    TNX

    cu, fork



  • Ein hoffentlich nützliches Detail:

    [2.2.5-RELEASE][root@pfsense]/root: ifconfig
    [...]
    ovpnc4: flags=8051 <up,pointopoint,running,multicast>metric 0 mtu 1500
    options=80000 <linkstate>inet6 fe80::20d:b9ff:fe3e:b229%ovpnc4 prefixlen 64 scopeid 0x17
    inet 10.101.0.26 --> 10.101.0.25 netmask 0xffffffff
    nd6 options=21 <performnud,auto_linklocal>Opened by PID 25099</performnud,auto_linklocal></linkstate></up,pointopoint,running,multicast>
    

    10.101.0.26, solche Adressen verwende ich in meinem Setup nicht. Das scheint vom Anbieter zu kommen.



  • Tunnel Network brauchst du nicht eintragen.

    Hast du denn den Service komplett eingerichtet, wie z.B. hier beschrieben:
    https://forum.pfsense.org/index.php?topic=76015.0



  • Danke für Deinen Hinweis.
    @l4k3k3m4n:

    Hast du denn den Service komplett eingerichtet, wie z.B. hier beschrieben:

    Jain. In Teilen ja; was ich nicht gemacht habe:
    *Create OpenVPN interface
    *Configure NAT Rules
    Die Recherche zu dem Thema ist/war etwas verwirrend. Ich fand unterschiedliche Vorgehensweisen an unterschiedlichen Quellen. Beispielsweise wird im pfSense-Buch von Buechler und Pingle in Kapitel 15.5 dieses nicht gemacht auf Client-Seite. Ist allerdings recht betagt und scheinbar hat sich da auch was geändert.

    Also ist das in dem verlinkten Tutorial die aktuell richtige Vorgehensweise?



  • Was heißt schon aktuell richtige Vorgehensweise.
    Du musst so ein Interface anlegen damit ein Gateway erstellt wird.
    Das kannst du dann in deinen Firewallregeln benutzen um die gewünschten Dienste und/oder IPs darüber zu routen.

    Und NAT brauchst du auch. Dein VPN Anbieter wird deine privaten Netze ja nicht routen  8)



  • Jetzt habe ich die Referenz wiedergefunden, welche ich bei der Client-Konfiguration befolgt habe:

    https://doc.pfsense.org/index.php/OpenVPN_Site-to-Site_PKI_(SSL)
    Die Seite ist noch recht frisch: last modified on 30 November 2015

    Dabei hatte ich den Eindruck, das wäre alles…



  • Bei deinem Link wird ein Site-to-site VPN beschrieben.
    Sowas willst du aber nicht machen  8)


  • LAYER 8 Moderator

    fork: Genau, was l4k3k3m4n sagt. Du gehst von einer Site2Site Kopplung aus, bei der lediglich zwei private Netze gekoppelt werden. Dort werden dann auch nur diese Netze geroutet. Du richtest aber eine Road-Warrior bzw. Client/Server Verbindung ein und willst zusätzlich noch über diesen Link, der eigentlich für einen einzelnen Rechner gedacht ist, mehrere drübertunneln. Deshalb muss auch das Interface für das Gateway angelegt und NAT und Regeln hinzugefügt werden, damit du selektiv bestimmen kannst, was übers VPN soll und was nicht.

    Grüße



  • Danke Euch beiden - da werde ich wohl etwas weiter ausholen müssen…



  • Ich habe die fehlenden Schritte nun nachgeholt. Leider habe ich trotzdem noch keinen Erfolg, ich komme nicht raus.

    Zwar sehe ich diesen Eintrag:

    Feb 21 09:04:41 pfsense openvpn[85446]: Initialization Sequence Completed
    
    

    Das neu angelegte Interface 'PIAVPN' ist zwar da, aber es bekommt keine IP:

    *** Welcome to pfSense 2.2.5-RELEASE-pfSense (amd64) on pfsense ***
    
     WAN (wan)       -> pppoe0     -> v4/PPPoE: [xxx]/32
     VPN (lan)       -> ovpns2     -> v4: 172.16.17.1/32
     VLAN13 (opt1)   -> lagg0_vlan13 -> v4: 172.16.13.1/24
     VLAN11 (opt2)   -> lagg0_vlan11 -> v4: 172.16.11.1/24
     VLAN12 (opt3)   -> lagg0_vlan12 -> v4: 172.16.12.1/24
     VLAN14 (opt4)   -> lagg0_vlan14 -> v4: 172.16.14.1/24
     VLAN10 (opt5)   -> lagg0_vlan10 -> v4: 172.16.10.1/24
     VLAN16 (opt6)   -> lagg0_vlan16 -> v4: 172.16.16.1/24
     VLAN15 (opt7)   -> lagg0_vlan15 -> v4: 172.16.15.1/24
     VLAN18 (opt8)   -> lagg0_vlan18 -> v4: 172.16.18.1/24
     VLAN19 (opt9)   -> lagg0_vlan19 -> v4: 172.16.19.1/24
     VLAN20 (opt10)  -> lagg0_vlan20 -> v4: 172.16.20.1/24
     VLAN21 (opt11)  -> lagg0_vlan21 -> v4: 172.16.21.1/24
     PIAVPN (opt12)  -> re1        -> 
    
    

    Ich habe die NAT-Konfiguration testweise erst mal für das Subnetz 172.16.11.1/24 umgesetzt, dort ist mein Test-Client auch angesiedelt.

    Übersicht über die NAT-Konfiguration:

    Bin leider etwas unter Zeitdruck, weil der Test-Account des Anbieters heute abläuft…
    TNX

    cu, fork



  • Ziemlich genau jede Minute tritt das hier auf:

    Feb 21 11:47:07 	openvpn[36799]: MANAGEMENT: Client disconnected
    Feb 21 11:47:07 	openvpn[36799]: MANAGEMENT: CMD 'quit'
    Feb 21 11:47:07 	openvpn[36799]: MANAGEMENT: CMD 'status 2'
    Feb 21 11:47:07 	openvpn[36799]: MANAGEMENT: Client connected from /var/etc/openvpn/server2.sock
    

    EDIT: Das läßt sich aber relativ eindeutig darauf zurückführen, dass auf dieser pfSense auch noch ein openvpn-Server läuft, evtl. in Zusammenhang mit dem Dashboard. Jedenfalls tauchen diese Meldungen dann nicht auf, wenn der Server down ist. Das ignoriere ich jetzt mal…



  • Wenn der openvpn-Client disabled ist, komme ich raus. Dann wird das Interface auch in irgendeiner Form verwendet:

    EDIT: Auch wenn der Client enabled ist, wird das Interface genutzt. Nur nicht mehr aus 172.16.11.0/32 heraus.



  • Langsam gehen mir die Ideen aus. Hier die LOGs vom Start des Clients:

    Feb 21 16:41:20 	openvpn[79228]: Initialization Sequence Completed
    Feb 21 16:41:20 	openvpn[79228]: /sbin/route add -net 10.102.0.1 10.102.0.29 255.255.255.255
    Feb 21 16:41:20 	openvpn[79228]: /sbin/route add -net 10.102.0.0 10.102.0.29 255.255.0.0
    Feb 21 16:41:20 	openvpn[79228]: /sbin/route add -net 128.0.0.0 10.102.0.29 128.0.0.0
    Feb 21 16:41:20 	openvpn[79228]: /sbin/route add -net 0.0.0.0 10.102.0.29 128.0.0.0
    Feb 21 16:41:20 	openvpn[79228]: /sbin/route add -net 178.162.194.40 178.8.208.1 255.255.255.255
    Feb 21 16:41:20 	openvpn[79228]: /usr/local/sbin/ovpn-linkup ovpnc4 1500 1559 10.102.0.30 10.102.0.29 init
    Feb 21 16:41:20 	openvpn[79228]: /sbin/ifconfig ovpnc4 10.102.0.30 10.102.0.29 mtu 1500 netmask 255.255.255.255 up
    Feb 21 16:41:20 	openvpn[79228]: do_ifconfig, tt->ipv6=1, tt->did_ifconfig_ipv6_setup=0
    Feb 21 16:41:20 	openvpn[79228]: TUN/TAP device /dev/tun4 opened
    Feb 21 16:41:20 	openvpn[79228]: TUN/TAP device ovpnc4 exists previously, keep at program end
    Feb 21 16:41:20 	openvpn[79228]: ROUTE_GATEWAY 178.8.208.1
    Feb 21 16:41:20 	openvpn[79228]: OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
    Feb 21 16:41:20 	openvpn[79228]: OPTIONS IMPORT: route options modified
    Feb 21 16:41:20 	openvpn[79228]: OPTIONS IMPORT: --ifconfig/up options modified
    Feb 21 16:41:20 	openvpn[79228]: Socket flags: TCP_NODELAY=1 succeeded
    Feb 21 16:41:20 	openvpn[79228]: OPTIONS IMPORT: --socket-flags option modified
    Feb 21 16:41:20 	openvpn[79228]: OPTIONS IMPORT: timers and/or timeouts modified
    Feb 21 16:41:20 	openvpn[79228]: PUSH: Received control message: 'PUSH_REPLY,route 10.102.0.0 255.255.0.0,redirect-gateway def1,dhcp-option DNS 10.102.0.1,route 10.102.0.1,topology net30,ping 10,ping-restart 120,socket-flags TCP_NODELAY,ifconfig 10.102.0.30 10.102.0.29'
    Feb 21 16:41:20 	openvpn[79228]: SENT CONTROL [shadeyou.com]: 'PUSH_REQUEST' (status=1)
    Feb 21 16:41:18 	openvpn[79228]: [shadeyou.com] Peer Connection Initiated with [AF_INET]178.162.194.40:443
    Feb 21 16:41:18 	openvpn[79228]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
    Feb 21 16:41:18 	openvpn[79228]: Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
    Feb 21 16:41:18 	openvpn[79228]: Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
    Feb 21 16:41:18 	openvpn[79228]: Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
    Feb 21 16:41:18 	openvpn[79228]: Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
    Feb 21 16:41:17 	openvpn[79228]: VERIFY OK: depth=0, C=RU, ST=RU-LEN, L=Saint Petersburg, O=ShadeYou.com, CN=shadeyou.com, emailAddress=support@shadeyou.com
    Feb 21 16:41:17 	openvpn[79228]: VERIFY OK: depth=1, C=RU, ST=RU-LEN, L=Saint Petersburg, O=ShadeYou.com, CN=ShadeYou.com CA, emailAddress=support@shadeyou.com
    Feb 21 16:41:17 	openvpn[79228]: TLS: Initial packet from [AF_INET]178.162.194.40:443, sid=e55ca34a 32c1706f
    Feb 21 16:41:16 	openvpn[79228]: TCPv4_CLIENT link remote: [AF_INET]178.162.194.40:443
    Feb 21 16:41:16 	openvpn[79228]: TCPv4_CLIENT link local (bound): [AF_INET] <xxx>Feb 21 16:41:16 	openvpn[79228]: TCP connection established with [AF_INET]178.162.194.40:443
    Feb 21 16:41:15 	openvpn[79228]: Attempting to establish TCP connection with [AF_INET]178.162.194.40:443 [nonblock]
    Feb 21 16:41:15 	openvpn[79228]: Expected Remote Options hash (VER=V4): '898ae6c6'
    Feb 21 16:41:15 	openvpn[79228]: Local Options hash (VER=V4): '5cb3f8dc'
    Feb 21 16:41:15 	openvpn[79228]: Expected Remote Options String: 'V4,dev-type tun,link-mtu 1559,tun-mtu 1500,proto TCPv4_SERVER,cipher AES-256-CBC,auth SHA1,keysize 256,key-method 2,tls-server'
    Feb 21 16:41:15 	openvpn[79228]: Local Options String: 'V4,dev-type tun,link-mtu 1559,tun-mtu 1500,proto TCPv4_CLIENT,cipher AES-256-CBC,auth SHA1,keysize 256,key-method 2,tls-client'
    Feb 21 16:41:15 	openvpn[79228]: Data Channel MTU parms [ L:1559 D:1450 EF:59 EB:12 ET:0 EL:3 ]
    Feb 21 16:41:15 	openvpn[79228]: Socket Buffers: R=[65228->65536] S=[65228->65536]
    Feb 21 16:41:15 	openvpn[79228]: Control Channel MTU parms [ L:1559 D:140 EF:40 EB:0 ET:0 EL:3 ]
    Feb 21 16:41:15 	openvpn[79228]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
    Feb 21 16:41:15 	openvpn[79228]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
    Feb 21 16:41:15 	openvpn[79228]: MANAGEMENT: unix domain socket listening on /var/etc/openvpn/client4.sock
    Feb 21 16:41:15 	openvpn[79182]: library versions: OpenSSL 1.0.1l-freebsd 15 Jan 2015, LZO 2.09
    Feb 21 16:41:15 	openvpn[79182]: OpenVPN 2.3.8 amd64-portbld-freebsd10.1 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on Aug 21 2015
    Feb 21 16:41:15 	openvpn[79182]: auth_user_pass_file = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: pull = ENABLED
    Feb 21 16:41:15 	openvpn[79182]: client = ENABLED
    Feb 21 16:41:15 	openvpn[79182]: port_share_port = 0
    Feb 21 16:41:15 	openvpn[79182]: port_share_host = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: auth_user_pass_verify_script_via_file = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: auth_user_pass_verify_script = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: max_routes_per_client = 256
    Feb 21 16:41:15 	openvpn[79182]: max_clients = 1024
    Feb 21 16:41:15 	openvpn[79182]: cf_per = 0
    Feb 21 16:41:15 	openvpn[79182]: cf_max = 0
    Feb 21 16:41:15 	openvpn[79182]: duplicate_cn = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: enable_c2c = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_ipv6_remote = ::
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_ipv6_local = ::/0
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_ipv6_defined = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_remote_netmask = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_local = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: push_ifconfig_defined = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: tmp_dir = '/tmp'
    Feb 21 16:41:15 	openvpn[79182]: ccd_exclusive = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: client_config_dir = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: client_disconnect_script = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: learn_address_script = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: client_connect_script = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: virtual_hash_size = 256
    Feb 21 16:41:15 	openvpn[79182]: real_hash_size = 256
    Feb 21 16:41:15 	openvpn[79182]: tcp_queue_limit = 64
    Feb 21 16:41:15 	openvpn[79182]: n_bcast_buf = 256
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_ipv6_pool_netbits = 0
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_ipv6_pool_base = ::
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_ipv6_pool_defined = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_persist_refresh_freq = 600
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_persist_filename = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_netmask = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_end = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_start = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: ifconfig_pool_defined = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: server_bridge_pool_end = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: server_bridge_pool_start = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: server_bridge_netmask = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: server_bridge_ip = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: server_netbits_ipv6 = 0
    Feb 21 16:41:15 	openvpn[79182]: server_network_ipv6 = ::
    Feb 21 16:41:15 	openvpn[79182]: server_netmask = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: server_network = 0.0.0.0
    Feb 21 16:41:15 	openvpn[79182]: tls_auth_file = '[UNDEF]'
    Feb 21 16:41:15 	openvpn[79182]: tls_exit = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: push_peer_info = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: single_session = DISABLED
    Feb 21 16:41:15 	openvpn[79182]: transition_window = 3600
    Feb 21 16:41:15 	openvpn[79182]: handshake_window = 60
    Feb 21 16:41:15 	openvpn[79182]: renegotiate_seconds = 3600
    Feb 21 16:41:15 	openvpn[79182]: renegotiate_packets = 0
    Feb 21 16:41:15 	openvpn[79182]: renegotiate_bytes = 0</xxx>
    


  • Der Verbindungsaufbau sieht nun ja in Ordnung aus, im Gegensatz zu oben, da gab es ein Problem beim Hinzufügen der Routen.

    Für das Interface hast du den richtigen Port (ovpnc4) genommen und es dann auch aktiviert und gespeichert?
    Wenn ja, sollte es eigentliche funktionieren, wenn du auch eine Regel auf dem Test-Interface 172.16.11.1/24 hast, die den ausgehenden Traffic auf das VPN-Gateway schickt.



  • @viragomann:

    Für das Interface hast du den richtigen Port (ovpnc4) genommen und es dann auch aktiviert und gespeichert?

    Das habe ich nicht verstanden. Wo kann ich das tun?
    TNX



  • Auf Interfaces > (assign) siehst du links die Liste deiner Interfaces und rechts davon den jeweils zugeordneten "Network port". Unter der Liste steht "Available network ports", hier wählst du erst einen (virtuellen) Anschluss aus, in deinem Fall ovpnc4, und klickst dann das "+" zum Hinzufügen. Dann musst du das neue Interface auswählen, aktivieren, optional einen Namen vergeben und speichern.



  • Ja, genau das fehlte offensichtlich - vielen herzlichen Dank!

    Zuordnung nun:

    *** Welcome to pfSense 2.2.5-RELEASE-pfSense (amd64) on pfsense ***
    
     WAN (wan)       -> pppoe0     -> v4/PPPoE: <xxx>/32
     VPN (lan)       -> ovpns2     -> v4: 172.16.17.1/32
     VLAN13 (opt1)   -> lagg0_vlan13 -> v4: 172.16.13.1/24
     VLAN11 (opt2)   -> lagg0_vlan11 -> v4: 172.16.11.1/24
     VLAN12 (opt3)   -> lagg0_vlan12 -> v4: 172.16.12.1/24
     VLAN14 (opt4)   -> lagg0_vlan14 -> v4: 172.16.14.1/24
     VLAN10 (opt5)   -> lagg0_vlan10 -> v4: 172.16.10.1/24
     VLAN16 (opt6)   -> lagg0_vlan16 -> v4: 172.16.16.1/24
     VLAN15 (opt7)   -> lagg0_vlan15 -> v4: 172.16.15.1/24
     VLAN18 (opt8)   -> lagg0_vlan18 -> v4: 172.16.18.1/24
     VLAN19 (opt9)   -> lagg0_vlan19 -> v4: 172.16.19.1/24
     VLAN20 (opt10)  -> lagg0_vlan20 -> v4: 172.16.20.1/24
     VLAN21 (opt11)  -> lagg0_vlan21 -> v4: 172.16.21.1/24
     PIAVPN (opt12)  -> ovpnc4     -> v4: 10.101.0.34/32</xxx>
    

Log in to reply