web-dev-qa-db-ja.com

OpenVPNサーバーがOpenVPNクライアントを使用せずにリモートポートでリッスンしていることを確認するにはどうすればよいですか?

OpenVPN(UDP)サーバーが稼働しており、特定のHost:portでアクセスできることを確認する必要があります。

私は単純なWindows XP OpenVPNクライアント(およびそれをインストールする機会)のないコンピューター)を持ち、サーバーに接続するために必要なキーはありません-一般的なWinXPコマンドラインツール、ブラウザー、およびPuTTY私の気分です。

SMTPまたはPOP3サーバーのようなものをテストしていた場合、Telnetを使用して応答するかどうかを確認しますが、OpenVPN(UDP)でこれを行う方法は?

41
Ivan

シェルのワンライナーは次のとおりです。

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のメッセージを拒否します。

53
Loic Dachary

私の答えが少し遅れたら申し訳ありません;)
次の内容のudpパケットを送信します:
$ 38 $ 01 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00 $ 00
サーバーは何かに応答する必要があります。
次のようにpythonで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()
5
babbler

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を追加する必要がある場合があります。

4
seren

あなたはCLIで以下を実行しようとすることができます

#netstat -ltnup

これにより、サーバー/システムでリッスンしているすべてのプロセスがリストされます。必要なポート番号のGrep

#netstat -ltnup | grep 1194
2
Mister IT Guru

OpenVPNクライアントからOpenVPNサーバーへの有効な相互作用のpcapを取得できる場合、TiZonによって提案されているように、netcatのようなものでパケットの初期セットをモデル化できます。

基本的に、サーバーが少なくともエラーメッセージで応答するのに十分な有効な最初のパケットが必要なので、完全である必要はありません。

http://pcapr.net に行ってみましたが、OpenVPNの例がありませんでした。おそらく、他の誰かがサービスが稼働していると主張している場合、その人にトランザクションのpcapを取得させることができます。

0
pcapademic