Napotkałem problem, z którym nie mogę sobie poradzić. Kiedy loguję się do VPS przez SSH i próbuję ustanowić połączenie VPN na tym VPS, połączenie SSH między VPS a moją maszyną zostaje utracone. Zakładam, że dzieje się tak, ponieważ routing został zmieniony przez ustawienia VPN. Jak temu zapobiec?
14
--route-noexec
możliwość zignorowania tras przekazywanych przez serwer, ale, jak wspomniałeś, nie pomaga, gdy chcę używać VPN jako proxy ...Odpowiedzi:
Musisz dodać
route-nopull
opcję (i usunąć,redirect-gateway
jeśli istnieje) do pliku konfiguracyjnego klienta OpenVPN na VPS.W ten sposób połączenie z serwerem VPN nie zmodyfikuje żadnych tras na twoim VPS, więc będziesz mógł ustawić te, których potrzebujesz.
źródło
inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
Rozważmy następujący scenariusz:
W takim scenariuszu z poziomu komputera (załóżmy, że twój komputer to 9.8.7.6/24 z def-gw 9.8.7.254) możesz pomyślnie ustanowić połączenie SSH z 4.3.2.1. Dlatego oba hosty 4.3.2.1 i 9.8.7.6 mogą z powodzeniem się ze sobą skontaktować.
Teraz, po ustanowieniu takiego połączenia SSH, załóżmy:
Na tym etapie:
JEŚLI żadna trasa nie zostanie przekazana ze zdalnego serwera OpenVPN do lokalnego VPS, nic nie zmieni się pod względem routingu, a twoje połączenie SSH przetrwa bez żadnych problemów. W takim przypadku jedynym ruchem przechodzącym przez VPN jest ten skierowany w stronę zdalnego serwera OpenVPN (10.10.10.1);
JEŻELI zdalny serwer OpenVPN odepchnie pewną trasę, a zwłaszcza jeśli domyślna brama VPS zostanie zastąpiona 10.10.10.1 (zdalny punkt końcowy OpenVPN), NASTĘPNIE masz problemy. W tym przypadku tunelujesz CAŁY wychodzący ruch IP (z wyjątkiem samego OpenVPN) w sieci VPN.
W tym drugim przypadku (zastąpienie def-gw zaraz po ustanowieniu połączenia VPN) poprzednie połączenie SSH „zawiesi się” z powodu asymetrycznego routingu:
Innymi słowy: jak tylko połączenie VPN zostanie ustanowione, twoja trasa powrotna z VPS do twojego komputera zmieni się i ... to nie jest dobra rzecz (kilka urządzeń sieciowych wzdłuż ścieżki powrotnej może rozpoznać taką asymetrię ścieżka i po prostu upuść pakiety).
Co więcej, istnieje duże prawdopodobieństwo, że twój zdalny serwer OpenVPN działa jak NAT-box: cały ruch przychodzący z VPN będzie NATted z publicznym adresem IP zdalnego serwera OpenVPN. Jeśli to prawda, to już nie ma rzeczy ... „nie jest dobrze”, ale zdecydowanie „źle”, jak w przypadku połączenia SSH: ruch powrotny, oprócz powrotu inną drogą, wraca na komputer z inny źródłowy adres IP (jeden z publicznego interfejsu serwera VPN).
Jak rozwiązać ten problem?
Rzeczywiście dość łatwo.
Wystarczy poinstruować serwer VPS, aby nie kierował ruchu do maszyny wzdłuż sieci VPN, ale zamiast tego polegał na poprzedniej trasie . Przed uruchomieniem OpenVPN powinno to być tak proste, jak dodanie:
gdzie:
PS: udzielając bardziej szczegółowego pytania, uzyskałbyś znacznie szybszą odpowiedź :-)
źródło
route add
polecenie z takimi zwrotami gw 0.0.0.0SIOCADDRT: Invalid argument
[server] Peer Connection Initiated with [AF_INET]64.251.27.139:443; TUN/TAP device tun0 opened; do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0; /sbin/ip link set dev tun0 up mtu 1500; /sbin/ip addr add dev tun0 10.200.1.251/22 broadcast 10.200.3.255; ERROR: Linux route add command failed: external program exited with error status: 2
netstat -rn
wynik,0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
że VPS, którego używam, jest podstawową opcją OVH z Ubuntu 14.04 Server na pokładzieifconfig
inetstat -rn
wyjście: goo.gl/TEZ61qTo może pomóc:
włóż
TCPKeepAlive=yes
swoje/etc/ssh/sshd_config
Od
źródło
TCPKeepAlive
ustawioną opcję,yes
więc nie jest to właściwe rozwiązanieMiałem ten problem i wypróbowałem wszystkie zalecane rozwiązania, a mimo to mój problem nie został rozwiązany!
Po wielu próbach rozwiązania użyłem
screen
polecenia. (moim klientem VPN jest cisco-any-connect).Po podaniu poświadczeń naciśnij natychmiast ctrl + a + d i wróć do sesji.
źródło
Osobiście wolę, aby wszystkie połączenia z SSH były kierowane przez VPN. W przypadku aktywnego połączenia ssh przed ustanowieniem VPN, musi on ponownie się połączyć z powodu zmiany trasy.
Polecam użyć
autossh
W konfiguracji klienta ssh wystarczy dodać.ssh/config
źródło
Raz po podłączeniu VPN, ssh zostaje odłączony, ponieważ ruch ssh z serwera przechodzi przez serwer VPN. Aby tego uniknąć, uruchom następujące polecenie przed podłączeniem VPN.
route add -host twoja-maszyna-publiczna-ip gw Serwer-gatway-ip dev eth0
your-machine-public-ip: IP twojego komputera, z którego robisz SSH. Server-gatway-ip: Adres IP Gatway / routera tego serwera
Powyższe polecenie przekieruje ruch przez daną bramę, a nie przez serwer VPN.
źródło