यह कैसे जांचें कि OpenVPN क्लाइंट का उपयोग किए बिना एक OpenVPN सर्वर एक दूरस्थ पोर्ट पर सुन रहा है?


39

मुझे यह जांचने की आवश्यकता है कि एक OpenVPN (UDP) सर्वर एक दिए गए होस्ट पर उपलब्ध है और पहुंच योग्य है: पोर्ट।

मेरे पास केवल एक OpenVPN क्लाइंट (और इसे स्थापित करने का कोई मौका नहीं) के साथ एक सादा Windows XP कंप्यूटर है और सर्वर से कनेक्ट करने के लिए कोई कुंजी की आवश्यकता नहीं है - बस सामान्य WinXP कमांड लाइन उपकरण, एक ब्राउज़र और PuTTY मेरे स्वभाव में हैं।

अगर मैं किसी SMTP या POP3 सीरवेट जैसा कुछ परीक्षण कर रहा था, तो मैं टेलनेट का उपयोग करूंगा और देखूंगा कि क्या यह प्रतिक्रिया करता है, लेकिन OpenVPN (UDP) के साथ ऐसा कैसे करें?


अगर Openvpn tcp के माध्यम से चल रहा है, तो आप टेलनेट भी कर सकते हैं
rvs

ओपनवीपीएन यूडीपी के माध्यम से चल रहा है
इवान

2
क्या आप इस बारे में विस्तार से बता सकते हैं कि आप इसे अप्रचलित विंडोज सिस्टम से क्यों हल करना चाहते हैं और वास्तविक निगरानी प्रणाली से नहीं?
एलेक्स होल्स्ट

2
यदि UDP ओपनवैप सर्वर (अनुशंसित) tls-authकॉन्फ़िगरेशन विकल्प का उपयोग करता है , तो यह IMPOSSIBLE है (यदि आपके पास कम से कम बाहरी आवरण कुंजी नहीं है)! गलत HMAC हस्ताक्षर वाला कोई भी पैकेट सर्वर द्वारा प्रतिक्रिया के बिना खारिज कर दिया जाएगा।
एलेक्स स्ट्रैगीज़ 20

जवाबों:


51

यहाँ एक खोल एक लाइनर है:

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

अगर वहाँ एक Openvpn दूसरे छोर पर उत्पादन होगा

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

अन्यथा यह केवल 10 सेकंड के बाद म्यूट और टाइमआउट होगा या कुछ अलग प्रदर्शित करेगा।

नोट: यह केवल तभी काम करता है यदि tls-authकॉन्फिगर विकल्प सक्रिय नहीं है, अन्यथा सर्वर गलत HMAC वाले संदेशों को अस्वीकार कर देता है।


2
मुझे कुछ अलग मिलता है, लेकिन मुझे कुछ मिलता है। धन्यवाद।
Artfulrobot

7
बस स्पष्ट रूप से बताने के लिए, यह लिनक्स / यूनिक्स के लिए है, विंडोज के लिए नहीं। और इसके लिए netcat (कुछ डिस्ट्रोफ में डिफ़ॉल्ट रूप से स्थापित नहीं) की आवश्यकता होती है। इसके अलावा, अगर आपके लिनक्स डिस्ट्रो में "टाइमआउट" कमांड नहीं है, तो बस नेटकैट "-w" पैरामीटर का उपयोग करें, जैसे "एनसी -w 10 -यू ओपनवप्नसेवर.कॉम 1194"।
एम.वी.

1
यह बहुत बढ़िया है।
dmourati

2
यह ओपी परिदृश्य में काम नहीं करेगा, अगर सर्वर tls-authपैकेट को गलत HMAC सिग के साथ ड्रॉप करने के लिए कॉन्फिगर विकल्प का उपयोग करता है ।
एलेक्स स्ट्रैगीज

2
मुझे लगता है कि पाइपिंग के od -x -N 14बजाय cat -vअधिक उपयोगी है क्योंकि आप ए) ASCII कचरा और बी के बजाय वास्तविक बाइनरी सामग्री देख सकते हैं) आउटपुट की प्रत्येक पंक्ति को तुरंत प्राप्त करते हैं क्योंकि सर्वर प्रत्येक हैंडशेक पैकेट भेजता है और पहले के तुरंत बाद इसे बंद कर देता है। -N 14क्योंकि हैंडशेक पैकेट 14 बाइट लंबा और सिर्फ दोहराता है।
बेसजेन

