Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Witam,

Skonfigurowałem sobie OpenVPN'a i połączenie pomiędzy siecią 192.168.1.0/24, a 192.168.10.0/24 działa i mogę pingować wszystkie hosty w sieci 192.168.1.0/24.

Zrobiłem: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE


Polecenie na kliencie VPN: ip r s
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
10.8.0.1 via 10.8.0.5 dev tun0
192.168.1.0/24 via 10.8.0.5 dev tun0
192.168.10.0/24 dev wlan0 proto kernel scope link src 192.168.10.123 metric 2
169.254.0.0/16 dev wlan0 scope link metric 1000
default via 192.168.10.1 dev wlan0 proto static



Polecenie na serwerze VPN: ip r s
10.8.0.1 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
10.8.0.0/24 via 10.8.0.2 dev tun0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.120
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
169.254.0.0/16 dev eth0 scope link
default via 192.168.1.1 dev eth0


Połączenie VPN jest realizowane tym samym połączeniem co aktualny mój ruch do internetu.

Teraz chciałbym, aby mój ruch do internetu odbywał się poprzez połączenie VPN, czyli przez bramę 192.168.1.1, a nie 192.168.10.1.
Co jeszcze należy dodać?


internet
|
|
gw (192.168.1.1)
|
|
/eth0\ (192.168.1.120)
---------------------
| PC1 |
---------------------
\tun0/ (10.10.0.1)
|
|
|
/tun0\ (10.10.0.6)
---------------------
| PC2 |
---------------------
\wlan0/ (192.168.10.100)
|
|
|
gw (192.168.10.1)
|
|
internet
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: OpenVPN - wybór bramy do internetu

Use the Google, Luke.

http://openvpn.net/index.php/open-source/documentation...
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Irek Słonina:
Use the Google, Luke.

http://openvpn.net/index.php/open-source/documentation...

Ok dzięki, rozumiem, że chodzi o wpis:

push "redirect-gateway def1"

tylko mam pytanie co do "def1" - w moim przypadku to będzie interfejs na serwrze VPN - eth0?
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: OpenVPN - wybór bramy do internetu

Dominik Grzywaczewski:
Irek Słonina:
Use the Google, Luke.

http://openvpn.net/index.php/open-source/documentation...

Ok dzięki, rozumiem, że chodzi o wpis:

push "redirect-gateway def1"

tylko mam pytanie co do "def1" - w moim przypadku to będzie interfejs na serwrze VPN - eth0?

man openvpn

--redirect-gateway [local] [def1]
(Experimental) Automatically execute routing commands to cause all outgoing IP traffic to be redirected over the VPN.

This option performs three steps:

(1) Create a static route for the --remote address which forwards to the pre-existing default gateway. This is done so that (3) will not create a routing loop.

(2) Delete the default gateway route.

(3) Set the new default gateway to be the VPN endpoint address (derived either from --route-gateway or the second parameter to --ifconfig when --dev tun is specified).

When the tunnel is torn down, all of the above steps are reversed so that the original default route is restored.

Add the local flag if both OpenVPN servers are directly connected via a common subnet, such as with wireless. The local flag will cause step 1 above to be omitted.

Add the def1 flag to override the default gateway by using 0.0.0.0/1 and 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of overriding but not wiping out the original default gateway.

Using the def1 flag is highly recommended, and is currently planned to become the default by OpenVPN 2.1.



def1 to jest flaga, nie zmieniasz jej na nic.
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Dzięki, faktycznie działa tak jakbym chciał.

Ostatnie moje pytanie, które pojawiło się właśnie przed chwilą w trakcie korzystania:

Mam apache2 z autoryzacją po adresie IP: 1.2.3.4

Łącze się ze swojego kompa o adresie IP: 5.6.7.8 przez tunel VPN i sprawdzam w danej chwili w dowolnym serwie whatismy ip i pokazuje mi 1.2.3.4 - czyli ok.

Natomiast gdy chce wejść na mojego apache2, który tylko przyjmuje adres ip: 1.2.3.4 pokazuje mi w logach, że łącze się z adresu 5.6.7.8 i odrzuca co jest normalne.

