mcteusz Napisano Luty 4, 2010 Zgłoszenie Share Napisano Luty 4, 2010 Witam Mam nadzieję, że trafiłem w odpowiedni dział. W pracy korzystamy z OpenVPN'a. Oddziały zestawiają połączenie z naszym serwerem w centrali i jest wszystko cacy... Ale dopóki nie siądzie łącze od dostawcy internetowego. Chciałbym zabezpieczyć się na taką właśnie ewentualność. Mamy 2 niezależne łącza od dwóch różnych dostawców... Powiedzmy, że początek naszej sieci zaczyna się w obu przypadkach od routerka Linksysa. Dalej (w środku) wszystko jest w jednej sieci lokalnej... 1. Router A, dostawca A, adres zewnętrzny 80.80.80.80, adres wewnętrzny 192.168.1.1 2. Router B, dostawca B, adres zewnętrzny 90.90.90.90, adres wewnętrzny 192.168.1.2 W sieci stoi serwer OpenVPN, na którym skonfigurowana jest domyślna brama 192.168.1.1 Na klientach w pliku konfiguracyjnym wpisuję: ... proto udp remote 80.80.80.80 remote 90.90.90.90 ... czyli, aby w przypadku braku zestawienia połączenie VPN na pierwszym adresie, próbował drugiego. I jest super- klient śmiga jak trzeba, ale w razie awarii pierwszego łącza, niestety nie udaje się zestawić połączenia VPN przy użyciu drugiego (a sprawdzałem w logach, że klient próbuje przejść na awaryjny adres serwera)... Wygląda na to, że problem tkwi w tym, że serwer ma ustawioną bramę domyślną 192.168.1.1 i komputery nie moga nawiązać komunikacji. Dwóch bram domyślnych ustawić nie mogę, bo komputer zgłupieje całkowicie.... I tu rodzi się pytanie: Jak to rozegrać, żeby mieć VPN'a na zapasowym łączu w razie awarii pierwszego? Chodzi mi o jakieś sprawdzone rozwiązanie. Może ktoś takie posiada. Mi póki co przychodzą do głowy 2 pomysły: 1. Dwie karty sieciowe z własnymi konfiguracjami- ale nie wiem jak wtedy będzie wyglądało kierowanie ruchu na bramy domyślne? 2. Skrypt, który w przypadku przerwania łącza głównego, podmieni bramę domyślną. Tylko nie wiem w jaki sposób skrypt miałby zdobywać info, że łącze padło... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
abc Napisano Luty 4, 2010 Zgłoszenie Share Napisano Luty 4, 2010 Pad łącza możesz wykryć pingując jakiś adres w internecie, np. bramę domyślną dostawcy internetu (następny hop za twoim routerkiem podłączonym do internetu). Można też bardziej kombinować, przerabiając serwer z vpn na failover router. I mozna mu przy okazji loadbalancing dodać. Ale to już więcej kombinowania. W razie czego google wie ;-) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 5, 2010 Autor Zgłoszenie Share Napisano Luty 5, 2010 Można też bardziej kombinować, przerabiając serwer z vpn na failover router. I mozna mu przy okazji loadbalancing dodać. Tego nie chcę robić. Chciałbym, aby standardowo VPN śmigał na jednym łączu. Pad łącza możesz wykryć pingując jakiś adres w internecie, np. bramę domyślną dostawcy internetu (następny hop za twoim routerkiem podłączonym do internetu). No i w taki sposób było by to chyba najprościej rozwiązać. Tyle, że właściwie w pisaniu skryptów nie mam żadnego doświadczenia. Jakim poleceniem tak (_na prawdę_ → naprawdę) ORT mam sprawdzić czy ping powrócił tak jak trzeba? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
abc Napisano Luty 5, 2010 Zgłoszenie Share Napisano Luty 5, 2010 Może coś w tym stylu. Zaznaczam, że tego nie odpalałem i nie wiem czy dobrze działa ;-) bramy=(192.168.1.1 192.168.1.2) pingane_serwery=(adresip1 adresip2) aktywna=0 CZAS_OCZEKIWANIA_NA_REPLY=10 while true; do ping -c 1 -W $CZAS_OCZEKIWANIA_NA_REPLY ${pingane_serwery[$aktywna]} if [ $? -ne 0 ]; then #Ping nie doszedł, zamieniamy bramy ip route del default via ${bramy[$aktywna]} let aktywna=1-$aktywna ip route add default via ${bramy[$aktywna]} fi sleep 30 done Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 5, 2010 Autor Zgłoszenie Share Napisano Luty 5, 2010 if [ $? -ne 0 ]; then Właściwie to o ten fragment mi chodziło... Stworzyłem takie coś: #!/bin/bash GW1="192.168.1.1" GW2="192.168.1.2" PING_IP="adres_za_bramą" ACTIVE_RED=0 I=0 while [ true ] do PING=$(ping -c 1 $PING_IP) if [ $? -eq 0 ]; then echo "Połączenie ok" if [ $ACTIVE_RED -eq 1 ]; then if [ $I -eq 12 ]; then echo "Przełączam na główną" route del default gw $GW2 route add default gw $GW1 ACTIVE_RED=0 I=0 else #echo "INC" let I=$I+1 fi fi else echo "Brak połączenia, przełączam na zapasową" sleep 1 route del default gw $GW1 route add default gw $GW2 ACTIVE_RED=1 sleep 10 fi sleep 300 done i wygląda na to, że działa tak jak chciałem. Co 5 min sprawdza połączenie. W momencie gdy łącze padnie, przełącza domyślną bramę, a po godzinie próbuje przywrócić bramę pierwszą... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 8, 2010 Autor Zgłoszenie Share Napisano Luty 8, 2010 Z czasem może ulepszę ten skrypt, a na razie spróbuję przetestować czy mój plan zadziała... Dzięki za pomoc abc... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 9, 2010 Autor Zgłoszenie Share Napisano Luty 9, 2010 Jednak nadal mam problem z zestawieniem tunelu VPN na zapasowym łączu... I już nie mam pomysłów. Może coś poradzicie... 1. Na obydwu routerach mam ustawione przekierowanie portu, na którym nasłuchuje serwer VPN. 2. Konfiguracji serwera nie zmieniam. 3. Iptables na serwerze wyczyściłem. 3. Zmieniam jedynie bramę domyślną na serwerze i dopisuję linijkę remote .... w konfiguracji klienta. 4. Resetuję OpenVPN zarówno na serwerze jak i na kliencie. 5. Klient próbuje przejść na zapasowy adres, ale sie nie udaje: Tue Feb 9 08:46:28 2010 us=740879 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Tue Feb 9 08:46:28 2010 us=740965 Re-using SSL/TLS context Tue Feb 9 08:46:28 2010 us=740997 LZO compression initialized Tue Feb 9 08:46:28 2010 us=741089 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ] Tue Feb 9 08:46:28 2010 us=741178 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ] Tue Feb 9 08:46:28 2010 us=741237 Local Options String: 'V4,dev-type tun,link-mtu 1542,tun-mtu 1500,proto UDPv4,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client' Tue Feb 9 08:46:28 2010 us=741258 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1542,tun-mtu 1500,proto UDPv4,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server' Tue Feb 9 08:46:28 2010 us=741293 Local Options hash (VER=V4): '41690919' Tue Feb 9 08:46:28 2010 us=741325 Expected Remote Options hash (VER=V4): '530fdded' Tue Feb 9 08:46:28 2010 us=741361 Socket Buffers: R=[110592->131072] S=[110592->131072] Tue Feb 9 08:46:28 2010 us=741392 UDPv4 link local: [undef] Tue Feb 9 08:46:28 2010 us=741416 UDPv4 link remote: adres:port Tue Feb 9 08:46:28 2010 us=741491 UDPv4 WRITE [14] to adres:port: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 [ ] pid=0 DATA len=0 Tue Feb 9 08:46:31 2010 us=60920 UDPv4 WRITE [14] to adres:port: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 [ ] pid=0 DATA len=0 Tue Feb 9 08:46:33 2010 us=380929 UDPv4 WRITE [14] to adres:port: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 [ ] pid=0 DATA len=0 Tue Feb 9 08:46:35 2010 us=700926 UDPv4 WRITE [14] to adres:port: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 [ ] pid=0 DATA len=0 Tue Feb 9 08:46:38 2010 us=20935 UDPv4 WRITE [14] to adres:port: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 [ ] pid=0 DATA len=0 I tak się restartuje co jakiś czas, próbując na zmianę alternatywnych adresów... Gdzie może leżeć przyczyna?? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 15, 2010 Autor Zgłoszenie Share Napisano Luty 15, 2010 No nie mogę wpaść na żaden pomysł, a sprawę definitywnie muszę załatwić. Dla próby przepiąłem nawet fizycznie kable z routera jednego dostawcy do drugiego i zmieniłem tylko konfigurację adresów (nie dotykałem przekierowania portów itp.) i dalej nic... Czy OpenVPN potrafi gdzieś zapamiętywać trasy dążące do poszczególnych klientów? Panowie i Panie, googlam uparcie żeby coś znaleźć i trafiłem na taki mały szczegół: przekazywanie pakietów ip czyli tajmeniczy plik /proc/sys/net/ipv4/ip_forward U mnie wartość jest ustawiona na 0. Czy to może być problem?? I jeśli mógłby mi ktoś tak łopatologicznie wytłumaczyć za co odpowiada ta zmienna... Co tak (_na prawdę_ → naprawdę) ORT dzieje się w systemi po zmianie wartości na 1? Nie mogę tego nigdzie znaleźć... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mcteusz Napisano Luty 19, 2010 Autor Zgłoszenie Share Napisano Luty 19, 2010 Problem rozwiązany po długich bojach. Okazała się rzecz banalna: zaablokowane porty... Z tym, że nie u mnie, a u dostawcy internetu. Parę kliknięć załatwiło sprawę i VPN działa. W sumie to jestem trochę zły, że od tego nie zacząłem, ale z drugiej strony przynajmniej sobie OpenVPNa przemaglowałem... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się