5

क्षमा करें यदि मैं अपने उत्तर के साथ थोड़ा विलंबित हूं;)
निम्न सामग्री के साथ एक udp पैकेट भेजें:
$ 38 $ 01 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00
सर्वर को कुछ उत्तर देना चाहिए।
आप इस तरह से अजगर के साथ udp पैकेट बना सकते हैं:

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
जैसा कि लोइक का जवाब कहता है, यह काम नहीं करता है tls-auth
tedder42

1
पायथन 3 लाइन 10 के लिए एक समस्या का कारण होगा। "Sock.send (senddata)" को "sock.send (senddata.encode ())" से बदलें और यह काम करेगा।
NDB

2

आप CLI पर निम्न को चलाने का प्रयास कर सकते हैं

#netstat -ltnup

यह उन सभी प्रक्रियाओं को सूचीबद्ध करना चाहिए जो आपके सर्वर / सिस्टम पर सुन रहे हैं। इच्छित पोर्ट संख्या के लिए Grep

#netstat -ltnup | grep 1194

ओपी में केवल विंडोज़ एक्सपी उपकरण हैं।
user9517

1
@ मुख्य: ओपी में PuTTY था, इसलिए सर्वर में SSH करने में सक्षम हो सकता है। उस मामले में, यह बहुत ही सरल जाँच एक उपयोगी पहला कदम है।
mivk

2

इस पर चलने वाले किसी भी व्यक्ति के लिए जो tls-authसक्षम किए गए सर्वर की निगरानी करने की कोशिश कर रहा है , आप यहाँ अजगर लिपि का उपयोग कर सकते हैं: https://github.com/liquidat/nagios-icinga-openvpn

आउटपुट को Nagios या Icinga में उपयोग के लिए स्वरूपित किया गया है, लेकिन इसे कुछ भी / किसी के द्वारा भी चलाया जा सकता है, बशर्ते आपके पास अजगर हो और tls कीफाइल उपलब्ध हो।

उदाहरण के लिए, यदि आप SHA256अपने पाचन के रूप में उपयोग कर रहे हैं, तो आप कुछ का उपयोग करेंगे:

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

नोट: आपको --tls-auth-inverseसर्वर के key-directionमूल्य के आधार पर जोड़ने की आवश्यकता हो सकती है ।


0

यदि आप OpenVPN सर्वर इंटरैक्शन के लिए मान्य OpenVPN क्लाइंट का एक पेज प्राप्त कर सकते हैं, तो आप नेटकट जैसी किसी चीज के साथ शुरुआती सेट को मॉडल कर सकते हैं, जैसा कि TiZon द्वारा सुझाया गया है।

मूल रूप से, आप सर्वर को प्राप्त करने के लिए कम से कम एक त्रुटि संदेश के साथ प्रतिक्रिया करने के लिए पर्याप्त वैध पहला पैकेट चाहते हैं, इसलिए यह बिल्कुल सही नहीं है, बस पर्याप्त है।

मैंने http://pcapr.net पर जाने की कोशिश की , लेकिन मुझे वहाँ एक OpenVPN उदाहरण नहीं दिखाई दिया। शायद, अगर कोई अन्य व्यक्ति सेवा का दावा कर रहा है, तो आप उस व्यक्ति को लेन-देन का एक हिस्सा हड़प सकते हैं।


-5

अगर आपके पास सेटअप Openvpn है एक tcp सुनो तो इसका सरल रूप है

telnet vpnserver 1194

1194 मानकर आप इसे सुन रहे हैं

यह आपको किसी प्रकार की प्रतिक्रिया देने के लिए दिखाना चाहिए कि Openvpn सर्वर सुन रहा है


क्या आप 100% सुनिश्चित हैं? जब मैं ऐसा करता हूं, मुझे कुछ प्रतीक्षा के बाद, "1194: कनेक्ट फेल" पोर्ट पर होस्ट के लिए कनेक्शन नहीं खोल सका। OpenVPN सर्वर के जवाब देने से पहले क्या कोई ग्राहक पहले कुछ कहने के लिए नहीं है?
इवान

6
ध्यान दें कि डिफ़ॉल्ट रूप से OpenVPN UDP-only है और टेलनेट TCP का उपयोग करने के लिए है।
इवान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.