diff --git a/plugins/modules/ipadnsconfig.py b/plugins/modules/ipadnsconfig.py
index 0d4aa8764fc2c9c1b6a97acf21fb24b2a8e2ef20..b89344dac548ef2dc7dbf621eeabc719974ec3be 100644
--- a/plugins/modules/ipadnsconfig.py
+++ b/plugins/modules/ipadnsconfig.py
@@ -115,7 +115,7 @@ def find_dnsconfig(module):
             _result["result"]['idnsforwarders'] = ['']
         return _result["result"]
     else:
-        module.fail("Could not retrieve current DNS configuration.")
+        module.fail_json(msg="Could not retrieve current DNS configuration.")
     return None
 
 
@@ -129,7 +129,7 @@ def gen_args(module, state, dnsconfig, forwarders, forward_policy,
             ip_address = forwarder.get('ip_address')
             port = forwarder.get('port')
             if not (is_ipv4_addr(ip_address) or is_ipv6_addr(ip_address)):
-                module.fail(
+                module.fail_json(
                     msg="Invalid IP for DNS forwarder: %s" % ip_address)
             if port is None:
                 _forwarders.append(ip_address)
@@ -153,7 +153,7 @@ def gen_args(module, state, dnsconfig, forwarders, forward_policy,
 
         else:
             # shouldn't happen, but let's be paranoid.
-            module.fail(msg="Invalid state: %s" % state)
+            module.fail_json(msg="Invalid state: %s" % state)
 
     if forward_policy is not None:
         _args['idnsforwardpolicy'] = forward_policy
diff --git a/tests/dnsconfig/test_dnsconfig.yml b/tests/dnsconfig/test_dnsconfig.yml
index 1c34a8e0c2306844af28940a5c37120b1b771159..12781e0b56f303f7dcfb8ee00daf4183a649b61d 100644
--- a/tests/dnsconfig/test_dnsconfig.yml
+++ b/tests/dnsconfig/test_dnsconfig.yml
@@ -18,6 +18,29 @@
       state: absent
 
   # Tests.
+  - name: Set config to invalid IPv4.
+    ipadnsconfig:
+      ipaadmin_password: SomeADMINpassword
+      forwarders:
+        - ip_address: 1.2.3.500
+    register: result
+    failed_when: not result.failed or "Invalid IP for DNS forwarder" not in result.msg
+
+  - name: Set config to invalid IP.
+    ipadnsconfig:
+      ipaadmin_password: SomeADMINpassword
+      forwarders:
+        - ip_address: 1.in.va.lid
+    register: result
+    failed_when: not result.failed or "Invalid IP for DNS forwarder" not in result.msg
+
+  - name: Set config to invalid IPv6.
+    ipadnsconfig:
+      ipaadmin_password: SomeADMINpassword
+      forwarders:
+        - ip_address: fd00::invalid
+    register: result
+    failed_when: not result.failed or "Invalid IP for DNS forwarder" not in result.msg
 
   - name: Set dnsconfig.
     ipadnsconfig: