Gentoo Logo

vpnc w Gentoo

Spis treści:

1.  Wprowadzenie

Jeżeli czytamy ten dokument zapewne chcemy podłaczyć się do sieci w naszym biurze z domu czy w trakcie podróży. Wiele firm wykorzystuje koncentratory Cisco 3000 VPN do takich celów i jestem gotów się założyć, że wielu początkujących użytkowników Linuksa myśli, że są skazani na używanie systemu operacyjnego Windows, aby móc się łączyć z tymi urządzeniami. Dokument ten ma za zadanie zmienić ten pogląd i pokazać w jaki sposób stworzyć i skonfigurować działający tunel przy pomocy stacji roboczej Gentoo lub laptopa.

Co znajduje się w tym opracowaniu

  • Przedownik po podstawach działania vpnc
  • Dyskusje na temat problemów związanych z DNS oraz routingiem w VPN-ach
  • Przykłady zarządzania sesjami VPN
  • Przydatne sztuczki i kruczki

Czego nie zawiera to opracowanie

  • Zaawansowanego przewodnika po technologiach VPN oraz szyfrowania
  • Opisu każdej z funkcji vpnc

Założenia

W tym punkcie musimy przyjąć pewne założenia:

  • Posiadamy zainstalowany system Gentoo
  • Posiadamy dostęp do sieci Internet
  • Chcemy się połączyć z koncenratorem Cisco 3000 VPN
  • Potrafimy konfigurować, budować i instalować nowe jądro

2.  Konfiguracja jądra

Aby Linux mógł utworzyć połączenie VPN należy uaktywnić wsparcie Universal TUN/TAP device driver support w jądrze. Co to jest i dlaczego potrzebujemy tej opcji? Poniżej znajduje się dość proste wyjaśnienie tej opcji pochodzące z menu konfiguracyjnego jądra:

Listing 2.1: CONFIG_TUN

TUN/TAP provides packet reception and transmission for user space
programs. It can be viewed as a simple Point-to-Point or Ethernet
device, which instead of receiving packets from a physical media,
receives them from user space program and instead of sending packets
via physical media writes them to the user space program.

When a program opens /dev/net/tun, driver creates and registers
corresponding net device tunX or tapX. After a program closed above
devices, driver will automatically delete tunXX or tapXX device and
all routes corresponding to it.

Możemy sami sprawdzić czy jądro, którego używamy, posiada wsparcie dla TUN/TAP poprzez następujące polecenie:

Listing 2.2: Weryfikacja konfiguracji jądra

#  grep "TUN" /usr/src/linux/.config
CONFIG_INET_TUNNEL=m
# CONFIG_INET6_TUNNEL is not set
# CONFIG_IPV6_TUNNEL is not set
(TUN/TAP jest uaktywnione jako moduł)
CONFIG_TUN=m
# CONFIG_8139TOO_TUNE_TWISTER is not set

Jak widzimy powyżej, opcja CONFIG_TUN=m skompilowana jest jako moduł. Jeżeli nie mamy wsparcia, musimy go uaktywnić w jądrze, przebudować, zainstalować, ponownie uruchomić komputer, a następnie wracamy do tego przewodnika, aby kontynuować pracę.

Listing 2.3: Lokalizacji konfiguracji w menu konfiguracji jądra

Device Drivers  --->
  Networking support  --->
    [*] Universal TUN/TAP device driver support

Jeżeli wbudowaliśmy wsparcie TUN/TAP bezpośrednio do jądra, po wydaniu polecenia dmesg powinniśmy zobaczyć następujący wynik:

Listing 2.4: Sprawdzanie wyniku polecenia dmesh

# dmesg | grep TUN
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky

Jeżeli zbudowaliśmy wsparcie dla TUN/TAP jako moduł, najpierw powinniśmy załadować moduł tun:

Listing 2.5: Ładowanie modułu tun

# modprobe tun
# lsmod
Module                  Size  Used by
tun                     7296  0

