Archive

Posts Tagged ‘vpnc’

Linux VPN tips

March 18th, 2009 No comments

Ako koristiš linux kao i ja, i u nekom trenutku poželiš da koristiš vpn (prošla su ta davna vremena direktnih konekcija preko telnet-a ili ssh-a) može da se desi da ćeš naleteti na problem poput ovog: vpnc not able to establish connection with remote cisco device.

U okviru ovog texta pokušaću da rešim barem neke od mogućih problema prilikom uspostavljanja vpn veze pod linux-om.

Izvesnom prilikom kada sam pokušao da se konektujem direktno na cisco vpn koncentrator, dobio sam sledeću grešku:

vpnc: response was invalid [2]: (ISAKMP_N_INVALID_PAYLOAD_TYPE)(1)

Posle malo googlanja, i čeprkanja po source-u vpnc-a primetio sam da vpnc klijent šalje specifičan greeting udaljenom hostu (u ovom slučaju cisco vpn koncentratoru) koji nije hteo da prihvati taj tip hello-a s obzirom da vpnc oponaša cisco vpn windows aplikaciju. U određenim okolnostima cisco vpn ima mogućnost nametanja specifičnih podešavanja klijentu koji pokušava da se konektuje na mrežu putem vpn-a kao što bi recimo bilo podešavanje lokalnog firewall-a na klijentu ili nekih drugih opcija koje udaljeni administrator podesi kod sebe. Ako se ne varam, ovo se kod cisco-a zove “Cisco Systems Integrated Client Firewall, Capability: (Centralized Protection Policy)”. Interesantno je da detaljnom inspekcijom sadržaja paketa kao i logovanjem čitave sesije prilikom inicijalne konekcije možete saznati tačno koji tip uređaja je sa druge strane. U mom slučaju to je bio: “Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)”. U svakom slučaju, problem je bio u samom tkz. pozdravnom segmentu, i sve što treba da uradiš je:

# wget http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.1.tar.gz

ujedno skini i libgcrypt11 biblioteku, moguće da je već imaš ali za svaki slučaj.

Pre kompajliranja vpnc-a, otvori u svom omiljenom editoru config.c fajl i pronađi sledeću liniju u njemu:

asprintf(&version, "Cisco Systems VPN Client %s:%s", VERSION, uts.sysname);

zakomentariši je i umesto nje umetni:

asprintf(&version, "Cisco Systems VPN Client %s:%s", "4.8.00 (0490)", "Linux");

Po završenim izmenama, snimi fajl i odradi standardni make && make install. Nemoj da zaboraviš da obrišeš lokalnu kopiju vpnc binarnih fajlova ako si ih već imao na svojoj mašini.

# mv /usr/sbin/vpnc /usr/sbin/vpnc.old
# mv /usr/sbin/vpnc-disconnect /usr/sbin/vpnc-disconnect.old
# ln -s /usr/local/sbin/vpnc /usr/sbin/vpnc
# ln -s /usr/local/sbin/vpnc-disconnect /usr/sbin/vpnc-disconnect

Da bi konvertovao svoje cisco pcf fajlove možeš da iskoristiš skriptu koju dobijaš uz vpnc. A primer konverzije bi bio:

# /usr/share/vpnc/pcf2vpnc youcompany.pcf yourcompany.conf

A taj fajl bi potom trebalo prebaciti u /etc/vpnc/yourcompany.conf

Potom pokreni vpnc:

root@noc:/# vpnc yourcompany
Enter password for admin@xxx.xxx.xxx.xxx:
VPNC started in background (pid: 8444)...
root@noc:/#

I to bi trebalo da ti omogući da nesmetano koristiš vpnc iz linux-a.

Drugi problem na koji ćeš možda naleteti je:

MTU size missconfiguration

Pošto se konačno uspešno konektuješ na udaljeni sistem preko vpnc-a (ili nekog drugog vpn klijenta), može lako da se desi da odmah po uspostavljanju konekcije i tvog logovanja na sistem, odmah posle bilo koje komande, da se dogodi da ti se sesija “smrzne” i da ti se konzola potom diskonektuje. Ovo je najverovatnije problem u konfiguraciji MTU veličine. Ako koristiš vpnc, po uspostavljanju uspešne veze primetićeš da si dobio novi interfejs na mašini, najverovatnije će se zvati tun0. Proveri MTU na tom interfejsu komandom:

root@noc:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xxx.xxx.xxx.xxx  P-t-P:xxx.xxx.xxx.xxx  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  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:500
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Za početak probaj da izmeniš na default vrednost od 1300 sledećom komandom:

root@noc:/# ifconfig tun0 mtu 1300

Potom proveri da li je interfejs zaista dobio novi MTU size:

root@noc:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xxx.xxx.xxx.xxx  P-t-P:xxx.xxx.xxx.xxx  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1300  Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:746 (746.0 b)  TX bytes:4447 (4.3 KB)

Ako jeste, onda si završio posao. Ako međutim i dalje imaš problem kao što sam gore napisao moguće je da tvoji mrežni administratori iz nekog razloga forsiraju drugačiji MTU size, najbolje je da se kod njih informišeš koji MTU koristi udaljena lokacija na koju želiš da se nakačiš VPN-om.

Moram da priznam da ne koristim winblows (sem pod virtuelnom mašinom), ali neko me je svojevremeno pitao kako da namesti MTU na winblows mašini. Nisam nikakav stručnjak za winblows niti me on interesuje, ali regeditom unutar sledećeg key-a možete izmeniti MTU:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\ Interfaces\[Adapter ID]

Vrednost mora biti uneta decimalno!

Eto to bi bilo to što se tiče gore navedena 2 problema prilikom korišćenja VPN-a pod linux-om.

Categories: Linux/BSD Tags: , , , , , ,