Dodam, że serwer WWW stoi na tej samej maszynie co serwer VPN.

Coś jeszcze trzeba ustawić w VPN'ie?

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

Dodam, że serwer WWW stoi na tej samej maszynie co serwer VPN.
Coś jeszcze trzeba ustawić w VPN'ie?

Nic. Wychodzac na zewnatrz wychodzisz przez NAT, czyli Twoje zrodlowe IP jest zastepowane adresem interfejsu bramy/routera ten NAT realizujacego. Apache stoi wewnatrz Twojej sieci, wiec NAT nie ma miejsca.

Musisz dodac IP z VPN do listy autoryzowanych IP w Apache.

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

A przypadkiem nie jesteś przekierowany na apache przed maskaradą ?
edit
Łukasz mnie ubiegł.Marcin Bojko edytował(a) ten post dnia 14.09.10 o godzinie 12:21
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Łukasz S.:
Dodam, że serwer WWW stoi na tej samej maszynie co serwer VPN.
Coś jeszcze trzeba ustawić w VPN'ie?

Nic. Wychodzac na zewnatrz wychodzisz przez NAT, czyli Twoje zrodlowe IP jest zastepowane adresem interfejsu bramy/routera ten NAT realizujacego. Apache stoi wewnatrz Twojej sieci, wiec NAT nie ma miejsca.

Musisz dodac IP z VPN do listy autoryzowanych IP w Apache.

Tylko czy wchodząc na serwer WWW w logu access_log mam adres IP m
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Łukasz S.:
Dodam, że serwer WWW stoi na tej samej maszynie co serwer VPN.
Coś jeszcze trzeba ustawić w VPN'ie?

Nic. Wychodzac na zewnatrz wychodzisz przez NAT, czyli Twoje zrodlowe IP jest zastepowane adresem interfejsu bramy/routera ten NAT realizujacego. Apache stoi wewnatrz Twojej sieci, wiec NAT nie ma miejsca.

Musisz dodac IP z VPN do listy autoryzowanych IP w Apache.

Tylko czy wchodząc na serwer WWW w logu access_log mam adres IP mój publiczny z klienta, a nie z VPN'a, tak powinno być?

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

Tylko czy wchodząc na serwer WWW w logu access_log mam adres IP mój publiczny z klienta, a nie z VPN'a, tak powinno być?

Jesli serwer www stoi na tej samej maszynie gdzie konczy sie tunel vpn i slucha na IP znajdujacym sie w tej samej podsieci co tunel vpn, to powinienes widziec adres klienta otrzymany via vpn. Natomiast jesli serwer www slucha tylko na plublicznym IP, bedziesz przechodzil przez NAT i wtedy zobaczysz IP maszyny realizujacej NAT.

Nie sprecyzowales konfiguracji serwera www, wiec zalozylem, ze ustawienia sa domyslne. Domyslnie Apache slucha na wszystkich interfejsach.
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Łukasz S.:
Tylko czy wchodząc na serwer WWW w logu access_log mam adres IP mój publiczny z klienta, a nie z VPN'a, tak powinno być?

Jesli serwer www stoi na tej samej maszynie gdzie konczy sie tunel vpn i slucha na IP znajdujacym sie w tej samej podsieci co tunel vpn, to powinienes widziec adres klienta otrzymany via vpn. Natomiast jesli serwer www slucha tylko na plublicznym IP, bedziesz przechodzil przez NAT i wtedy zobaczysz IP maszyny realizujacej NAT.

No właśnie skoro dzięki dyrektywnie: push "redirect-gateway def1" wychodzę do internetu bramą domyślną serwera VPN to dziwi mnie fakt, że gdy wychodzę do serwisu whatismyip.com pokazuje mi adres publiczny sieci w której znajduje się serwer VPN oraz WWW, natomiast log w apache2 pokazuje mój publiczny adres ip.

Chciałbym zaznaczyć, że ten serwer VPN oraz WWW jest za natem i ma adres 192.168.1.120 w sieci lokalnej.

