Anzeige:
Ergebnis 1 bis 12 von 12

Thema: openvpn auf debian eingerichtet, probleme mit iptables und routing

  1. #1
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6

    openvpn auf debian eingerichtet, probleme mit iptables und routing

    hallo liebe linuxforen gemeinde,

    lange profitiere ich schon von euch, da mich oftmals google-links zu euch fuehren, oder ihr meine priorisierte anlaufstelle seit. danke dafuer.

    gestern habe ich angefangen auf meinem rootserver (debian) openvpn zu installieren und zu konfigurieren.

    mein derzeitiger status beschreibt sich folgendermaßen. ich bin btw. nach folgendem tutorial vorgegangen. zumindest teilweise.
    ( http://www.linuxforen.de/forums/showthread.php?t=169354 )

    ich kann von meinem client aus, (windows 7 ulti 64bit) ueber openvpn gui eine verbindung initialisieren. stabil. solange meine fw (iptables) nicht auf der gegenseite rennt. diese ist allerdings unablaessig. es folgt der winzige auszug meines iptables scriptes, welches auf das vpn bezogen ist:

    ## IP VPN FORWARDING SHIT ## // PROBLEM MIT IPTABLES BEHOBEN // <- EDIT (es fehlte zeile 3)
    iptables -A FORWARD -i tun0 -j ACCEPT
    iptables -A INPUT -i tun0 -m state --state NEW -p udp --dport 59000 -j ACCEPT
    iptables -A INPUT -i tun0 -j ACCEPT

    nun folgt die openvpn server config, mit dieser wird openvpn auf meinem root initialisiert:

    dev tun
    proto udp
    port 59000
    ifconfig 10.1.0.1 10.1.0.2
    tls-server
    dh /etc/openvpn/zertifikate/dh2048.pem
    ca /etc/openvpn/zertifikate/ca.crt
    cert /etc/openvpn/zertifikate/server.crt
    key /etc/openvpn/zertifikate/server.key
    user nobody
    group nogroup
    status /etc/openvpn/openvpn-status.log
    comp-lzo
    verb 3

    nun folgt dies von meinem windows client genutztem openvpn gui:

    dev tun
    remote XX.XXX.XX.XXX ##remoteIP
    ifconfig 10.1.0.2 10.1.0.1
    tls-client
    ca E:\\miragecertz\\ca.crt
    cert E:\\miragecertz\\client1.crt
    key E:\\miragecertz\\client1.key
    port 59000
    user nobody
    group nogroup
    comp-lzo
    verb 3

    nun bräuchte ich noch hilfestellung um mit meinem vpn client ueber den vpn server auf internet zugreifen zu koennen. sprich routing. wird das in iptables gemacht? Oo

    falls ich noch etwas vergessen haben sollte, um mit eine umfassende hilfestellung leisten zu koennen, gebt bitte laut.

    vielen dank fuer die zeit die ihr euch nehmt um mit mir an diesem problem zu arbeiten.

    lg, krutt
    Geändert von krutt (03.05.11 um 10:11 Uhr) Grund: weiter im text..

  2. #2
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    magst auch du deine config in CODE tag packen?
    Soll der gesamte traffic von dem client über den Server geleitet werden? Wenn ja, dann sollte dein openvpn Server die option "redirect-gateway def1" an den client pushen.

    Wie welches Netz erreichbar ist steht in der Routing Tabelle.

    gruß Felix

    PS: und last doch endlich mal die Finger vom privaten Class-A Block
    Geändert von ctFreez (03.05.11 um 13:07 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6
    hallo felix,

    danke fuer diesen hinweis.
    bin mir nicht sicher ob das auch hier her gehoert, aber kannst du mir noch sagen, wie ich meinem windows 7 ultimate client sage, das er nur die vpn verbindung nutzen soll?

    danke

  4. #4
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    du solltest darauf achten, das der openvpn client mit admin rechten läuft, da es ihm sonst verboten ist den std. Gateway neu zu setzten.

    google mal nach "redirect-gateway def1" da solltest du eigentlich alles finden, was du brauchst. Dich pushe die option vom server aus richtung client.

    gruß Felix

  5. #5
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6
    danke felix,

    ja, mein vpngui rennt mit admin rechten. habe "redirect-gateway def1" in meine .ovpn im server gesetzt. dennoch surfe ich vom client aus mit meine ip. warum?

    greetz

  6. #6
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    du must die option an den client pushen
    server.conf
    Code:
    push "redirect-gateway def1"
    damit der client eine expliziete Route zum openvpn Server einrichtet, anschlißend wird der alte default gw gelöscht und der neue default gw über den openvpn Server eingetragen.
    kontrolieren kannst du die einstellung auf dem client mit "route print"
    ausserdem solltest du einen entsprechenden eintrag im openvpn client log finden und einen eintrag im Server Log, das die option gepusht wurde.

    Es ist übrigens deutlich einfacher nach zu volziehen, was schief gegangen ist, wenn du client + server config sowie die dazugehöringen routing tabellen und die aktuellen Firewall einstellungen (iptables -L) in [CODE] Tags posten würdest.

    gruß Felix

  7. #7
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6
    hi felix,
    server.conf
    PHP-Code:
    # Port
    port 59000

    # TCP oder UDP?
    #proto tcp-server
    proto udp
    mode server
    tls
    -server

    # tun oder tap?
    # Das tun Device erstellt einen IP Tunnel,
    # während das tap Device einen Ethernet Tunnel erstellt.
    #tun or tap device
    #tun is an IP tunnel,
    #tap an ethernet tunnel
    dev tap

    #Our Server IP
    ifconfig 10.0.0.1 255.255.255.0

    #dynamic clients from 10.0.0.2-10.0.0.254
    ifconfig-pool 10.0.0.2 10.0.0.254

    #Die pakete werden auf dieser größe gekapselt
    tun-mtu 1492
    #fragment 1300
    mssfix

    #Paths to the certs
    ca certs/vpn-ca.pem
    cert certs
    /servercert.pem
    key certs
    /serverkey.pem

    #Clients können miteinander kommunizieren
    #client-to-client

    #Diffie-Hellmann Parameters
    dh certs/dh1024.pem

    #Same Ip in the next session
    ifconfig-pool-persist ipp.txt

    #Routes the packages to the intern network, you should use iptables instead of this
    #push "route 192.168.0.0 255.255.255.0"
    [B]push "redirect-gateway def1"
    [/B]
    #Tests the connection with a ping like paket. (wait=120sec)
    keepalive 10 120

    #Authenication
    auth SHA1

    #Our encryption algorithm
    #cipher aes-256-ecb
    #openvpn --show-ciphers for testing

    #comp
    comp-lzo

    #Sets new rights after the connection
    user nobody
    group nogroup

    #We need this because of user nobody/group nobody.
    persist-key
    persist
    -tun

    #Logging 0, (testing:5)
    verb 0 
    server.ovpn:
    PHP-Code:
    dev tun
    proto udp
    port 59000
    ifconfig 10.1.0.1 10.1.0.2
    tls
    -server
    dh 
    /etc/openvpn/zertifikate/dh2048.pem
    ca 
    /etc/openvpn/zertifikate/ca.crt
    cert 
    /etc/openvpn/zertifikate/server.crt
    key 
    /etc/openvpn/zertifikate/server.key
    push 
    "redirect-gateway def1"
    user nobody
    group nogroup
    status 
    /etc/openvpn/openvpn-status.log
    comp
    -lzo
    verb 3 
    client.ovpn
    PHP-Code:
    dev tun
    remote 
    "remote_IP"
    ifconfig 10.1.0.2 10.1.0.1
    tls
    -client
    ca E
    :\\miragecertz\\ca.crt
    cert E
    :\\miragecertz\\client1.crt
    key E
    :\\miragecertz\\client1.key
    port 59000
    user nobody
    group nogroup
    comp
    -lzo
    verb 3 
    iptables script auszug, bezogen nur auf openvpn.
    es wird quasi alles geblockt, wenn nicht die entsprechenden zeilen in diesem script hinterlegt sind. eine verbindung zwischen meinem client und dem server via vpn funktioniert einwandfrei. jedoch nicht von client ueber den server ins internet.

    PHP-Code:
    ###########################
    ## IP VPN FORWARDING SHIT ##
    ############################

    iptables -A FORWARD -i tun0 -j ACCEPT
    iptables 
    -A INPUT -i tun0 -m state --state NEW -p udp --dport 59000 -j ACCEPT
    iptables 
    -A INPUT -i tun0 -j ACCEPT

    iptables 
    -A FORWARD -i tun0 -o eth0 -s 10.1.0.0/24 -d remoteip/24 -j ACCEPT
    iptables 
    -A FORWARD -i eth0 -o tun0 -s 10.1.0.0/24 -d remoteip/24 -j ACCEPT


    iptables 
    -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE
    iptables 
    -A FORWARD -i tun0 -s 10.1.0.0/24 -o eth0 -j ACCEPT
    #iptables -A FORWARD -i eth0 -o tun0 -m state –state ESTABLISHED,RELATED -j ACCEPT

    #OpenVPN zulassen
    iptables -A INPUT -p udp --dport 59000 -j ACCEPT 
    route windows client:
    PHP-Code:
    IPv4-Routentabelle
    ===========================================================================
    Aktive Routen:
         
    Netzwerkziel    Netzwerkmaske          Gateway    Schnittstelle Metrik
              0.0.0.0          0.0.0.0      192.168.0.1    192.168.0.196     30
             10.1.0.0  255.255.255.252   Auf Verbindung          10.1.0.2    286
             10.1.0.2  255.255.255.255   Auf Verbindung          10.1.0.2    286
             10.1.0.3  255.255.255.255   Auf Verbindung          10.1.0.2    286
            127.0.0.0        255.0.0.0   Auf Verbindung         127.0.0.1    306
            127.0.0.1  255.255.255.255   Auf Verbindung         127.0.0.1    306
      127.255.255.255  255.255.255.255   Auf Verbindung         127.0.0.1    306
          192.168.0.0    255.255.255.0   Auf Verbindung     192.168.0.196    286
        192.168.0.196  255.255.255.255   Auf Verbindung     192.168.0.196    286
        192.168.0.255  255.255.255.255   Auf Verbindung     192.168.0.196    286
            224.0.0.0        240.0.0.0   Auf Verbindung         127.0.0.1    306
            224.0.0.0        240.0.0.0   Auf Verbindung     192.168.0.196    286
            224.0.0.0        240.0.0.0   Auf Verbindung          10.1.0.2    286
      255.255.255.255  255.255.255.255   Auf Verbindung         127.0.0.1    306
      255.255.255.255  255.255.255.255   Auf Verbindung     192.168.0.196    286
      255.255.255.255  255.255.255.255   Auf Verbindung          10.1.0.2    286
    ===========================================================================
    Ständige Routen:
      
    Keine 
    route debian server:
    PHP-Code:
     netstat -r
    Kernel
    -IP-Routentabelle
    Ziel            Router          Genmask         Flags   MSS Fenster irtt Iface
    10.1.0.2        
    *               255.255.255.255 UH        0 0          0 tun0
    XX
    .XX.XX.X(remote_ip)      *               255.255.255.0   U         0 0          0 eth0
    default         vss-1-6k.fr.eu  0.0.0.0         UG        0 0          0 eth0 
    lg krutt
    Geändert von krutt (04.05.11 um 11:50 Uhr)

  8. #8
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    die Route unter deinem Winodws System ist nicht richtig gesetzt.
    guck doch mal ob du in deinem client log etwas in dieser Art findest:
    Code:
    Wed May 04 13:42:18 2011 SENT CONTROL [*****]: 'PUSH_REQUEST' (status=1)
    Wed May 04 13:42:18 2011 PUSH: Received control message: 'PUSH_REPLY,route 192.168.20.0 255.255.255.0,route 192.168.31.0 255.255.255.0,route 192.168.38.0 255.255.254.0,route 192.168.88.0 255.255.248.0,route 192.168.64.0 255.255.254.0,dhcp-option DNS 192.168.65.1,redirect-gateway def1,route 192.168.65.0 255.255.255.0,topology net30,ping 20,ping-restart 180,ifconfig 192.168.65.6 192.168.65.5'
    Wed May 04 13:42:18 2011 OPTIONS IMPORT: timers and/or timeouts modified
    Wed May 04 13:42:18 2011 OPTIONS IMPORT: --ifconfig/up options modified
    Wed May 04 13:42:18 2011 OPTIONS IMPORT: route options modified
    Wed May 04 13:42:18 2011 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
    Wed May 04 13:42:18 2011 Preserving previous TUN/TAP instance: VPN
    Wed May 04 13:42:18 2011 Initialization Sequence Completed
    von interesse ist dabei der eintrag "redirect-gateway"
    wenn in den folgezeilen ein fehler auftaucht, dann weißst du wo du weiter suchen must. wenn du redirect-gateway nicht findest, dann bekommt dein client die anweisung nicht vom Server.
    Und füge bitte die option "pull" zur client config hinzu, ich bin mir gerade nicht sicher, wie die default einstellung diesbezüglich sind.

    Gruß Felix
    Geändert von ctFreez (04.05.11 um 13:19 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6
    wenn du redirect-gateway nicht findest, dann bekommt dein client die anweisung nicht vom Server.
    ist so. habe die push anweisung jedoch in der server.conf eingetragen.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    kann sein, das du auf dem Server versuchst mit 2 config Datein zu Arbeiten? Die Config Datein für client und Server enden bei Linux i.d.R. auf .conf unter windows auf .ovpn.

    Wenn die option von den Server an den Client gepushed wird und auf dem Client der std. gw nicht angepasswird, dann scheint da irgendwas mit den Rechten auf dem Client noch nicht ganz hin zu haun.

    Zum Vergleich meine Server Config:
    Code:
    server 192.168.65.0 255.255.255.0
    port 443
    local 80.?.?.24
    proto tcp
    dev tun1
    
    log-append /var/log/openvpn.log
    
    ns-cert-type client
    tls-remote GEHEIM
    ca sslvpn/ca.crt
    cert sslvpn/server.crt
    key sslvpn/server.key
    dh sslvpn/dh2048.pem
    
    client-config-dir ccd
    client-to-client
    
    push "route 192.168.20.0 255.255.255.0"
    push "route 192.168.31.0 255.255.255.0"
    push "route 192.168.38.0 255.255.254.0"
    push "route 192.168.88.0 255.255.248.0"
    
    push "route 192.168.64.0 255.255.254.0"
    
    push "dhcp-option DNS 192.168.65.1"
    
    push "redirect-gateway def1"
    
    script-security 3 system
    cd /etc/openvpn
    client-connect ./client-connect.sh
    client-disconnect ./client-disconnect.sh
    
    ping-timer-rem
    keepalive 20 180
    verb 3
    float
    
    persist-key
    persist-tun
    user openvpn
    group nogroup
    
    auth SHA1
    cipher AES-256-CBC
    comp-lzo
    Und meine Client Config:
    Code:
    tls-client
    pull
    dev tun
    proto tcp-client
    remote 80.?.?.24 443
    float
    nobind
    # optional Proxy Settings
    auto-proxy
    http-proxy cwlan-cache.fh-wedel.de 3128
    http-proxy-retry
    http-proxy-option AGENT Mozilla/5.0+(Windows;+U;+Windows+NT+5.0;+en-GB;+rv:1.7.6)+Gecko/20050226+Firefox/1.0.1
    
    tls-remote "GEHEIM"
    ns-cert-type server 
    ca ca.crt
    cert vpnclient-ice.crt
    key vpnclient-ice.key
    cipher AES-256-CBC
    auth SHA1
    
    script-security 3 system
    up-restart
    
    connect-retry-max 5
    resolv-retry 10
    ping 10
    ping-restart 60
    
    persist-key
    persist-tun
    
    verb 3
    comp-lzo
    Ich Verwende die OpenVPN GUI v 1.0.4 von openvpn.se
    Mit OpenVPN 2.1.1 i686-pc-mingw32

    firewall:
    Code:
    #!/bin/sh
    echo 1 > /proc/sys/net/ipv4/ip_forward
    IPTABLES="/sbin/iptables"
    NET="venet0"
    VPN="tun1"
    $IPTABLES -A FORWARD -i $VPN -o $NET -j ACCEPT
    $IPTABLES -A FORWARD -i $NET -o $VPN -j ACCEPT
    $IPTABLES -t nat -A POSTROUTING -o $NET -j MASQUERADE
    gruß Felix
    Geändert von ctFreez (04.05.11 um 17:50 Uhr)

  11. #11
    Registrierter Benutzer
    Registriert seit
    May 2011
    Beiträge
    6
    hi felix,

    du hattest natuerlich recht. ich habe mit zwei verschiedenen "configs" gearbeitet. meinen openvpn server habe ich immer manuel, bzw durch ein script eingeleitet. dieses script endete bei mir auf dem debian server auch mit ovpn. wenn ich so darueber nachdenke, ziemlich daemlich xD

    wie du wohl gemerkt hast, bin ich in sachen openvpn blutiger anfaenger.

    sag, waerst du bereit mit mir noch deine connect scripts (diese waren in iptables script vermerkt) zu teilen?

    vielleicht kann ich deine konfiguration im weitestem sinne uebernehmen. siehst du da probleme? hast auch du einen linux server als openvpn server?

    wie sollte ich deiner meinung nach die sache am besten angehen. ich lese mich derzeit schon tierisch in den stoff ein.

    ps: auch ich muss demnächst mehrere clients dort "unterbringen". da eignet sich meine schwachmaten config nunmal garnicht. diese ist nur auf einen client ausgelegt.

    lg, krutt
    Geändert von krutt (04.05.11 um 21:18 Uhr)

  12. #12
    Registrierter Benutzer
    Registriert seit
    Nov 2006
    Beiträge
    213
    Moin,

    in den Scripen für client-connect & client-disconnect wird nix mehr gemacht, was mit dem eigentlichen verbindungsaufbau zu tun hat, ich schreibe die anzahl der übertragenen Bytes in eine mySQL Datenbank und führe ein bischen statistik.

    Das client-config-dir benutze ich nur um mehrere Netze mit einander zu verbinden. Für Normale User gibt es dort keine Einstellungen.

    Die Config darfst du übernehmen, wenn du versprchst JEDE verwendete option in der man page nach zu lesen. Das habe ich auch machen müssen, nur das ich nicht wuste, ob es mich weiter bringt.
    Du wirst sicher noch einige anpassungen machen müssen, da ich in meiner config 14 Class-C Netze Verteile. Ausserdem habe ich strenge regeln für die Zertifikate gesetzt, vieleicht musst du die Parameter für tls-remote und ns-cert-type anpassen.

    Gruß Felix

Ähnliche Themen

  1. FATAL: Module ip_tables not found
    Von WolfEric im Forum Sicherheit
    Antworten: 2
    Letzter Beitrag: 23.06.06, 19:55
  2. iptables rules, ,HELP, bitte
    Von MDK-user im Forum Router und Netzaufbau
    Antworten: 8
    Letzter Beitrag: 04.06.06, 11:25
  3. IPTABLES und DSL
    Von mati0504 im Forum Router und Netzaufbau
    Antworten: 16
    Letzter Beitrag: 25.04.05, 11:03
  4. htb traffic control script von CT
    Von Hellek im Forum Router und Netzaufbau
    Antworten: 8
    Letzter Beitrag: 29.10.04, 14:55
  5. Probleme mit iptables und gentoo-sources
    Von smog_at im Forum Router und Netzaufbau
    Antworten: 4
    Letzter Beitrag: 25.06.04, 07:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •