OpenVPN(UDP)サーバーが稼働しており、特定のHost:portでアクセスできることを確認する必要があります。
私は単純なWindows XP OpenVPNクライアント(およびそれをインストールする機会)のないコンピューター)を持ち、サーバーに接続するために必要なキーはありません-一般的なWinXPコマンドラインツール、ブラウザー、およびPuTTY私の気分です。
SMTPまたはPOP3サーバーのようなものをテストしていた場合、Telnetを使用して応答するかどうかを確認しますが、OpenVPN(UDP)でこれを行う方法は?
シェルのワンライナーは次のとおりです。
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のメッセージを拒否します。
私の答えが少し遅れたら申し訳ありません;)
次の内容の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()
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
を追加する必要がある場合があります。
あなたはCLIで以下を実行しようとすることができます
#netstat -ltnup
これにより、サーバー/システムでリッスンしているすべてのプロセスがリストされます。必要なポート番号のGrep
#netstat -ltnup | grep 1194
OpenVPNクライアントからOpenVPNサーバーへの有効な相互作用のpcapを取得できる場合、TiZonによって提案されているように、netcatのようなものでパケットの初期セットをモデル化できます。
基本的に、サーバーが少なくともエラーメッセージで応答するのに十分な有効な最初のパケットが必要なので、完全である必要はありません。
http://pcapr.net に行ってみましたが、OpenVPNの例がありませんでした。おそらく、他の誰かがサービスが稼働していると主張している場合、その人にトランザクションのpcapを取得させることができます。