Pastāvīga tuneļa izveide ar OpenVPN

Šajā lapā aprakstīts, kā izveidot pastāvīgu, šifrētu savienojumu starp diviem Linux datoriem. Ja nepieciešams īslaicīgs/vienkāršāk izveidojams savienojums, ērtāk izmantot SSH tuneli.

Uzstādīšana

  1. Uz klienta un servera uzliek OpenVPN:

    apt-get install openvpn
  2. Uz servera izveido statisku šifrēšanas atslēgu:

    openvpn --genkey --secret /etc/openvpn/static.key
  3. Ar ftp vai kā savādāk šo atslēgas failu pārkopē arī uz klienta datora.
    1. Lai failu varētu pārkopēt ar FTP, tam jānomaina īpašnieks, pretējā gadījumā parasts lietotājs to nevarēs nolasīt:

      chown student:student static.key
    2. Lejuplādēto failu arī saglabā /etc/openvpn/static.key un uzliek īpašnieku atpakaļ uz root:

      chown root:root static.key
  4. Izveido servera konfigurācijas failu /etc/openvpn/server.cfg:

    dev tun
    ifconfig 10.8.0.1 10.8.0.2
    secret static.key
  5. Izveido klienta konfigurācijas failu /etc/openvpn/client.cfg:

    remote myremote.mydomain
    dev tun
    ifconfig 10.8.0.2 10.8.0.1
    secret static.key
  6. Ja uz servera vai klienta ir ugunssiena, pievieno papildu likumu, kas atļauj saņemt paketes no tuneļa interfeisa:

    iptables -A INPUT -i tun0 -j ACCEPT
  7. Palaiž VPN procesu uz servera:

    openvpn --config /etc/openvpn/server.cfg
  8. Palaiž VPN procesu uz klienta:

    openvpn --config /etc/openvpn/client.cfg

Pieprasījumu pārsūtīšana uz tuneli

  1. Uz servera ieslēdz portu pārsutīšanas režīmu (forwarding) un portu pārsūtīšanas likumu, kur a.b.c.d servera publiskā IP adrese:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A PREROUTING --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
    iptables -t nat -A OUTPUT --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
  2. Uz klienta izveido jaunu IP likumu tabulu failā /etc/iproute2/rt_tables pirms iebūvēto tabulu saraksta pievieno rindu:

    200   tun
  3. Uz klienta pievieno jaunu likumu, un tun tabulā ieliek noklusēto maršrutu:

    ip ru add from 10.8.0.2 table tun
    ip ro add default via 10.8.0.2 table tun
  4. Procesu nokauj apskatot ar ps -efa|grep openvpn un kill -9 PID kur PID ir procesa identifikators (2. kolonna)

Skripti

Konfigurācija

  1. Konfigurācijas failiem pievieno papildus parametrus savienojuma saglabāšanai un procesa palaišanai fona režīmā. Servera konfigurācijas fails /etc/openvpn/server.cfg:

    dev tun
    ifconfig 10.8.0.1 10.8.0.2
    secret /etc/openvpn/static.key
    comp-lzo
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    daemon
  2. klienta konfigurācijas fails /etc/openvpn/client.cfg:

    remote myremote.mydomain
    dev tun
    ifconfig 10.8.0.2 10.8.0.1
    secret /etc/openvpn/static.key
    comp-lzo
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    daemon

Palaišana un apturēšana

  1. /home/bin/make_tunnel skripts, kas palaiž VPN procesu un nokonfigurē tīklu uz klienta:

    #!/bin/sh
    # Reset
    /home/bin/delete_tunnel

    # Make tunel and configure routing
    openvpn --config /etc/openvpn/client.cfg
    iptables -A INPUT -i tun0 -j ACCEPT
    ip ru add from 10.8.0.2 table tun
    ip ro add default via 10.8.0.2 table tun
  2. /home/bin/delete_tunnel skripts, kas aptur VPN procesu un novāc lieko tīkla konfigurāciju uz klienta:

    #!/bin/sh
    # Reset
    killall openvpn
    #iptables -F -t nat
    ip ru del from 10.8.0.2 table tun
    ip ro del default via 10.8.0.2 table tun
  3. /home/bin/make_tunnel skripts, kas palaiž VPN procesu un nokonfigurē tīklu uz servera:

    #!/bin/sh
    # Reset
    /home/bin/delete_tunnel

    # Make tunel and configure routing
    openvpn --config /etc/openvpn/server.cfg
    echo 1 > /proc/sys/net/ipv4/ip_forward
    • Var iekļaut arī IP pakešu pārsūtīšanu, kur a.b.c.d servera publiskā IP adrese:

      iptables -t nat -A PREROUTING --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
      iptables -t nat -A OUTPUT --dst a.b.c.d -p tcp --dport 88 -j DNAT --to-destination 10.8.0.2:80
  4. /home/bin/delete_tunnel skripts, kas aptur VPN procesu un novāc lieko tīkla konfigurāciju uz servera:

    #!/bin/sh
    # Reset
    killall openvpn

Inicializācijas skripts

  1. /etc/init.d/custom-scripts, uz klienta un servera, kas nodrošina automātisku tuneļa izveidi, startējot sistēmas:

    #!/bin/sh
    #/etc/init.d/custom-scripts
    #

    # Some things that run always
    touch /var/lock/custom-scripts

    # Carry out specific functions when asked to by the system
    case "$1" in
      start)
        echo "Starting script custom-scripts "
        echo "make_tunnel..."
        # enter your script path here, e.g. /home/bin/...
        /home/bin/make_tunnel
        ;;
      stop)
        echo "Stopping script custom-scripts"
        echo "delete_tunnel..."
        /home/bin/delete_tunnel
        ;;
      **)
        echo "Usage: /etc/init.d/custom-scripts {start|stop}"
        exit 1
        ;;
    esac
    exit 0
  2. Pārējo skatīt Papildu inicializācijas skripti

Saites

 

Izveidojis Valdis Vītoliņš 2008-08-09 16:52
Pēdējais mainījis Valdis Vītoliņš 2017-09-22 20:04
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License