Teraz, kiedy już załadowaliśmy moduł tun należy sprawdzić rezultat polecenia dmesg. Powinniśmy zobaczyć następujący wynik:

Listing 2.6: Sprawdzanie wyniku polecenia dmesg

# dmesg | grep TUN
Universal TUN/TAP device driver 1.5 (C)1999-2002 Maxim Krasnyansky

3.  Instalacja potrzebnego oprogramowania

Po skonfigurowaniu jądra, należy zainstalować program net-misc/vpnc:

Listing 3.1: Instalacja vpnc

# emerge -av net-misc/vpnc

4.  Przykładowa konfiguracja

Aby ułatwić pracę można skorzystać z przykładowej konfiguracji. Dla potrzeb tego ćwiczenia, zakładamy, że posiadamy domową sieć składającą się z kilku komputerów. Wszystkie posiadają adresy sieci 192.168.0.0 / 255.255.255.0. Sieć zarządzana jest przez komputer z systemem Gentoo oraz firewallem iptables, DHCP, serwerem DNS itp. Dodatkowo na komputerze znajduje się maskarada. Posiadamy również stację roboczą w obrębie naszej sieci, z której chcemy się łączyć poprzez tunel VPN do komputera w naszym biurze.

Przykładowa konfiguracja stacji roboczej wygląda następująco:

Listing 4.1: Konfiguracja stacji roboczej

(Konfiguracja serwera nazw)
# cat /etc/resolv.conf
nameserver      192.168.0.1

(Konfiguracja sieci)
# cat /etc/hosts
127.0.0.1       desktop localhost
192.168.0.1     router
192.168.2.2     mediacenter

(Konfiguracja interfejsów)
# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:11:2F:8D:08:08
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::211:2fff:fe8d:808/64 Scope:Link
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3657889 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2305893 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2193722103 (2092.0 Mb)  TX bytes:1415104432 (1349.5 Mb)
          Interrupt:185 Memory:fac00000-0

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:35510 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35510 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16023838 (15.2 Mb)  TX bytes:16023838 (15.2 Mb)

(Tablica routingu)
# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.0.0     *               255.255.255.0   U         0 0          0 eth0
loopback        desktop         255.0.0.0       UG        0 0          0 lo
default         router          0.0.0.0         UG        0 0          0 eth0

5.  Konfiguracja vpnc

Gdy posiadamy zainstalowany już program vpnc oraz przykładową konfigurację, z której możemy czerpać natchnienie możemy poznać podstawowe ustawienia vpnc. Plik konfiguracyjny vpnc dla ustawienia parametrów połączeń może znajdować się w kilku miejscach, w zależności od tego jak dużo profili chcemy stworzyć. Domyślnie vpnc szuka na początku pliku /etc/vpnc/default.conf. Jeśli nie znajdzie tego pliku, szuka konfiguracji w pliku /etc/vpnc.conf. W poniższym przykładzie posłużymy się jedynie przykładem z pojedynczym profilem, przez co potrzebować będziemy pliku konfiguracyjnego znajdującego się w /etc/vpnc.conf. Należy upewnić się, że nie posiadamy pliku /etc/vpnc/default.conf.

Listing 5.1: Przykładowy plik /etc/vpnc.conf

IPSec gateway vpngateway.domain.org
IPSec ID group_id
IPSec secret group_password
Xauth username network_signon
Xauth password network_password

Przykładowy plik konfiguracyjny zaprezentowany powyżej powinien zostać zmodyfikowany tak, aby argumenty dla danych zmiennych były odpowiednie do naszych potrzeb. W opcji gateway zamiast vpngateway.domain.org podać możemy nazwę domeny lub adres IP. Odpowiednie wartości dla opcji ID oraz secret powinniśmy dostać od administratora naszej sieci. Jeśli nie uzyskamy tych informacji, a posiadamy działającą konfigurację na komputerze z systemem Windows i oficjalnym klientem VPN Cisco, jedyne co musimy zrobić to wyeksportować nasz profil. Opcje username oraz password są wartościami, których używamy do logowania się do sieci, takich jak np. domena Windows NT.

