22.7.2004

TUNEL MEZI LINUXEM A WINDOWS XP

Filed under: networks — nax @ 16:20

Včera se mi konečn? poda??ilo rozb?hnout tunel nebo chcete li VPN mezi m??m linuxov??m routerem a notebookem moji vyvolen? kter?? m?? od p???rody Windows XP. Po v??ech marn??ch pokusech s ipsec (je to btw povinn?? souč??st IPv6 a na linuxu to implementuje projekt openswan – fork d???v?j???ho freeswan projektu), kde se mi to nepovedlo rozjet na windows?ch a nebo s pptpd (pro linux existuje sice server poptop ale ??e??? se to n?jak ??pln? divn? p??es pppd, kter?? m??m prost? spojen?? podv?dom? hlavn? s modemem a vyt??čen??m p??ipojen?m – i kdy? v?m ?e point to point protokol se jen na tohle nevyu??v??) jsem nakonec jako optim??ln? volbou shledal openvpn, co? je userspace implementace vpn, kter?? b??? jak na Windows (m???e i jako slu?ba) nebo na linuxu (norm??ln? daemon, kter?? jen v j??d??e pot??ebuje podporu tun/tap modul).

Nastavit se to d?? jak aby pou??val siln? ??ifrov??n? tak taky tak, aby t??eba jen komprimoval packety. Ono sice v?t??inou je pot??eba ??ifrov??n? (firemn? sf?ra, kter?? sdru?uje dv? lan do jedn? pomoc? VPN), ale zrovna v m?m p???pad? by to bylo tot??ln? na houby a jen bych zbytečn? pekl procesory na obou stran??ch tunelu (nav?c u m? na balk??n? je to docela star?? ??unka, na kter? byste si t??eba quaka 2 rozhodn? nezapa??ili 😉 No abych to zkr??til: U sebe jsem si st??hl zdroj??ky (pozor abyste na obou kompech m?li stejn? verze ! J?? nejd???v st??hnul 2.0beta ale pro widle jsem na??el jen stabiln? 1.6 a byly s t?mi rozd?ln??mi verzemi probl?my) a zkompiloval a nainstaloval.

Vlastn? ne? se pust?m do dal???ho popisu konfigurace, tak bych asi m?l popsat situaci, proč vlastn? ten tunel d?l??m. Inu jde o to, ?e moje p???telkyn? je zrovna p??ipojen?? na to jedin? AP v ??ir?m okol?, kde admin z??sadn? odm?t?? ud?lat default routu do czfree (tedy na mne). V??echny des?tkov? adresy se routuj? spr??vn?, ale internetov? adresy pro kter? samoz??ejm? nem???e b??t v routovac? tabulce z??znam (proto?e internetov? adresy jsou v??echny ostatn? ne? priv??tn?, tedy des?tkov?, 192.168kov? a je??t? p??r rozsah?? m?n? pou??van??ch) a tedy jde je sm???ovat jen pomoc? default routy. No a vzhledem k tomu, ?e ten spr??vce AP m?? svoj? p???pojku UPC a chce aby z routeru m?l p???stup na net p??es svoj? p???pojku, ale ???dn??m klient??m to neumo???uje (ani nem???e podle smluvn?ch podm?nek) tak je tu probl?m, proto?e pro klienty co jsou na n?j p??ipojen? vede routa prost? “do zdi”. J?? jsem u sebe samoz??ejm? ??e??il stejn?? probl?m, ale j?? jsem se neb??l experimentoval a ??e??en?m na ??rovni routov??n? je pou??t tzv. source routing, kter? se d?l?? pomoc? značkov??n? packet?? ve firewallu podle zdrojov? adresy a pomoc? n??stroj?? z bal?ku iproute (v debianu ho m??m jako iproute2) je definov??no n?kolik routovac?ch tabulek a podle značky kterou packet dostal ve firewallu se packet po??le do t? kter? tabulky. T?m je tedy dosa?eno, ?e p???mo z m?ho routeru dostanu default routu do vnit??n? s?t? (a tedy na svoj? p???pojku do upc) ale v??ichni moji klienti maj? v alternativn? routovac? tabulce default routu na internetovou br??nu na??eho czfree cloudu.

Jen?e ten spr??vce AP tvrd?, ?e je to moc pr??ce a potenci??ln? zdroj d?ry ve firewallu a ?e prost? source routing ani n??hodou. Pak tedy ji? zb??vaj? jen dv? varianty. Buďto se pou?ije proxy server (tak jsem to u p???telkyn? ??e??il dosud) ale to m?? tu velik??nskou nev??hodu, ?e to ta aplikace mus? podporovat (t??eba internetov?? prohl??eče jako Mozilla nebo i to IE takov? nastaven? m??) ale t??eba v?t??ina her (nap???klad takov? cube, kter? jsme si s p???telkyn? velmi obl?bili) to neum? a prost? si pak p??es internet nezahrajete a jste odk??z??ni jen na hran? uvnit?? czfree (tedy des?tkov? s?t?). Druh??m zp??sobem je ud?l??n? takzvan?ho tunelu neboli vpn. Polopat? ??ečeno to znamen??, ?e na obou poč?tač?ch se vytvo??? virtu??ln? interfacy kter? se vzhledem t??eba k routov??n? tv?????, ?e jsou spolu p???mo ty poč?tače spojen?. Cel? to potom funguje tak, ?e co se po??le na ten virtu??ln? interface, tak se obal? nov??mi hlavičkami a tam se zap???e adresa p???mo dosa?iteln?? (tedy v m??m p???pad? des?tkov??) a ode??le se to. Na druh?m poč?tači kdy? takov?? packet p??ijde tak se zase rozbal? a ??ekne se ?e ten vnit??ek p??i??el z toho virtu??ln?ho interfacu.

No a teď k t? konfiguraci. Openvpn um? dva re?imy – jednak tun, co? znamen?? simulaci p???m?ho spojen? dvou poč?tač?? a nebo tap, co? je simulace Ethernetu, tedy kdy na jeden segment je p??ipojeno v?ce poč?tač??. Zat?mco v t? prvn? v konfigur??ku nastav?te v?dy jen p???mo viditelnou IP adresu druh?ho poč?tače (remote) a ob? virtu??ln? adresy (????dek ifconfig) tak u varianty tap u serveru (neboli jednoho z poč?tač??, kter?? bude zprost??edkov??vat spojen? ostatn?m) remote nech??te zakomentovan? a do ifconfig nastav?te virtu??ln? adresu svoj? a masku. Na klientech pak do remote nap???ete jm?no serveru a ifconfig bude vypadat stejn? akor??t s t?m rozd?lem, ?e tam bude virtu??ln? adresa toho klienta. Oproti ipsec je to proch??zka r???ov??m krajem. Ostatn? volby nejsou tak d??le?it? a v??e je velice hezky okomentov??no, tak?e by nem?l b??t probl?m.

Je??t? je t??eba ve firewallu na obou stran??ch povolit protokol GRE (neboli PROTOKOL! 47 – POZOR! Ne port, ale protokol) a port kter?? jste pro komunikaci vybrali (defaultn? UDP port 5000). Vyp???u tady co sem p??idal j?? do sv?ho fw:

$IPTABLES -A FORWARD -i $TUNEL1_IF -j ACCEPT
$IPTABLES -A INPUT -i $TUNEL1_IF -j ACCEPT
$IPTABLES -A INPUT -p 47 -s $EVIK_IP -j ACCEPT
$IPTABLES -A INPUT -p UDP -s $EVIK_IP --dport 5000 -j ACCEPT
$IPTABLES -A OUTPUT -s $TUNEL1_IP -j ACCEPT

Jenom p??ipomenu, ?e m??m autentizaci pomoc? statick?ho kl?če, tak?e proto m??m povoleno v??e z interfacu toho tunelu. Na t?ch windows?ch jsem je??t? musel dostat do routovac? tabulky to, aby des?tkov? adresy pos?lal na to svoje AP a ne do tunelu (jinak by to vedlo k tomu, ?e by se packety zabalen? z tunelu o5 cpaly do tunelu). V cmd jsem tedy pustil permanentn? p??id??n? routy (parametr -p za???d? ?e tam ta routa bude i po rebootu) do des?tkov? s?t?:

route -p add 10.0.0.0 mask 255.0.0.0 10.27.9.1

kde to 10.27.9.1 je IP toho AP z rozsahu, kter?? m?? i ten jej? notebook (tedy je ze stejn? s?t?).

Comments are closed.

Powered by WordPress