Czy w takim wypadku jak mój domowy komputer połączony z VPN'em kierując się do domeny test.example.com -> która pokazuje na adres publiczny sieci serwera WWW (oczywiście port 80 przekierowany na routerze 192.168.1.1 na 192.168.1.120) to serwer WWW, który adres ip powinien pokazać?

Nie sprecyzowales konfiguracji serwera www, wiec zalozylem, ze ustawienia sa domyslne. Domyslnie Apache slucha na wszystkich interfejsach.

Tak dokładnie jestDominik Grzywaczewski edytował(a) ten post dnia 14.09.10 o godzinie 20:34

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

No właśnie skoro dzięki dyrektywnie: push "redirect-gateway def1" wychodzę do internetu bramą domyślną serwera VPN to dziwi mnie fakt, że gdy wychodzę do serwisu whatismyip.com pokazuje mi adres publiczny sieci w której znajduje się serwer VPN oraz WWW, natomiast log w apache2 pokazuje mój publiczny adres ip.

Jesli przekierowanie bramy dziala, takie cos nie powinno miec miejsca bo caly ruch powinien isc tunelem i w logach serwera po drugiej stronie powinienes widziec swoj adres z VPN, tylko i wylacznie. Na whatismyip.com powinienes widziec adres interfejsu realizujacego NAT po drugiej stronie tunelu.
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Wykonałem w ramach testów mtr ze swojego komputera domowego podłączonego do VPN do:

1. onet.pl

HOST: xps Loss% Snt Last Avg Best Wrst StDev
1. 10.8.0.1 0.0% 5 14.4 14.7 12.7 17.4 1.8
2. 192.168.1.1 0.0% 5 14.0 15.2 12.7 21.3 3.5
3. ??? 100.0 5 0.0 0.0 0.0 0.0 0.0
4. ??? 100.0 5 0.0 0.0 0.0 0.0 0.0
5. 84.116.252.45 0.0% 5 23.9 26.4 22.3 31.4 3.8
6. 84.116.252.186 0.0% 5 25.5 22.8 20.4 25.5 2.1
7. 195.182.218.231 0.0% 5 29.9 33.0 26.5 46.3 7.7
8. 213.180.151.18 0.0% 5 28.4 31.2 26.9 37.5 4.1
9. 213.180.151.65 0.0% 5 28.1 28.6 26.3 32.7 2.6
10. 213.180.146.27 0.0% 5 37.8 47.4 33.9 61.9 11.5


2. dowolnego vhosta, który jest obsługiwany przez mój wewnętrzny serwer WWW

HOST: xps Loss% Snt Last Avg Best Wrst StDev
1. 192.168.10.1 0.0% 5 0.9 1.0 0.9 1.1 0.1
2. ??? 100.0 5 0.0 0.0 0.0 0.0 0.0


W obu przypadkach jestem połączony z VPN'em, ale tylko w pierwszym przechodzi przez 10.8.0.1, czy brakuje jeszcze czegoś w configu serwera VPN?Dominik Grzywaczewski edytował(a) ten post dnia 15.09.10 o godzinie 10:22

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

W obu przypadkach jestem połączony z VPN'em, ale tylko w pierwszym przechodzi przez 10.8.0.1

W drugim zostajesz po prostu w tej samej podsieci. Tak to przynajmniej wyglada.
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Łukasz S.:
W obu przypadkach jestem połączony z VPN'em, ale tylko w pierwszym przechodzi przez 10.8.0.1

W drugim zostajesz po prostu w tej samej podsieci. Tak to przynajmniej wyglada.
Dlaczego skoro serwer WWW jest ma drugim końcu tunelu i ma adres 192.168.1.120?

W apche2 dla danego vhosta mam ustawiony dostęp tylko dla danego ip_publiczne z podsieci w której znajduje się serwer VPN oraz WWW.

Można w jakiś sposób wymusić wyjście przez bramę 192.168.1.1 i powrót już do vhosta z ip_publicznym, które będzie wpuszczane?

Nie chciałbym robić nie wiadomo jak długiej listy tych adresów ip publicznych do zautoryzowania, macie jakiś inny pomysł ?

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