Jeśli jesteśmy zmuszeni wyeksportować nasz profil z komputera z systemem Windows, będziemy w posiadaniu pliku zakończonego rozszerzeniem .pcf. W pliku tym znajdziemy wszystkie potrzebne nam informacje. Poniżej znajduje się przykładowy plik tego typu:

Listing 5.2: Example profile.pcf file

[main]
Description=
Host=VPNGATEWAY.DOMAIN.ORG
AuthType=1
GroupName=group_id
GroupPwd=
enc_GroupPwd=F3256220AA200A1D532556024F4F314B0388D48B0FBF2DB12
EnableISPConnect=0
ISPConnectType=0
ISPConnect=FOOBAR
ISPCommand=
Username=
SaveUserPassword=0
UserPassword=
enc_UserPassword=
NTDomain=
EnableBackup=0
BackupServer=
EnableMSLogon=1
MSLogonType=0
EnableNat=1
TunnelingMode=0
TcpTunnelingPort=10000
CertStore=0
CertName=
CertPath=
CertSubjectName=
CertSerialHash=00000000000000000000000000000000
SendCertChain=0
VerifyCertDN=
DHGroup=2
ForceKeepAlives=0
PeerTimeout=90
EnableLocalLAN=0
EnableSplitDNS=1
ForceNetLogin=0

W powyższym przykładzie widać wpisy dla Host, GroupName oraz enc_GroupPwd. Opcje Username i UserPassword w zależności od ustawień mogą, ale nie muszą zostać wyeksportowane. Aby wygenerować działającą konfigurację vpnc z pliku pcf powinniśmy użyć programu pcf2vpnc, który dostarczany jest z vpnc.

Uwaga: Zaszyfrowane hasło możemy odczytać przy pomocy aplikacji cisco-decrypt, który dostarczany jest z najnowszym vpnc.

Testowanie konfiguracji

Gdy wszystko skonfigurujemy już poprawnie, pora na przetestowanie naszych ustawień. Aby uruchomić vpnc należy wykonać następujące czynności:

Listing 5.3: Przykładowe użycie vpnc

# vpnc
Enter password for username@vpngateway.domain.org:
VPNC started in background (pid: 14788)...

Jak widać w powyższym przykładzie po wpisaniu polecenia vpnc (jako root) jesteśmy poproszeni o wpisanie naszego hasła. Po zatwierdzeniu hasła, co odbędzie się bez żadnej odpowiedzi, proces vpnc zostanie przeniesiony automatycznie w tło.

Uwaga: Jeśli wpisaliśmy hasło dla opcji Xauth password w naszej konfiguracji vpnc nie będziemy musieli podawać hasła przy uruchomieniu vpnc. Dodatkowo, jeśli vpnc potrzebuje jakiś dodatkowych opcji, których nie zawarliśmy w pliku konfiguracyjnym, nie należy się martwić, zostaniemy o nie poproszeni przy uruchamianiu vpnc.

Listing 5.4: Przykładowe zmiany w interfejsie dokonane przez vpnc

#  ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:11:2F:8D:08:08
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::211:2fff:fe8d:808/64 Scope:Link
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2101119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1577559 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1757862627 (1676.4 Mb)  TX bytes:732200131 (698.2 Mb)
          Interrupt:177 Memory:faa00000-0

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:192.168.160.42  P-t-P:192.168.160.42  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:60 (60.0 b)  TX bytes:616 (616.0 b)

Listing 5.5: Przykładowe modyfikacje wykonane przez vpnc w tablicy routingu

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
vpn01.domain.or router          255.255.255.255 UGH    1500 0          0 eth1
192.168.0.0     *               255.255.255.0   U         0 0          0 eth1
loopback        desktop         255.0.0.0       UG        0 0          0 lo
default         *               0.0.0.0         U         0 0          0 tun0

Jak widzimy wyżej, vpnc dokonał następujących zmian:

  • Stworzony został wirtualny interfejs sieciowy tun0, który przekazuje ruch przez tunel VPN
  • Uzyskano adres IP dla urządzenia tun0 od dostawcy VPN
  • Ustawiono domyślną bramę na VPN

