OpenVPN server Docker konteinerihalduriga GitHub Linkedin Coderwall Stack Overflow Google+

Mõnda aega tagasi kirjutasin, kuidas OpenVPN serverit üles seada. See on päris tülikas protsess, olgugi, et seda tihti teha vaja pole. Dockeri abiga on selle ülesande (küll lihtsustatud, kuid siiski) täitmine imelihtne.

Dockerit kasutades on üks Dockeri põhilistest arendajatest(Jérôme Petazzoni) loonud näidislahenduse OpenVPNi seadistamisest Dockeriga.

Ma forkisin selle projekti, et lisada fallback portide hulka ka veel 53/udp, et vpn ühendust oleks võimalik luua ka võrkudest, mis nõuavad veebipõhist autentimist. Kui keegi kavatseb seda järgi teha, siis omal vastutusel loomulikult. :)

Dokumenteerin siis lühidalt töö käigu.

Loome GitHubi repositooriumi põhjal Dockeri konteineri ja paneme talle ka kohe nimeks “dockvpn”, et oleks hiljem teistest kergesti eristatav:

docker build -t dockvpn github.com/Raidok/dockvpn

Kui port 53 pole oluline, võib buildimiseks kasutada ühte kahest järgnevast variandist:

docker build -t dockvpn github.com/jpetazzo/dockvpn
docker pull -t dockvpn jpetazzo/openvpn

Esimene kasutab originaalautori GitHubi ja teine tema Dockeri repositooriumit.

##Port 53/udp

Kui valisite ühe viimasest kahest konteineri loomise variandist, võib selle osa siin vahele jätta ja otse käivitamise juurde asuda.

Selleks, et port 53 kasutatav oleks, peame tegema ühes Linuxi konteinerite konfifailis väikese muudatuse. Nimelt kasutab LXC sisemiselt konteineritele privaatsete IP-aadresside jagamiseks dnsmasq tarkvara, mille üheks funktsiooniks DHCP kõrval on DNS-teenuse pakkumine. See aga hõivab mulle vajaliku pordi 53/udp. Selle parandamiseks:

nano /etc/init/lxc-net.conf

Otsime seal üles rea, kust käivitatakse dnsmasq ja lisame sinna kuskile vahele --port=0 nagu näiteks:

dnsmasq -u lxc-dnsmasq --strict-order --bind-interfaces --pid-file=${varrun}/dnsmasq.pid --conf-file= --listen-address ${LXC_ADDR} --port=0 --dhcp-range ${LXC_DHCP_RANGE} --dhcp-lease-max=${LXC_DHCP_MAX} --dhcp-no-override --except-interface=lo --interface=${LXC_BRIDGE} --dhcp-leasefile=/var/lib/misc/dnsmasq.${LXC_BRIDGE}.leases --dhcp-authoritative || cleanup

Seejärel taaskäivitame lxc-net:

service lxc-net restart

##Käivitamine

Ehitame konteineri githubi repo baasil:

sudo docker build --rm -t dockvpn https://github.com/Raidok/dockvpn.git

Põhiprotsessi käivitamiseks(osa -p 53:53/udp järgnevas käsus on valikuline):

DOCKVPN_ID=$(sudo docker run -d -privileged -p 1194:1194/udp -p 443:443/tcp -p 53:53/udp dockvpn)

Ajutiselt paneme ka käima protsessi, mis konfiguratsioonifaili välja annab:

sudo docker run -t -i -p 8080:8080 -volumes-from $DOCKVPN_ID dockvpn serveconfig

See annab välja aadressi, mille kaudu konfiguratsioonifaili brauseriga kätte saab. Brauser arvatavasti hoiatab ka ebausaldusväärse serveri pärast - pole põhjust karta, sertifikaat on enda allkirjastatud. Kui konfiguratsioonifail on käes, siis CTRL+D, et jagamine lõpetada.

Täägid: linux  ubuntu  vps  vpn  docker 
« Linuxi spikker Linuxi konteinerid ja Docker »
comments powered by Disqus