Zreplikowalem sobie Twoja konfiguracje, bo nie dawalo mi to spokoju. Serwer to Debian, klient Windows XP.

Laczac sie z serwerem www po drugiej stronie, w ogole nie idziesz przez tunel. Przyczyna jest dosc trywialna - Twoj klient ignoruje trase "via 10.8.0.5" jesli laczysz sie z adresem serwera OpenVPN. W koncu nie moze wysylac pakietow do koncowki tunelu, przez tunel. (*)

W zasadzie, trzy minuty debugowania...
Rozwiazanie jest banalne (w sumie, trzy operacje po stronie serwera), ale musisz sam do tego dojsc.

(*) EDIT: Mowa o pakietach opakowujacych to co leci tunelem.Łukasz S. edytował(a) ten post dnia 17.09.10 o godzinie 02:36
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Narazie moje pliki konfiguracyjne wyglądają tak:

server.conf

local 192.168.1.120
port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/host.crt
key /etc/openvpn/easy-rsa/2.0/keys/host.key # This file should be kept secret
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
ifconfig 10.8.0.1 10.8.0.2
push "redirect-gateway def1"
client-to-client
server 10.8.0.0 255.255.255.0
#ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
keepalive 10 120
status /etc/openvpn/openvpn-status.log
comp-lzo
persist-key
persist-tun
verb 3


client.conf

client
dev tun
proto tcp
remote 89.76.xxx.xxx 1194
ifconfig 10.8.0.2 10.8.0.1
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert klient1.crt
key klient1.key
comp-lzo
verb 30


Natomiast Łukaszu Tobie chodzi o trasę, która jest na kliencie:
10.8.0.0/24 via 10.8.0.5 dev tun0 ?Dominik Grzywaczewski edytował(a) ten post dnia 17.09.10 o godzinie 13:37

konto usunięte

Temat: OpenVPN - wybór bramy do internetu

10.8.0.0/24 via 10.8.0.5 dev tun0 ?

Tak.

Twoim problemem nie jest konfiguracja tunelu, tylko sposob w jaki routowane sa pakiety przez tunel. *Nic* nie zrobisz zeby wymusic routowanie pakietow do Apache sluchajacego na 192.168.1.120 przez tunel dopoki na tym samy adresie slucha OpenVPN.

Musisz przeniesc OpenVPN lub Apache na inny adres. Zrob alias na eth0, dodaj mu jakies wolne IP w 192.168.1.X i przekonfiguruj albo Apache, albo OpenVPN zeby sluchal na tym IP.
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Łukasz S.:
10.8.0.0/24 via 10.8.0.5 dev tun0 ?

Tak.

Twoim problemem nie jest konfiguracja tunelu, tylko sposob w jaki routowane sa pakiety przez tunel. *Nic* nie zrobisz zeby wymusic routowanie pakietow do Apache sluchajacego na 192.168.1.120 przez tunel dopoki na tym samy adresie slucha OpenVPN.
Wymuszenie muszę zrobić po stronie serwera czy klienta?

Tutaj muszę skorzystać z IPTABLES i tablicy NAT?

Musisz przeniesc OpenVPN lub Apache na inny adres. Zrob alias na eth0, dodaj mu jakies wolne IP w 192.168.1.X i przekonfiguruj albo Apache, albo OpenVPN zeby sluchal na tym IP.

Już to zrobiłem, OpenVPN słucha na 192.168.1.121
Dominik Grzywaczewski

Dominik Grzywaczewski Senior Cloud
Engineer

Temat: OpenVPN - wybór bramy do internetu

Jeszcze jedno pytanie

Skoro mam dwa wpisy

w server.conf:

ifconfig 10.8.0.1 10.8.0.2

w client.conf:

ifconfig 10.8.0.2 10.8.0.1

to jest jednoznaczne z otrzymaniem adresu IP 10.8.0.1 dla serwera, a 10.8.0.2 dla klienta?

Następna dyskusja:

Problem z OpenVPN w trybie ...




Wyślij zaproszenie do