W tym momencie, nasza stacja robocza powinna być zdolna do komunikacji poprzez VPN jednak tylko przy użyciu adresu IP. Jak niektórzy zauważyli, vpnc nie zmodyfikował pliku /etc/resolv.conf, dlatego też nie ustanowił DNS-ów dla wirtualnego połączenia. Dodatkowo, ponieważ vpnc ustawia domyślną bramę na bramę VPN, cały ruch będzie kierowany przez VPN, nawet w przypadku gdy pochodzi on z Internetu lub z każdego innego miejsca nie określonego przez dodatkowe tablice routingu. Dla części użytkowników tak skonfigurowane podstawowe połączenie może wystarczyć, jednak większość podejmnie dodatkowe kroki.

Dodatkowe rzeczy, które mogą okazać się przydatne:

  • DNS dla VPN
  • Ustawienie tablicy routingu, które kierować będą ruch VPN przez wirtualny tunel. W ten sposób możemy przeglądać Internet, będąc jednocześnie połączonymi z VPN, bez obaw o wyciek naszych danych do tunelu.
  • Skrypt zarządzający wszystkimi funkcjami, ponieważ vpnc nie robi tego wystarczająco dobrze w domyślnej konfiguracji.

Gdy chcemy zakończyć sesję VPN, należy wydać polecenie vpnc-disconnect. Przykład użycia pokazano poniżej.

Uwaga: Nie rozłączajmy się jeszcze, ponieważ jest kilka dodatkowych rzeczy do przetestowania. Poniższy przykład podano jedynie w celach informacyjnych.

Listing 5.6: vpnc-disconnect

# vpnc-disconnect
Terminating vpnc daemon (pid: 26250)

6.  Konfiguracja DNS

Niestety, vpnc nie radzi sobie z konfiguracją i zarządzaniem DNS dla nowo utworzonego tunelu. Sposób w jaki powinno się to odbywać wybiera użytkownik. Możemy po prostu nadpisać plik /etc/resolv.conf kiedy zostaniemy połączeni, jednak w ten sposób spowodujemy, że wszystkie dane, nie ważne czy przeznaczone dla naszego tunelu VPN czy nie, będą używały DNS dla VPN. Jest to bardzo funkcjonalne rozwiązanie i jeśli potrzebujemy się jedynie łączyć z tunelem, aby wykonać konkretną pracę, a następnie rozłączamy się, nie musimy czytać dalszej części tego rozdziału. Jednak, jeśli będziemy chcieli pozostawiać połączenie z naszym tunelem aktywne na długie okresy czasu, a nie życzymy sobie, aby robocze serwery DNS przechwytywały nasz lokalny ruch powinniśmy kontynuować lekturę.

Idealna konfiguracja pozwoli nam rozdzielić zapytania DNS na dwie grupy: związane z VPN oraz pozostały ruch. W takiej konfiguracji wszystkie zapytania DNS dotyczące VPN będą odbierane przez serwery DNS zlokalizowane na drugim końcu tunelu VPN. Wszystkie pozostałe zapytania będą przesyłane dalej do lokalnego serwera DNS lub do serwera DNS dostarczanego przez ISP. Konfiguracja taka zostanie zaprezentowana poniżej.

Uwaga: Założymy, że zapytania DNS związane z VPN należeć będą do domeny example.org, jak na przykład host1.example.org czy server1.example.org.

W jaki więc sposób skonfigurować wszystko tak, aby tylko zapytania skierowane do komputerów znajdujących się w domenie example.org kierowane były serwerów DNS dostarczonych z tunelem VPN? Przede wszystkim należy zainstalować lokalny serwer DNS. Nie należy jednak się przejmować tym, jest to zdecydowanie prostsze niż wydaje się na pierwszy rzut oka. W drzewie znajduje sie kilka pakietów, których możemy użyć. W poniższym przykładzie użyjemy programu dnsmasq. Należy go teraz zainstalować:

