Как проверить, что сервер OpenVPN слушает на удаленном порте, не используя клиент OpenVPN?

Согласно этой странице, нет никаких BSDs, поддерживаемых на Гиперпротив Вас, может хотеть заглянуть к другому решению для виртуализации, если необходимо выполнить BSD VMs.

39
задан 22 April 2011 в 13:06
7 ответов

Можно попытаться выполнить следующее в CLI

#netstat -ltnup

Это должно перечислить все процессы, которые слушают на Вашем сервере/системе. Grep для номера порта Вы хотите

#netstat -ltnup | grep 1194
2
ответ дан 28 November 2019 в 19:46

Если можно получить pcap допустимого Клиента OpenVPN к взаимодействию сервера OpenVPN, Вы могли смоделировать начальный набор пакетов с чем-то как netcat, как предложено TiZon.

В основном Вы хотите, чтобы действительно допустимый первый пакет заставил сервер отвечать, по крайней мере, сообщением об ошибке, таким образом, это не должно быть прекрасно, просто достаточно хорошо.

Я пытался идти в http://pcapr.net, но я не видел примера OpenVPN там. Возможно, если кто-то еще утверждает, что сервис закончился, Вы могли бы заставить того другого человека захватывать pcap транзакции.

0
ответ дан 28 November 2019 в 19:46

если у Вас есть установка openvpn на tcp, слушают затем его столь же простой как

telnet vpnserver 1194

принятие 1194 является портом, на котором у Вас есть оно слушающий

это должно дать Вам какой-то ответ, чтобы показать, что openvpn сервер слушает

-5
ответ дан 28 November 2019 в 19:46

Sorry if I'm a bit late with my answer ;)
Send an udp packet with the following content:
$38$01$00$00$00$00$00$00$00
The server must respond something.
You can forge udp packets with python like this:

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()
5
ответ дан 28 November 2019 в 19:46

Вот однострочная оболочка:

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.

51
ответ дан 28 November 2019 в 19:46

Для всех, кто сталкивается с этим, кто пытается контролировать сервер, на котором включен tls-auth , вы можете использовать скрипт python здесь: https: // github .com / liquidat / nagios-icinga-openvpn

Вывод форматируется для использования в Nagios или Icinga, но его может запускать кто угодно / кто угодно, при условии, что у вас есть python и ключевой файл tls.

Например, если вы используете SHA256 в качестве дайджеста, вы должны использовать что-то вроде:

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

Примечание: вам может потребоваться добавить - tls-auth-inverse в зависимости от значения сервера key-direction .

2
ответ дан 28 November 2019 в 19:46

Чтобы узнать, можете ли вы получить доступ к openvpnserver и порту, используя UDP (, а не TCP ), вы можете использовать «netcat» (в Linux )следующим образом :

nc -vu openvpnserver 1195

, если результат примерно такой:

Подключение к порту 1195 openvpnserver [udp/*] выполнено успешно!

вы можете отправлять UDP-запросы на порт openvpnserver:.

1
ответ дан 5 October 2021 в 14:32

Теги

Похожие вопросы