Ograniczenia i limity nie interesują mnie, czyli życie na publicznej sieci.

Często i gęsto zdarza się, że sieci na uczelniach, w hotelach bądź restauracjach mają nałożone poważne restrykcje.
Możliwe, że kiedyś ktoś narozrabiał, i w wyniku tego konieczne było ograniczenie możliwości.
Jednak co w sytuacji, w której szerszy dostęp do internetu potrzebny jest w dobrych celach?
Sytuacja życiowa inspirująca napisanie tego artykułu: sieć na uczelni, która dopuszcza ruch z siecią Internet tylko i wyłącznie na portach 80 oraz 443 TCP.


nie biorę żadnej odpowiedzialności za ewentualne konsekwencje powstałe w wyniku z zastosowania opisanych dalej metod


Mi z pomocą przyszedł VPN.

W celu wykorzystania go do ominięcia ograniczeń sieci, potrzebny jest jakiś serwer na zewnątrz, najlepiej ze stałym IP.

Serwery takie bywają zaskakująco tanie, a demon prędkości wcale nie jest tutaj wymagany.
Osobiście korzystam z vpsa o 128MB ramu, którego opisałem wcześniej. Zobaczmy jak to wyjdzie w praniu!

Krok zero, zanim rozpoczniemy robić cokolwiek - trzeba upewnić się, że na naszym VPSie mamy włączony TUN/TAP, który będzie niezbędny.

Stosowna opcja dostępna w panelach administracyjnych.

Pierwszy krok, to instalacja serwera OpenVPN.

W zależności od dystrybucji można użyć różnych menadżerów pakietów, albo kompilować ze źródeł, jednak podjąłwszy się takiego tematu, wierzę że poradzisz sobie z instalacją serwera!

Dalsze etapy to normalne generowanie kluczy serwera:

# source vars
# ./clean-all
# ./build-ca
# ./build-key-server $nazwa-serwera
# ./build-dh
# cd /etc/openvpn/easy-rsa/keys/
# cp $nazwa-serwera.key $nazwa-serwera.crt ca.crt dh2048.pem /etc/openvpn

teraz przychodzi pora na odpowiednią konfigurację serwera OpenVPN

port 443
proto tcp
dev tun
ca ca.crt
cert smwh.crt
key smwh.key
dh dh2048.pem

server 10.8.0.0 255.255.255.0

keepalive 10 120

#pchamy ruch przez tunel
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 129.250.35.250"
push "dhcp-option DNS 74.82.42.42"

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

# wymuszamy autoryzacje po haśle przez moduł PAM.
client-cert-not-required
plugin /usr/lib/openvpn/openvpn-auth-pam.so login

status openvpn-status.log

verb 4

Sam plik konfiguracyjny to nie wszystko. Na serwerze musimy jeszcze włączyć “przekazywanie internetu”(nie mam pojęcia jak mogę to powiedzieć po polsku! czekam na sugestie w komentarzach) wykonując jako root:

# sysctl -w net/ipv4/ip_forward=1

czy działa?

# cat /proc/sys/net/ipv4/ip_forward
1

zwrócono 1, czyli śmiga!

Ważna rzecz - musimy jeszcze utworzyć maskaradę na odpowiednim interfejsie.
naczej całość by działała tak jak turyści którzy mają mapę, ale nie ma na niej zaznaczonych dróg/ściezek.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

Na tym etapie serwer mamy gotowy 🙂


Konfiguracja klienta

No, jak serwer mamy gotowy, to jaki problem z klientem?

Jakikolwiek dowolny komputer z zainstalowanym klientem VPN może się połączyć.
Musimy na niego tylko dostarczyć certyfikat CA (czyli plik ca.crt który generowaliśmy wcześniej)
a następnie nawiązać połączenie:

openvpn --remote adres.serwera port protokół(tcp)--comp-lzo --dev tun --auth-user-pass --client --ca ca.crt

port podajemy, oddzielając go od adresu serwera spacją, a do logowania używamy danych dowolnego systemowego użytkownika na serwerze (błagam, tylko nie roota!)

Android

No tu nie jest tak kolorowo, łatwo szybko i przyjemnie.

Jeżeli korzystamy z oficjalnej aplikacji OpenVPN musimy koniecznie utworzyć plik z profilem,
w dodatku aplikacja wymaga rozszerzenia .ovpn

Trudno, tworzymy. Trudne to nie będzie, patrzcie:

zawartośc pliku z profilem:

client
dev tun
proto tcp
remote $adres.serwera $port
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0

Razem z tym plikiem(w tym samym folderze) umieszczamy wygenerowany wcześniej ca.crt.

Gotowy profil .ovpn możemy śmiało dodać do aplikacji OpenVPN i cieszyć się z profitu.

GOTOWE!

po nawiązaniu połączenia nie straszny już nam administrator lokalnej sieci, i do woli(no, na tyle na ile zewnętrzny serwer nam pozwoli) możemy korzystać z zasobow sieci Internet.

Leave a Reply

Your email address will not be published. Required fields are marked *