Uwaga: Serwer ten nie będzie dostępny w sieci. Jedynym jego zadaniem będzie odpowiadanie na zapytania z lokalnego hosta, 127.0.0.1.

Listing 6.1: Instalacja dnsmasq

#  emerge dnsmasq

Następnie musimy dodać opcję do komendy startowej dnsmasq. Należy edytować poniższy przykład, aby dopasować go naszych potrzeb. Powinniśmy zastąpić .example.org odpowiednią nazwą domeny. Adresem IP będzie adres odpowiedniego serwera DNS, który należy do tunelu VPN.

Listing 6.2: /etc/conf.d/dnsmasq

Config file for /etc/init.d/dnsmasq

# See the dnsmasq(8) man page for possible options to put here.
DNSMASQ_OPTS="-S /.example.org/192.168.125.10"

Następnie należy się upewnić, że pierwszym wpisem w pliku /etc/resolv.conf będzie wpis definiujący nasz lokalny komputer 127.0.0.1. Po tym wpisie powinna znajdować się lokalizacja zapasowego serwer DNS, który powinien przejąć ruch w przypadku nieudanego uruchomienia programu dnsmasq lub gdy będzie musiał on przekazać ruch w przypadku braku odpowiednich danych we własnej pamięci podręcznej. Przykładowy plik /etc/resolv.conf znajduje się poniżej.

Listing 6.3: /etc/resolv.conf

nameserver 127.0.0.1
nameserver 192.168.0.1

Po skonfigurowaniu reguł dla naszego tunelu VPN, powinniśmy uruchomić dnsmasq.

Listing 6.4: Uruchamianie dnsmasq

# /etc/init.d/dnsmasq start
# rc-update add dnsmasq default

7.  Konfiguracja tabeli routingu

Doskonałym przypadkiem będzie sytuacja, w której przez połączenie przesyłany jest wyłącznie ruch związany z VPN, chyba że dodamy dodatkowe trasy. Aby móc rozwiązać tę sytuację, musimy wiedzieć jakie sieci dostępne są dla naszego VPN. Najprostszym sposobem na uzyskanie tych danych będzie zasięgnięcie informacji u administratora sieci. Jednak czasami są oni niechętni do odpowiadania na tego typu pytania. W przypadku gdy nie dostaniemy tych danych, potrzeba będzie użyć metody prób i błędów.

Gdy uruchomiliśmy tunel VPN, vpnc ustawiło domyślną bramę. Musimy więc przywrócić wartość domyślną, aby wszystko działało tak jak tego oczekujemy.

Listing 7.1: Ponowane ustawianie domyślne bramy

# route add default gw 192.168.0.1

Wcześniej, gdy konfigurowaliśmy usługę DNS dla tunelu VPN, wpisaliśmy serwer DNS, który ma zajmować się domeną example.org. Musimy dodać trasę do podsieci 192.168.125.0 tak, aby zapytania DNS funkcjonowały poprawnie.

Listing 7.2: Dodawanie trasy dla dns

# route add -net 192.168.125.0 netmask 255.255.255.0 dev tun0

W tym momencie powinniśmy dodać wszystkie dodatkowe trasy dla znanych sieci (takie jak podsieć 192.168.160.0, w którym zawiera się adres otrzymany przez wirtualne urządzenie TUN/TAP). Jeśli dostaliśmy potrzebne nam informację od administratora sieci, świetnie. W przeciwnym wypadku, będziemy musieli spingować komputery do których będziemy się łączyć, aby mieć jakiekolwiek pojęcie o wyglądzie naszej tablicy routingu.

Uwaga: Z powodu naszej konfiguracji, w czasie gdy będziemy używać usług sieciowych VPN po nazwach, będziemy musieli wpisać pełne nazwy domen, na przykład: webserver1.example.org.

Listing 7.3: Przykład użycia polecenia ping

# ping intranet1.example.org
PING intranet1.example.org (172.25.230.29) 56(84) bytes of data.


