Archiv pro štítek: Cisco

Jak obejít politiku Cisco AnyConnect VPN klienta

VPN klient blokuje přístup do LAN

Občas se potřebuji připojit k pracovní VPN. Používáme Cisco Anyconnect Secure Mobility Clienta, který si při každém připojení stáhne profil podle vybrané skupiny a následně podle toho co je v profilu buď blokuje přístup do lokální sítě (tedy i do internetu, pokud nevyužiji firemní proxy server).

Kdyby naše firemní proxy fungovala spolehlivě tak to vem čert, ale jelikož nefunguje dobře tak raději využívám svoje připojení do internetu. Profil VPN skupiny kterou používám pro připojení schválně blokuje přístup do LAN. Musím tedy neustále vypínat a zapínat VPN, podle toho jestli chci hledat něco v Google nebo se chci připojit na nějakou firemní aplikaci.

Jak obejít blokaci

Našel jsem postup na webu superuser.com, který krásně funguje. Ve zkratce jde o to že se zkompiluje jednoduchá knihovna, která bude odchytávat volání Cisco AnyConnect. VPN klient totiž přenastaví a následně hlídá routovací tabulku voláním nějaké funkce ve svojí knihovně. V tom mu zabráníme.

Kompilace knihovny

V první řadě je nutné vytvořit C++ soubor s názvem třeba hack.c:

Následně zkompilujeme do vlastní knihovny pomocí:

Výslednou knihovnu přesunout nejlépe k ostatním knihovnám AnyConnectu:

Nyní je nutné zastavit službu vpnagentd:

Po zastavení služby vpnagentd už stačí jenom upravit init skript, třeba pomocí editoru vi:

V init skriptu je nutné najít místo kde se spouští samotná binárka vpnagentd a upravit takto:

Po tomto kroku je již možné spustit vpnagentd:

Nastavení routingu

Nyní lze po připojení nastavovat libovolně routy – tedy je možné opravit to co nastaví AnyConnect client a používat plnohodnotně lokální síť současně s VPN. Já vždycky po připojení VPN spustím tyto příkazy:

První příkaz odstraní blokování nastavené v iptables (ano – to taky nastavil Cisco AnyConnect, díky). Druhý smaže routu která říká že všechno poleze do rozhraní cscotun0. Třetí příkaz řekne že do rozhraní cscotun0 poleze pouze síť 192.1.0.0/16.