Internet i Lan po VPN – w oparciu o debiana

Internet i Lan po VPN – w oparciu o debiana

Co potrzebujemy?

Serwer na Linux lub Linux VPS –w tutku oparłem się na Debianie, konfiguracja działa KVM i OpenVZ

Konieczne jest mieć dostęp do urządzeń Tun/Tap a także mieć możliwość wykorzystania tablic NAT lub IP Tables.e tutorial where you will find out if these are not enabled.

Aby połączyć się z openvpn konieczny będzie klient – jednak są dostępne zarówno dla Windows jak i Linux.

Postaram się tutaj przedstawić jak uruchomić server OpenVpn dzięki któremu będzie można korzystać z Internetu i sieci Lan z poziomu OpenVpn. Dzięki takiemu rozwiązaniu można ominąć lokalne ograniczenia i blokady portów – cały ruch obsłuży nam OpenVpn. Po poprawnej konfiguracji można będzie np. grać w gry sieciowe, przeglądać strony internetowe, które wczśniej były zablokowane.The Server

Zaczynamy

Instalujemy OpenVPN i OpenSSL

apt-get install openvpn openssl

Otrwórz /etc/default/openvpni zakomentuj wszystko co tam się znajduje.

Teraz utworzymy certyfikaty

cd /etc/openvpn

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa

edytujemy plik: easy-rsa/vars

zmień linię zawierającą: export EASY_RSA=”`pwd`” na export EASY_RSA=”/etc/openvpn/easy-rsa”

Następnie zmień poniższe wartości na odpowiadające Tobie:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

Zapisz i zamknij edytor.

Uruchom tę komendę – zwróć uwagę, że na początku jest kropka poprzedzona spacją i kolejną kropką. Kropki są niezbędne by komenda zadziałała:

. ./easy-rsa/vars

Prawdopodobnie zobaczysz notyfikację o takiej treści:

If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Tak ma być 😉

Kolejna komenda nie powinna wyświetlić żadnych komunikatów:

./easy-rsa/clean-all

Tworzymy certificate authority (ca). Możesz odpowiadać na wszystkie pytania lub po prostu naciskać ENTER. Wciskanie ENTER spowoduje użycie domyślnych parametrów

./easy-rsa/build-ca OpenVPN

Tworzymy klucze serwera – na oba pytania odpowiadamy >tak<

./easy-rsa/build-key-server server

Następnie budujemy klucze dla klientów – powtarzaj tę operację tyle razy ilu klientów masz.

./easy-rsa/build-key client1

Kolejny krok – parametry Diffie Hellman’a:

./easy-rsa/build-dh

Po zakończeniu powinieneś mieć nowy folder: /etc/openvpn/easy-rsa/keys

Tworzymy plik konfiguracyjny dla serwera:

/etc/openvpn/openvpn.conf

dev tun
proto tcp
port 8080
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1"
#set the dns servers
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
log-append /var/log/openvpn
comp-lzo

Wklej wszystko jak niżej i powinno wszystko zadziałać. Możesz jednak zmienić niektóre parametry

Teraz należy poinformować nasz serwer jak ma obsługiwać pakiety internetowe dla naszych klientów:

echo 1 > /proc/sys/net/ipv4/ip_forward

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

Aby mieć pewność, że po restarcie serwera przekazywanie IP będzie aktywne wyedytuj „/etc/sysctl.conf” i usuń komentarz z linii „net.ipv4.ip_forward=1”.

Komenda iptables zakłada domyślnie że urządzenie z dostępem do internetu to eth0. Jeśli masz VPS na OpenVZ zmień eth0 na venet0. Jeśli to nie pomoże sprawdź komendą ifconfig jaki masz interfejs odpowiedzialny za dostęp do internetu i zmodyfikuj odpowiednio powyższą komendę.

Komenda nie podziała również, wtedy, gdy nie będziesz miał aktywnych odpowiednich kernela. Wtedy zobaczysz coś takiego:

WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.

FATAL: Module ip_tables not found.
iptables v1.4.10: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Jeśli wszystko poszło dobrze, sprawdź czy faktycznie komenda zadziałała wpisując taki rozkaz:

sudo iptables -L -t nat

Jeśli nastąpiła pomyłka możesz usunąć reguły wykonując ten rozkaz:

sudo iptables -F -t nat

Teraz zrestartuj serwer

/etc/init.d/openvpn start

Konfiguracja klienta

Wcześniejsze pliki, tworzone były dla klientów – przekaż je każdemu znich wraz z plikiem konfiguracyjnym, który za chwilę stworzymy.

Pliki dla klientów:

ca.crt
client1.crt
client1.key

Powyższe pliki przenieś do folderu openvpn/config

i utwórz plik konfiguracyjny klienta (dla Windows) klient.ovpn

Opcję remote configuration zastąp IP oraz PORTEM serwera OpenVPN
 
dev tun 
client
proto tcp
remote w.x.y.z 8080
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

Pamiętaj, w WINDOWS MUSISZ uruchamiać klienta OpenVPN jako Administrator – tylko Administrator może zmieniać ścieżki routingu!