--- intranet1.example.org ping statistics ---
18 packets transmitted, 0 received, 100% packet loss, time 16997ms

Jak widać z powyższego przykładu, polecenie ping do adresu intranet1.example.org nie powiodło się. Więc powinniśmy dodać trasę do tej podsieci.

Listing 7.4: Kolejna przykładowa komenda dodawnia trasy

# route add -net 172.25.230.0 netmask 255.255.255.0 dev tun0

Kilka poleceń ping dalej, powinniśmy być na dobrej drodze do stworzenia odpowiedniej tablicy routingu.

8.  Zarządzanie połączeniem

Wywoływanie vpnc w razie potrzeby

Kolejnym przykładem jest skrypt do zarządzania połączeniem VPN. Powinniśmy go uruchamiać (jako root) przy pomocy xterm, aby wystartować połączenie z naszym tunelem VPN. Wtedy jedyną czynnością potrzebną do rozłączenia się będzie wciśnięcie enter. Oczywiście skrypt ten musimy dostosować do naszych potrzeb, pamiętając o dodaniu dodatkowych tras do podsieci.

Listing 8.1: Przykładowy skrypt zarządzania sesją

#!/bin/bash

source /sbin/functions.sh

ebegin "Connecting to the VPN"
vpnc
eend

ebegin "Modifying the routing table"
route add default gw 192.168.0.1
route add -net 172.25.230.0 netmask 255.255.255.0 dev tun0
route add -net 192.168.160.0 netmask 255.255.255.0 dev tun0
route add -net 192.168.125.0 netmask 255.255.255.0 dev tun0
eend

einfo "Press any key to disconnect ..."

read $disconnect

ebegin "Disconnecting from the VPN"
vpnc-disconnect
eend
ebegin "Reconfiguring the default routing table"
route add default gw 192.168.0.1
eend

einfo "VPN should now be disconnected"

Uruchamianie vpnc przy startowaniu systemu

Z wersją 0.4.0-r1 programu vpnc dostarczany jest plik init dla Gentoo(/etc/init.d/vpnc), który radzi sobie nawet z obsługą wielu konfiguracji. Domyślny plik przygotowany jest dla pliku konfiguracyjnego /etc/vpnc/vpnc.conf. Przed i po zatrzymaniu i uruchomieniu skrypty napisane przez nas mogą być wykonane w połączeniu z odpowiadającymi im skryptami inir (od wersji 0.5.1-r1). Nazwy takich plików kończą się na -preup.sh, -postup.sh, -predown.sh i -postdown.sh. Przechowujemy je w katalogu /etc/init.d/scripts.d/. Ogólną zasadę nazewnictwa przedstawiono w poniższej tabeli.

nazwa pliku ze skryptem init wymagany plik konfiguracyjny nazwa skryptu preup
/etc/init.d/vpnc /etc/vpnc/vpnc.conf /etc/vpnc/scripts.d/vpnc-preup.sh
/etc/init.d/vpnc.work /etc/vpnc/work.conf /etc/vpnc/scripts.d/work-preup.sh

Dodajemy vpnc do domyślnego poziomu uruchomieniowego z odpowiednimi poleceniami (w tym wypadku dla standardowej konfiguracji). Należy pamiętać o dodaniu modułu tun (jeśli zbudowaliśmy go w ten sposób) do mechanizmu ładowania modułów jądra przy uruchamianiu systemu.

Listing 8.2: Dodawanie vpnc do skryptów startowych

# rc-update add vpnc default

Jeśli nie chcemy zapisywać hasła w pliku konfiguracyjnym, możemy pozwolić skryptowi init pokazywać wszelkie komendy i informacje na standardowym wyjściu, poprzez edycję pliku /etc/conf.d/vpnc. Ustawiamy zmienną VPNCOUTPUT na wartość yes lub no, gdzie wartością domyślną jest wartość no.

Uwaga: Skrypty init nie zajmują się oddzielaniem DNS, ale można skorzystać z ich poprawionych w tym celu wersji. Opis znajduje się poniżej.

9.  Dodatki

