Weekend Prosjekt: Sette opp en VPN på Linux Router eller Gateway


Våre siste Linux.com resultatene fra undersøkelsen fortalte oss at du ønsker flere tutorials på området, så i dag lanserer vi en ny serie kalt " Helge Projects ". Disse opplæringsprogrammer vil kjøre på fredager, og vil være lenger enn våre vanlige originale tutorials, siden deres formål er å gi Linux-brukere med et morsomt prosjekt å begi seg over helgen. Vennligst dele med dine venner og kolleger og ha det gøy med det! Og, som alltid, gi oss beskjed hvis det er nyttig og hva andre emner du ønsker å se i denne serien.
virtuelle private nettverk (VPN) er ikke lenger domenet av svært følsomme eksterne kontorarbeidere. Som de ansatte blir mer mobile og antall tilkoblede enheter i våre hjem stiger, vi i økende grad finner behov for å koble til vår hjemmenettverk fra hotellrommet, internett kafé, eller rett og slett fra hele byen. Linux tilbyr en rekke gratis VPN alternativer, som du kan sette opp og teste i løpet av bare et par timers tid. Hvis du kjører en Linux-basert router som gateway mellom LAN og Internett, blir oppgaven enda enklere. Få fart VPN kommer i to grunnleggende smaker (sperring proprietære, enkeltleverandør tilbud, selvfølgelig): de som bruker IPSec-protokollen, og de som bruker Transport Layer Security (TLS) eller forgjengeren SSL for å lage en tunnel mellom klientmaskinen og VPN-serveren. IPSec er en offisiell IETF spesifikasjon som fungerer som en sikker Internett Layer erstatning til IP-protokollen. Mens kraftig og robust, lider den av det praktiske problemet med mange leverandører og offentlige tilgangspunkter blokkerer IPSec for å selge tilgang til det som en bedrift service. TLS /SSL-basert VPN operere to lag opp i protokollstakken, i applikasjonslaget, og kryptere trafikk over normal TCP og UDP-kanaler. Nesten alle Internett-leverandører og offentlige tilgangspunkter tillatelse TLS /SSL-trafikk fordi det er viktig å Web handel. I dag den ledende IPSec VPN system for Linux er Openswan, og den ledende TLS /SSL VPN-system er OpenVPN. I tillegg til TLS /SSL tilgjengelighet problemet, har OpenVPN også fordelen av å være tilgjengelig som en pakke for de populære Broadcom-baserte Linux-router distribusjoner: DD-WRT, OpenWRT og Tomato alle kjøre på lavkostnads ​​Linksys og Buffalo router hardware , og kan kjøre OpenVPN med en enkel, web-basert administrasjonspanel som en bonus. OpenVPN Basics For å sette opp en VPN, må OpenVPN installeres på hver maskin som kontakter et endepunkt: i vanlig bruk-sak, det betyr at ruteren på kanten av LAN og bærbare eller mobile device som trenger å koble til det LAN eksternt. Det samme OpenVPN kjørbar kan kjøre som " server " (dvs. på ruteren) eller som " klient " (dvs. den bærbare). Når klienten oppretter en forbindelse til serveren, begge maskinene godkjenne hverandres identiteter, enten med en forhåndsdelt nøkkel, eller med SSL-sertifikater. Sertifikater er den foretrukne metoden. Du oppretter et eget sertifikat for hver maskin når du setter opp VPN; på den måten kan tilbakekalle en kompromittert sertifikat og erstatte den uten å påvirke andre kunder. Videre registrerer deg hver sertifikat med en " mesterbrev " som aldri trenger å bli kopiert eller overført på nett i det hele tatt; du kan selv utføre signeringen skritt koblet fra nettverket helt, og lagre hovednøkkelen i et hvelv. Under kjøring, har OpenVPN to driftsmoduser å velge mellom: Med ruting modus, klientmaskinene få en egen blokk med IP-adresseområdet som fungerer som alle andre subnett. OpenVPN deler ut adresser og ruter trafikk basert på dette subnettet divisjon. I å bygge bro-modus, må du først sette opp en virtuell Ethernet-adapter på serveren som broer serverens fysiske Ethernet-enhet med den virtuelle OpenVPN enhet, skape et enkelt, kombinert grensesnitt. Bridging er særlig mer arbeid, og i de fleste tilfeller den eneste forskjellen er at klientene kobler til LAN DHCP-server og motta IP-adresser fra det - ikke fra OpenVPN - akkurat som lokale maskiner. Men noen bruksmåter, for eksempel multiplayer LAN-spill, er avhengige av denne funksjonaliteten. For alle andre, men starter med ruting modus er den beste ideen. Installere OpenVPN og generere den Mesterbrev


