diff --git a/check_ntp.mkp b/check_ntp.mkp
index 74b83a1ead999c283e215607a4a40fd13898a4da..ac3fb4828cac59081c3fa92356a4bcf332557d9c 100644
Binary files a/check_ntp.mkp and b/check_ntp.mkp differ
diff --git a/checks/check_ntp b/checks/check_ntp
index 49240be77021734a0571cada73e05bf46ec2c7dc..878c0c8a99b65928b0953055db0708457532e507 100644
--- a/checks/check_ntp
+++ b/checks/check_ntp
@@ -43,6 +43,9 @@ def check_ntp_arguments(params):
     if 'delay_levels' in params:
         args.append(f'--delay {params["dispersion_levels"][0]},{params["dispersion_levels"][1]}')
 
+    if 'state_no_response' in params:
+        args.append(f'--state_no_response {params["state_no_response"]}')
+
     return args
 
 
diff --git a/lib/nagios/plugins/check_ntp b/lib/nagios/plugins/check_ntp
index 22c1175b40035d164e733f0c690b78cf4332d1e7..d746afe3154157da60a44c2d1a64544964a24940 100755
--- a/lib/nagios/plugins/check_ntp
+++ b/lib/nagios/plugins/check_ntp
@@ -11,15 +11,19 @@
 #
 # Active check to monitor NTP servers.
 #
-#
+# 2022-10-13: added exception handling for ntp request
+# 2022-11-14: made state on no response configurable
 #
 
 from typing import Optional, Sequence, Tuple
 from ipaddress import IPv4Address
 import sys
 import argparse
+import socket
 from time import ctime, gmtime, strftime
 
+import ntplib
+
 no_ntplib=False
 try:
     from ntplib import NTPClient, NTPStats
@@ -156,6 +160,9 @@ def parse_arguments(argv: Sequence[str]) -> argparse.Namespace:
     parser.add_argument(
         '--state_not_synchronized', type=int, default=2, choices=[0, 1, 2, 3],
         help='Monitoring state if not synchronized.')
+    parser.add_argument(
+        '--state_no_response', type=int, default=2, choices=[0, 1, 2, 3],
+        help='Monitoring state if response (timeout) received.')
     parser.add_argument(
         '--stratum', type=_warn_crit, default=(10, 15),
         help='WARN,CRIT levels for stratum. Use values > 16 to disable.')
@@ -175,14 +182,18 @@ def parse_arguments(argv: Sequence[str]) -> argparse.Namespace:
     return args
 
 
-def get_ntp_time(server: str, port: int, timeout: int, version: int):  # -> Optional[NTPStats] # is not available if ntplib is not installed
+def get_ntp_time(server: str, port: int, timeout: int, version: int, state_no_response: int):  # -> Optional[NTPStats] # is not available if ntplib is not installed
     c = NTPClient()
-    response = c.request(
-        host=server,
-        port=port,
-        timeout=timeout,
-        version=version
-    )
+    try:
+        response = c.request(
+            host=server,
+            port=port,
+            timeout=timeout,
+            version=version
+        )
+    except (ntplib.NTPException, socket.gaierror) as e:
+        sys.stdout.write(f'{e}\n')
+        sys.exit(state_no_response)
     return response
 
 
@@ -193,10 +204,13 @@ def main(args=None):
     args = parse_arguments(args)
 
     if no_ntplib:
-        sys.stdout.write(f'To use this check plugin you need to install the python ntplib in your CMK python environment.')
+        sys.stdout.write(
+            f'To use this check plugin you need to install the python ntplib in your CMK python environment.'
+        )
         sys.exit(3)
 
-    ntp_time = get_ntp_time(args.server, args.port, args.timeout, args.version)
+    ntp_time = get_ntp_time(args.server, args.port, args.timeout, args.version, args.state_no_response)
+
     server_time = ctime(ntp_time.tx_time)
     stratum = int(ntp_time.stratum)
 
diff --git a/web/plugins/wato/active_checks_ntp.py b/web/plugins/wato/active_checks_ntp.py
index 4a52ceba003039f77a9cfae5d652365c43a58b10..7740ef3a8365890d51cbe2aaab5b558c6373e2db 100644
--- a/web/plugins/wato/active_checks_ntp.py
+++ b/web/plugins/wato/active_checks_ntp.py
@@ -60,15 +60,6 @@ def _valuespec_active_checks_ntp():
                      minvalue=1,
                      maxvalue=65535,
                  )),
-                ('timeout',
-                 Integer(
-                     title=_('Request timeout'),
-                     help=_('Timeoute for the request in seconds. Min: 1s, Max: 20, Default is 2 seconds.'),
-                     # size=3,
-                     default_value=2,
-                     minvalue=1,
-                     maxvalue=20,
-                 )),
                 ('version',
                  Integer(
                      title=_('NTP version'),
@@ -78,12 +69,27 @@ def _valuespec_active_checks_ntp():
                      minvalue=1,
                      maxvalue=4,
                  )),
+                ('timeout',
+                 Integer(
+                     title=_('Request timeout'),
+                     help=_('Timeoute for the request in seconds. Min: 1s, Max: 20, Default is 2 seconds.'),
+                     # size=3,
+                     default_value=2,
+                     minvalue=1,
+                     maxvalue=20,
+                 )),
                 ('state_not_synchronized',
                  MonitoringState(
                      title=_('Monitoring state if server is not synchronized'),
                      help=_('Monitoring state if server is not synchronized. Default is warning.'),
                      default_value=2,
                  )),
+                ('state_no_response',
+                 MonitoringState(
+                     default_value=2,
+                     title=_('Monitoring state if server on timeout (no response).'),
+                     help=_('Monitoring state if the server doesnt respond. Default is "WARN"')
+                 )),
                 ('stratum_levels',
                  Tuple(
                      title=_('max. stratum'),
@@ -164,18 +170,6 @@ def _valuespec_active_checks_ntp():
                      ],
                  )),
             ],
-            optional_keys=[
-                'description',
-                'server',
-                'port',
-                'timeout',
-                'version',
-                'state_not_synchronized',
-                'offset_levels',
-                'stratum_levels',
-                'dispersion_levels',
-                'delay_levels',
-            ],
         ),
     )