Zdalny graficzny dostęp

Program grdesktop to wspierająca protokół RDP nakładka graficzna napisana w języku Gtk, więc dobrze wpasowująca się w ogólny styl Gnome, jednak nie jest od niego zależna. Jeżeli nie chcemy korzystać z nakładki graficznej grdesktop, zainstalujmy jedynie rdesktop, na którego grdesktop jest nakładką.

W KDE dobrym wyborem będzie kvpnc. Jest to dopracowana i dojrzała nakładka graficzna do zarządzania VPN.

W przypadku gdy zechcemy połączyć się z komputerem, na którym zainstalowano system Windows, dla którego nie dodaliśmy wpisu DNS, a znamy adres dostępnego serwera WINS, możemy użyć programu nmblookup. Polecenie to pomoże nam odpytać serwer WINS o adres komputer, którego chcemy się połączyć. Niestety, aby było ono dostępne należy zainstalować sambę. Jednak w przypadku gdy chcemy pracować z komputerami z systemem Windows być może będziemy chcieli zainstalować program samba, który zawiera kilka przydatnych narzędzi.

Listing 9.1: Instalacja samby

# emerge -av samba

Kiedy samba jest już zainstalowana, powinniśmy przetestować polecenie nmblookup odwołując się do serwer WINS znajdującego się pod adresem 192.168.125.11 o komputer nazwany wintelbox1.

Listing 9.2: Przykład użycia nmblookup

# nmblookup -U 192.168.125.11 -R 'wintelbox1'
querying wintelbox1 on 192.168.125.11
172.25.230.76 wintelbox1

Inne skrypty startowe

Dzięki własnym skryptom init.d można dokładnie dopasować typ routowania do danego połączenia. Podane niżej przykłady pokazują jak skonfigurować tabelę routingu tak, że tylko połączenia 123.234.x.x będą przekierowywane przez VPN a wszystkie pozostałe będą korzystać z domyślnej bramy. W przykładzie wykorzystamy skrypt work-preup.sh w celu zapisania domyślnej bramy przed startem vpnc. Po uruchomieniu vpnc skrypt work-postup.sh kasuje nową domyślną stworzoną przez VPN bramę i zastępuje ją tą zapisaną przez pierwszy skrypt oraz przekierowuje przez nią wszystkie połączenia poza 123.234.x.x (które są przesyłane przez vpnc).

Listing 9.3: /etc/vpnc/scripts.d/work-preup.sh

#!/bin/sh
route -n | grep -E '^0.0.0.0 ' | cut -c 17-32 >/var/tmp/defaultgw

Listing 9.4: /etc/vpnc/scripts.d/work-postup.sh

#!/bin/sh
route del -net 0.0.0.0 netmask 0.0.0.0 dev tun1
route add default gw $(cat /var/tmp/defaultgw)
route add -net 123.234.0.0 netmask 255.255.0.0 dev tun1

W przykładach zakładamy, że połączenie vpnc korzysta z urządzenia tun1. Można to ustawić w pliku konfiguracyjnym danego połączenia.

Listing 9.5: /etc/vpnc/work.conf

Interface name tun1
IPSec gateway vpn.mywork.com
Pidfile /var/run/vpnc.work.pid

10.  Przydatne linki

11.  Ostatnie uwagi

W tym momencie powinniśmy być w stanie połączyć się z naszym tunelem VPN, a praca z nim będzie bezproblemowa. Gdy znajdziemy błąd w powyższym dokumencie lub gdy zechcemy dopisać dodatkowe informacje można wysłać raport na bugs.gentoo.org.



Drukuj

Zaktualizowano 23 stycznia 2008

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 22 kwietnia 2012. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: W przewodniku tym opisano sposób łączenia stacji roboczej z koncentratorem CISCO VPN przy wykorzystaniu vpnc do zarządzania połączeniem.

David H. Askew
Autor

Sven Vermeulen
Redaktor

Christian Faulhammer
Redaktor

Thomas Fischer
Redaktor

Damian Kuras
Tłumacz

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.