Sunucu makinesinde VPN'de oturum açtıktan sonra SSH bağlantısının kesilmesini önleme


14

Karşılaşamayacağım bir sorunla karşılaştım. SSH üzerinden bir VPS'ye giriş yaptığımda ve bu VPS'de VPN bağlantısını güçlendirmeye çalıştığımda, VPS ile makinem arasındaki SSH bağlantısı kayboluyor. Bunun yönlendirme VPN ayarları tarafından değiştirildiğini düşünüyorum. Bunu nasıl önleyebilirim?


Başkan Vekili kurulduktan sonra SSH'ye bağlanmak ne olacak? : p Bunun nedeni VPN'nin yönlendirme yollarının üzerine yazması nedeniyle haklısınız. Yapabileceğiniz şey, orijinal yollarınıza dokunmamak ve sadece ekstra VPN yolunu eklemektir (VPS'nizi proxy olarak kullanmak istemiyorsanız. Bu başka bir hikaye). Hangi istemciyi kullanıyorsunuz?
Nikolaidis Fotis

"O VPS'de VPN bağlantısı kurmaya çalış" ile ne demek istiyorsun? Makinenizden VPS'deki bir Openvpn sunucusuna mı bağlanıyorsunuz? VPS'niz üçüncü bir ana bilgisayarda çalışan bir Openvpn sunucusuna mı bağlanıyor? Bu son durumda, böyle bir VPN bağlantısı bazı yolları geri mi çekiyor? Ayrıca, lütfen
VPS'nize

@NikolaidisFotis VPN çalıştığı için bağlanamıyorum. Openvpn istemcisi kullanıyorum. Orada bir var --route-noexecbahsettiğin gibi ... Ben vekil olarak VPN kullanmak istediğinizde bu yardım değil, sunucu tarafından itilen yolları görmezden seçenek ama
mic22

@DamianoVerzulli ikinci seçenek, evet yollar itildi (ama bence VPN'nin makinenin orijinal IP adresini kopyalamak için proxy gibi davranması gerektiğinden yapılması gerekiyor) ve hayır NAT yok
mic22

Yanıtlar:


6

VPS'nizdeki OpenVPN istemcinizin yapılandırma dosyasına route-nopullseçenek eklemeniz (ve redirect-gatewayvarsa kaldırmanız ) gerekir.

Bu şekilde bir VPN sunucusuna bağlanmak VPS'nizdeki hiçbir rotayı değiştirmez, böylece ihtiyacınız olanları kendiniz ayarlayabilirsiniz.


Hey, bu tavsiye için teşekkürler, ama şimdi tun0 üzerinden internete erişemiyorum. Sanırım bir ağ geçidi eksik. Tun0 için bir ağ geçidi nasıl eklenir? inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
İfconfig'in

Varsayılan ISS ağ geçidiniz aracılığıyla VPN sunucusuna manuel olarak bir rota eklemeniz, ardından diğer tüm trafik için 10.56.10.5 üzerinden varsayılan ağ geçidi eklemeniz gerekir
Anubioz

Üzgünüm, ne? Az önce ne dediğine dair hiçbir fikrim yok. Bir örnek verebilir misiniz?
Housemd

Açıklığa kavuşturayım - varsayılan rotanın tun0 üzerinden olmasını istemiyorum, ancak internet erişimine sahip olmak için tun0'a ihtiyacım var.
Housemd

@Housemd hm kendiniz tun0 üzerinden internet erişimine mi ihtiyacınız var yoksa internet erişimi için başka yerlerden tun0 üzerinden bağlı istemcilere mi ihtiyacınız var?
Anubioz

4

Şu senaryoyu ele alalım:

  1. VPS'nizin IP adresi 4.3.2.1/24 ile yapılandırılmış tek bir ethernet arayüzü vardır;
  2. VPS'niz İnternet'e varsayılan ağ geçidi üzerinden erişebilir 4.3.2.254
  3. senin VPS etti değil henüz OpenVPN bağlantısı etkinleştirilmiş; bu nedenle aktif tun arayüzü yoktur

Böyle bir senaryoda, makinenizden (diyelim ki makineniz 9.8.7.6/24 def-gw 9.8.7.254 ile) 4.3.2.1'e başarıyla bir SSH bağlantısı kurabilirsiniz. Böylece her iki ana bilgisayar 4.3.2.1 ve 9.8.7.6 birbirlerine başarılı bir şekilde ulaşabilir.

Şimdi, böyle bir SSH bağlantısı kurulduğunda, diyelim ki:

  1. VPS 4.3.2.1'inizden bir OpenVPN bağlantısı başlattınız;
  2. bu nedenle, yeni bir tun0 arayüzü dinamik olarak yapılandırılacaktır (diyelim ki 10.10.10.2 PTP ile 10.10.10.2 IP atanacaktır).

Bu aşamada:

  • EĞER hiçbir rota yerel VPS uzak OpenVPN sunucusundan aktarılacak, sonra hiçbir şey yönlendirme vadede değişecek ve SSH bağlantısı tüm hiçbir sorun ile hayatta kalacaktır. Bu durumda, VPN üzerinden geçen tek trafik uzak OpenVPN Sunucusuna yönlendirilen trafiktir (10.10.10.1);

  • EĞER uzak OpenVPN sunucusu bazı rotayı geriye çekip, ve VPS varsayılan geçidi 10.10.10.1 (uzaktan OpenVPN bitiş noktası) ile değiştirilecektir expecially, SONRA Sorunla. Bu durumda , VPN içindeki TÜM IP trafiğini (OpenVPN'in kendisi hariç) tünellemiş olursunuz .

Bu ikinci durumda (VPN bağlantısı kurulduktan hemen sonra def-gw'nin değiştirilmesi), önceki SSH bağlantınız asimetrik yönlendirme nedeniyle "askıda kalır":

  • Makinenizden (9.8.7.6) VPS'ye (4.3.2.1) gelen trafik önceki, hiç değiştirilmemiş bir yoldan akacaktır;
  • VPS'den (4.3.2.1) makinenize (9.8.7.6) gelen trafik:
    • VPN olmadan (dolayısıyla başlangıçta) 4.3.2.254 ağ geçidi üzerinden yönlendirildi;
    • VPN bağlantısı kurulduktan sonra, ilgili def-gw değiştirme ile VPN üzerinden yönlendirilir (10.10.10.1).

Başka bir deyişle: VPN bağlantısı kurulur kurulmaz, VPS'den makinenize dönüş rotanız değişecek ve ... bu iyi bir şey değil (dönüş yolu boyunca birkaç ağ cihazı, asimetrik yolu açın ve paketleri bırakın).

Ayrıca, uzak OpenVPN sunucunuzun bir NAT kutusu gibi davranma olasılığı yüksektir: VPN'den gelen tüm trafik, uzak OpenVPN Sunucusunun genel IP Adresiyle NAT olarak oluşturulur. Makinenize geri geliyor, ek olarak farklı bir rota boyunca geri almak için, dönüş trafiği: Bu işler SSH bağlantısı gelince, artık ... "iyi değil", ama kesinlikle "kötü" den, doğruysa ile farklı bir kaynak IP'si (VPN sunucusunun genel arayüzünden biri).

Bu problem nasıl çözülür?

Gerçekten de oldukça kolay.

VPS sunucunuza , trafiği VPN boyunca makinenize yönlendirmemesini değil, önceki rotaya bağlı kalmasını söyleyin . OpenVPN'e başlamadan önce eklemek kadar kolay olmalıdır:

     route add -host 9.8.7.6 gw 4.3.2.254

nerede:

  • 9.8.7.6, makinenizin genel IP adresidir
  • 4.3.2.254 VPS'nizin orijinal varsayılan ağ geçididir.

PS: çok daha ayrıntılı bir soru sağlayarak, çok daha hızlı bir cevap alırsınız :-)


Cevabınız için teşekkür ederim @DamianoVerzulli! Varsayılan ağ geçidi belirtilmemiş. route add0.0.0.0 gw döndürme ile komutSIOCADDRT: Invalid argument
mic22

[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
OpenVPN

@ mic22: Bu durumda VPS'nin yerel alt ağın dışındaki herhangi bir şeye ulaşamaması nedeniyle VPS'nizin def-gw'sinin nasıl belirtilemeyeceğini merak ediyorum (ve bu, hem makinenizin - SSH aracılığıyla bağlanabilen-- hem de OpenVpn sunucusu anlamına gelir) - VPN kurabilmek için "yerel" olmalı ve bu yüzden oldukça işe yaramaz olmalı!). BTW: SSH ile bağlandığınızda kolayca bir "netstat -rn" (0.0.0.0, ikinci sütun ile başlayan satır) ile def-gw alabilirsiniz
Damiano Verzulli

netstat -rnsonuç 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0kullandığım VPS, Ubuntu
14.04

ifconfigve netstat -rnçıktı: goo.gl/TEZ61q
mic22 9:04

0

Bu yardımcı olabilir:

koymak TCPKeepAlive=yesiçinde senin/etc/ssh/sshd_config

itibaren

man sshd_config | less +/'^ *TCPKeepAlive'

TCPKeepAlive

Sistemin diğer tarafa TCP tutma mesajları göndermesi gerekip gerekmediğini belirtir. Gönderilirlerse, bağlantılardan birinin ölümü veya makinelerin birinin çökmesi düzgün bir şekilde fark edilir. Ancak, bu, rota geçici olarak kesilirse bağlantıların öleceği anlamına gelir ve bazı insanlar bunu sinir bozucu bulur. Diğer yandan, TCP saklayıcıları gönderilmezse, oturumlar sunucuda süresiz olarak asılı kalabilir ve `` hayalet '' kullanıcıları bırakarak sunucu kaynaklarını tüketebilir.

Varsayılan yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes. This avoids infinitely hanging sessions. To disable TCP keepalive messages, the value should be set tohayır '' şeklindedir.


Ben zaten TCPKeepAliveseçenek olarak ayarlanmış vardı , yesbu yüzden bu doğru bir çözüm değil
mic22

0

Bu sorunu yaşadım ve önerilen tüm çözümleri denedim ve yine de sorunum çözülmedi!

Birçok deneme girişiminden sonra screenkomutu kullandım . (VPN istemcim cisco-any-connect).

$ screen -R VPN
$ openconnect -b "your server"

Kimlik bilgilerinizi girdikten sonra, ctrl + a + d tuşlarına hemen basın ve oturumunuza geri dönün.


0

Şahsen SSH ile olan tüm bağlantıların VPN üzerinden yönlendirilmesini tercih ediyorum. VPN kurulmadan önce aktif ssh bağlantısı durumunda, rota değiştiği için yeniden bağlanması gerekir.

autossh Ssh istemci yapılandırması altında eklemenizi öneririz.ssh/config

Host *
   ServerAliveInterval 300
   ServerAliveCountMax 2
   BatchMode yes
  • BatchMode , otomatik yeniden bağlanma anlamına gelir
  • ServerAlive Hayatta Kalmak anlamına gelir

-1

VPN bağlandıktan sonra ssh bağlantısı kesildi, çünkü sunucudan ssh trafiği VPN sunucusu üzerinden gidiyor. Bundan kaçınmak için VPN bağlamadan önce aşağıdaki komutu çalıştırın.

rota ekle -makine-makineniz-public-ip gw Sunucu ağ geçidi-ip dev eth0

your-machine-public-ip: SSH yaptığınız yerden makinenizin IP adresi. Server-gatway-ip: Bu sunucunun Gatway / yönlendiricisinin IP adresi

Yukarıdaki komut, trafiği VPN Server üzerinden değil, verilen ağ geçidi üzerinden yönlendirecektir.


Bu kafa karıştırıcı ve dilin geriye doğru olduğu anlaşılıyor. SSH hedefinin IP adresi ve yerel iş istasyonunun varsayılan ağ geçidi ile bir rota eklemek istemez misiniz?
rmalayter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.