Linux ruteren distribusjon kan eller ikke kan inkludere OpenVPN som en del av sin normale firmware; får den riktige oppdateringen er trinn én. Hvis du arbeider med DD-WRT, den _mega og _vpn bygger inkluderer OpenVPN støtte; disse kan gi deg blinke direkte på ruteren. Utvikler Keith Moyer gir Tomato firmware pakker med OpenVPN forhåndsinstallert på hans nettsted og gir jevnlige oppdateringer. OpenWRT sender ikke pre-installert firmware bilder med OpenVPN men gir det som en installerbar pakke. Til slutt, alle store desktop og server Linux-distribusjoner inkluderer OpenVPN i sine pakke styringssystemer - hvis du bruker en standard PC som OpenVPN server, bare installere pakken. Deretter installerer OpenVPN på klientmaskinene du skal bruke for å koble til LAN. Offisielle binærfiler er tilgjengelig for OS X og Windows på OpenVPN siden. Linux-pakken finnes også, men prøv din distro sitt pakkesystem først. Du trenger en fungerende OpenVPN installasjon for å skape de nødvendige SSL-sertifikater; for enkelhets skyld antar vi at dette er en Linux-boks, men de samme trinnene er mulig på andre operativsystemer. OpenVPN inneholder et sett med praktiske sertifikat generasjon skript, som skal være plassert innenfor installasjonsmappen (vanligvis /usr /share /doc /openvpn /eksempler /lett-RSA /). Enten bytte til denne katalogen, eller kopiere skript til et annet sted før du fortsetter. Kjør først (enten som root, eller innledes med sudo) klargjøringsskript:

./init-config

Deretter initial innstillingene med:

sudo kilde. /vars

Så fjerne eventuelle tiloversblevne filer fra tidligere kjøringer med sudo

./clean-all Kjør sudo ./build-ca å generere master sertifikat og en tilhørende nøkkel (som også er referert til som Certificate Authority). Skriptet vil be deg om diverse informasjon, som for landet ditt navn, organisasjonsnavn, og e-postadresse - for en privat brukte sertifikat som dette, svarene er ikke kritisk, men du kan ikke la dem stå tomme. Det viktigste er Common Name, som i master sertifikat sak bør velges for å være klar i sin hensikt, så dere ikke glemmer - som " Min OpenVPN Master CA. " Resultatet vil være at filene ca.crt inneholder mesterbrev, og ca.key, som inneholder styrings. Opprett, Sign, og installer Dine sertifikater Deretter oppretter du et sertifikat for OpenVPN serveren ved å kjøre:

sudo ./build-key-server server1

og for hver klient ved å kjøre:

sudo ./build-key client1

gjennom

sudo ./build-key clientN

