OpenVPN sunucusunun OpenVPN istemcisini kullanmadan uzak bir porttan dinlediğini nasıl kontrol edebilirim?


39

Bir OpenVPN (UDP) sunucusunun belirli bir ana bilgisayarda erişilebilir ve erişilebilir olduğunu kontrol etmem gerekiyor: port.

Yalnızca OpenVPN istemcisi olmayan (ve kurma şansı olmayan) düz bir Windows XP bilgisayarım var ve sunucuya bağlanmak için hiçbir anahtarım yok - sadece ortak WinXP komut satırı araçları, bir tarayıcı ve PuTTY benim görevimde.

Bir SMTP veya POP3 sunucusu gibi bir şeyi test ediyor olsaydım, telnet kullanırdım ve cevap verip vermediğine bakardım, ancak bunu OpenVPN (UDP) ile nasıl yapardım?


openvpn tcp üzerinden çalışıyorsa, telnet'i de yapabilirsiniz
rvs

OpenVPN UDP üzerinden çalışıyor
Ivan

2
Bunu neden gerçek bir izleme sisteminden değil eski bir Windows sisteminden çözmek istediğinizi açıklayabilir misiniz?
Alex Holst

2
UDP openvpn sunucusu (önerilen) tls-authyapılandırma seçeneğini kullanıyorsa, MEMNUN KALDIR (En azından dış sarma anahtarına sahip değilseniz)! Yanlış HMAC imzasına sahip herhangi bir paket, sunucu tarafından yanıt verilmeden atılır.
Alex Stragies

Yanıtlar:


50

İşte bir kabuk bir astar:

echo -e "\x38\x01\x00\x00\x00\x00\x00\x00\x00" | 
   timeout 10 nc -u openvpnserver.com 1194 | cat -v

diğer ucunda bir openvpn varsa çıktı

@$M-^HM--LdM-t|M-^X^@^@^@^@^@@$M-^HM--LdM-t|M-^X^@^@^@^@^@@$M-^HM--LdM-t|M-^X...

Aksi halde, 10 saniye sonra sadece dilsiz ve zaman aşımı olur veya farklı bir şey görüntüler.

NOT: bu yalnızca tls-authyapılandırma seçeneği etkin değilse çalışır , aksi halde sunucu hatalı HMAC içeren mesajları reddeder.


1
Biraz farklı bir şey alıyorum ama bir şey alıyorum. Teşekkürler.
artfulrobot

7
Sadece açıkça ifade etmek gerekirse, bu Windows için değil Linux / Unix içindir. Ve netcat gerektirir (bazı dağıtımlarda varsayılan olarak kurulmaz). Ayrıca, Linux dağıtımınız "timeout" komutuna sahip değilse, sadece "nc -w 10 -u openvpnserver.com 1194" gibi netcat "-w" parametresini kullanın.
MV.

1
Bu harika.
dmourati

2
Sunucu tls-authyanlış HMAC sig olan paketleri bırakmak için config seçeneğini kullanırsa bu OP senaryosunda çalışmaz .
Alex Stragies

2
Ben Borulama bulmak od -x -N 14yerine cat -vbir) anında) yerine ASCII çöp ve b daha gerçek bir ikili içeriği görmek sunucu her tokalaşma paketini gönderir ve çıktısının her satırı almak ve hemen ilk sonra onu durduramaz, çünkü çok daha yararlıdır. -N 14çünkü el sıkışma paketi 14 byte uzunluğunda ve sadece tekrar ediyor.
BaseZen

5

Maalesef cevabımdan biraz sonra geç
kaldıysam ;) Aşağıdaki içeriğe sahip bir udp paketi gönderin:
$ 38 $ 01 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00
Sunucu bir şey yanıtlamalıdır.
Udp paketlerini aşağıdaki gibi python ile oluşturabilirsiniz:

import socket
senddata= "\x38\x01\x00\x00\x00\x00\x00\x00\x00"

def checkserver(ip,port):
   print('Checking %s:%s' %(ip,port)) 
   sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
   sock.settimeout(5) # in seconds
   sock.connect((ip, port))
   print("Sending request...")
   sock.send(senddata)
   try:
      dta=sock.recv(100)
      print("Server reply: %s" %(dta))
   except:
      print("Server not responding")
   sock.close()
   print("###########################################################")

def main():
   checkserver("addr.of.server1",1194)
   checkserver("addr.of.server2",1195)

if __name__ == "__main__":
   main()

1
Loic'in cevabının dediği gibi bu işe yaramıyor tls-auth.
tedder42

1
Python 3 için satır 10 bir soruna neden olacaktır. "Sock.send (senddata)" ifadesini "sock.send (senddata.encode ())" ile değiştirin;
NDB

2

Aşağıdakileri CLI'de çalıştırmayı deneyebilirsiniz.

#netstat -ltnup

Bu, sunucunuzu / sisteminizi dinleyen tüm işlemleri listelemelidir. İstediğiniz port numarası için Grep

#netstat -ltnup | grep 1194

OP sadece Windows XP araçlarına sahiptir.
user9517, GoFundMonica'da

1
@Iain: OP'nin PuTTY'si vardı, bu yüzden sunucuya SSH gönderebilir. Bu durumda, bu çok basit kontrol yararlı bir ilk adımdır.
Kasım

2

Bu tls-authözelliği kullanan ve etkinleştiren bir sunucuyu izlemeye çalışan herkes için , burada python komut dosyasını kullanabilirsiniz: https://github.com/liquidat/nagios-icinga-openvpn

Çıktı Nagios veya Icinga'da kullanılmak üzere biçimlendirilmiş, ancak python ve mevcut tls keyfile'ınız varsa, herhangi bir kişi tarafından çalıştırılabilir.

Örneğin, SHA256özetiniz olarak kullanıyorsanız, şöyle bir şey kullanırsınız:

python check-openvpn.py -p 1194 --tls-auth ta.key --digest SHA256 vpn-server.example.com

Not: --tls-auth-inverseSunucunun key-directiondeğerine bağlı olarak eklemeniz gerekebilir .


0

Geçerli OpenVPN İstemcisinin OpenVPN sunucu etkileşimi için bir kopyasını alabilirseniz, ilk paket kümesini TiZon tarafından önerildiği gibi netcat gibi bir şeyle modelleyebilirsiniz.

Temel olarak, sunucunun en azından bir hata mesajı ile yanıt vermesini sağlayacak kadar geçerli bir ilk paketin olmasını istersiniz, bu yüzden mükemmel olması gerekmez, yeterince iyi.

Http://pcapr.net adresine gitmeyi denedim ama orada bir OpenVPN örneği görmedim. Belki, hizmetin bir başkası olduğunu iddia etmesi durumunda, o kişinin diğerinden işlemin bir kopyasını almasını sağlayabilirsiniz.


-5

Eğer bir tcp üzerinde openvpn kurulumu yaptıysanız,

telnet vpnserver 1194

farz edelim ki 1194, dinlemekte olduğunuz bağlantı noktası

Bu, size openvpn sunucusunun dinlediğini göstermek için bir tür yanıt vermelidir.


% 100 emin misin? Bunu yaptığımda, bir süre bekledikten sonra "Ana bilgisayarla bağlantı kurulamadı, 1194 numaralı bağlantı noktasında: Bağlanamadı" mesajı alıyorum. Bir müşterinin, bir OpenVPN sunucusu cevap vermeden önce, bir şey söylemesi gerekmiyor mu?
Ivan,

6
Varsayılan olarak OpenVPN'in yalnızca UDP olduğunu ve telnet'in TCP kullanması gerektiğini unutmayın.
Ivan,
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.