Som tidligere vil skriptene be deg om informasjon, inkludert Common Name . Det er en veldig god idé å velge en lett-assosiert Common Name; i disse eksemplene filene opprettet vil ha prefikset server1 og client1 gjennom clientN, slik gjenbruk dem som vanlige navn gjør alt enkelt. Hver build-key skriptet vil også spørre deg om du ønsker å signere sertifikatet blir opprettet - alltid si ja. Denne signerer nylig preget sertifikat via master CA nøkkelen du opprettet tidligere; det er dette vanlig signatur som gjør at serveren og klientene å godkjenne hverandre i naturen. Sist men ikke minst, å kjøre sudo ./build-dh generere Diffie-Hellman nøkkel avtale parametere. Disse vil bli lagret på serveren, og brukes til å sette opp tilkoblinger. Med alle dine kryptografiske filer nå fullført, er det på tide å flytte dem til riktig plass på serveren og klientene. Hver klient trenger bare en kopi av sitt eget sertifikat og matchende nøkkel, for eksempel client1.crt og client1.key, pluss en kopi av master CA-sertifikat, men ikke master CA tasten. Serveren trenger en kopi av sitt sertifikat og nøkkel, Diffie-Hellman parametre, og mesteren CA-sertifikatet. Sikkerheten bevisste vil fortelle deg at det er viktig å overføre disse filene (spesielt nøkler) via en sikker kanal. Gjerne hvis du bruker en USB-nøkkel for å flytte filene til kundene, bør du sikkert slette den når du er ferdig - USB-nøkler er altfor lett å miste. Server nøkler vil bli kopiert til ruteren via grensesnittet for nettadministrasjon, så ikke utføre det gå over usikret WiFi. Hoved CA nøkkelen ikke tjener noen funksjon etter signeringen skritt, så det kan være trygt lagret offline. Server Configuration Gå til ruterens web administrasjonspanel. OpenVPN er normalt finnes under " tjenester " kategorien, sammen med Quality-of-Service, VoIP ruting og andre add-on funksjonalitet. Du må vanligvis aktivere tjenesten, velger du de grunnleggende innstillingene, kopiere over sertifikater og nøkler, og start systemet for å starte OpenVPN daemon. På DD-WRT er OpenVPN konfigurasjon ligger i " tjenester " - > " tjenester " tab. I den gjeldende utgaven (V24 Service Pack 1), kan du utføre all nødvendig konfigurasjon via grensesnittet for nettadministrasjon; før i Service Pack 1, måtte du laste opp en server konfigurasjonsfil og gjøre andre endringer via SSH. De valgte mislighold er fornuftig for en ruting-modus VPN, selv om du kan endre TCP /UDP-portnummer som skal brukes (standard er 1 194) og om du vil bruke TCP eller UDP som transport (standard er UDP), hvis det er nødvendig. Skjermen konfigurasjon har tekst-entry bokser der må du klippe og lime de kryptografiske sertifikater og nøkler (som GPG og SSH-nøkler, de er ASCII-tekst), og der du lime eller skrive konfigurasjonsfilen. Det finnes eksempler på server- og klientkonfigurasjonsfiler i samme katalog som den lett RSA mappe; en grunnleggende server config filen ser slik ut: trykk " rute 192.168.1.0 255.255.255.0 " Serveren 192.168.2.0 255.255.255.0 dev tun0 proto udp Keepalive 10 120 dh /tmp/openvpn/dh.pem ca /tmp/openvpn/ca.crt cert /tmp/openvpn/cert.pem nøkkelen /tmp/openvpn/key.pem For å forklare, " trykk " linjen angir hvilket nettverk adresser hører til LAN -. her, 192.168.1 *. &Quot; server " linjen indikerer at OpenVPN kunder vil bli gitt 192.168.2. * adresse blokk. Lenger ned, " dev tun0 " linjen viser at dette er en ruting-modus oppsett - bridging mode VPN bruke tap0 istedenfor tun0. De siste par linjer indikerer plasseringen av de opplastede kryptografiske filer. Endelig satt " Begynn typen " til " WAN Up " å fortelle OpenVPN å starte når WAN-grensesnittet er aktivert, og klikk på " Bruk innstillinger " knapp. Hvis du kjører en brannmur på ruteren, må du passe på at du tillater trafikk på UDP port 1194. Client Configuration and Testing Client konfigurasjonen er mer oversiktlig; ingen web-bare grensesnittet er nødvendig. Bare kopier klientsertifikatet og viktige filer til /etc /openvpn /katalog og lage (eller kopiere fra eksempelfiler) client.conf. En grunnleggende filen skal inneholde: klient fjern yourserver.dyndns.org 1194 remote-cert-TLS server dev tun0 proto udp resolv-prøve uendelig nobind vedvare-key vedvare-tun float ca ca.crt cert client1.crt nøkkelen client1.key Det viktige verdier for å sjekke er " dev " oppføring, navnene på de kryptografiske filer og protokollen. &Quot; fjern " linjen gir navnet eller adressen til OpenVPN server og portnummeret som å koble til. Hvis du har en statisk IP-adresse på ruteren ytre grensesnittet, kan du plassere det her. De fleste Internett-leverandører tilbyr ikke dette, men slik at du kan bruke en dynamisk DNS-tjeneste i stedet. DD-WRT kommer med innebygd støtte for en rekke Dynamic DNS-tjenester kan du prøve. Gang satt opp, starte OpenVPN klient service med OpenVPN /etc/openvpn/client.conf (gjøre dette mens ikke tilkoblet via LAN, selvfølgelig). Klienten vil rapportere eventuelle feilmeldinger i konsollen utgang; du bør se tiden stemplet utgang rapportering initialisering av TLS-tunnelen. Prøv å pinge en IP-adresse på LAN; et svar - selv om det er treg - indikerer at VPN er oppe og går. Vanlige problemer når du setter opp OpenVPN utgangspunktet inkluderer brannmur problemer (som du kan teste for ved å deaktivere brannmuren midlertidig), server konfigurasjonsfil trøbbel (som du kan ta ved at feillogging på ruteren) og ruting problemer. Dessverre, fordi du må teste OpenVPN fra et eksternt nettverk, er det alltid en sjanse for at WiFi hotspot du kobler til tilfeldigvis har en adresse konflikt med den reserverte IP adresse plass du bruker på hjemme LAN. Hvis 192.168.1.100 brukes på begge steder, ikke OpenVPN vet ikke hvor du skal rute pakkene. Den eneste sikker måte å omgå dette problemet er å endre adresser! Du kan også finne forskjeller i plasseringen av eksempelfiler mellom de offisielle OpenVPN pakker og de som fulgte med fra din Linux-distribusjon. OpenVPN er bred støtte nok, skjønt, at det å finne riktig katalog er vanligvis ikke mer komplisert enn å søke fordelingen dokumentasjon. For OS X og Windows-klienter, kan du feste med kataloginformasjon gitt av OpenVPN prosjektet. Digging Deeper Sette opp OpenVPN på et hjem Linux router er enkel nok med moderne router distribusjoner. Men du kan ikke finne at det oppfyller alle dine behov, eller du må kanskje sette opp OpenVPN på en fullverdig server. Det beste stedet å begynne er OpenVPN prosjektets dokumentasjon området, som har detaljerte veibeskrivelser for server installasjon og oppsett, samt en referanse til de ulike konfigurasjonsparametere. Sette opp en bro modus VPN er en god neste trinn hvis du er komfortabel med Linux Ethernet bridging funksjonalitet. Til tross for å kreve ekstra trinn ved oppsett tid, er en bro nettverk lettere i noen henseender å opprettholde; alle tilkoblede OpenVPN kunder vises som klienter på LAN, på linken nivå. Dette betyr ikke bare at de kan sende og motta kringkastingstrafikk, men når det brukes mellom to rutere kan koble to eksterne kontorer i en enkel nettverkskonfigurasjon som er enklere å administrere. Den OpenVPN Området har en full referanse på å bruke Ethernet bridging med VPN. Til slutt, hvis din ISP ikke blokkerer IPSec trafikk, vurdere å lære Openswan og sette opp en IPSec VPN. Bruke IPSec har den fordelen at alle applikasjonslaget og alle TCP og UDP-trafikk kan bruke den uten endringer. Riktig å sette opp en IPSec VPN er kompleks, kanskje for mye for et hjemmenettverk, men det bør ikke stoppe deg fra å utforske den. Hvem vet når du trenger enda en VPN alternativ i verktøybeltet?