diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index 75d5f7a13..a4df27cd2 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -77,6 +77,7 @@ namespace cryptonote
               m_checkpoints_path(""),
               m_last_dns_checkpoints_update(0),
               m_last_json_checkpoints_update(0),
+              m_disable_dns_checkpoints(false),
               m_threadpool(tools::thread_group::optimal()),
               m_update_download(0)
   {
@@ -108,7 +109,7 @@ namespace cryptonote
   //-----------------------------------------------------------------------------------------------
   bool core::update_checkpoints()
   {
-    if (m_testnet || m_fakechain) return true;
+    if (m_testnet || m_fakechain || m_disable_dns_checkpoints) return true;
 
     if (m_checkpoints_updating.test_and_set()) return true;
 
diff --git a/src/cryptonote_core/cryptonote_core.h b/src/cryptonote_core/cryptonote_core.h
index 4dbd51040..171c3cb98 100644
--- a/src/cryptonote_core/cryptonote_core.h
+++ b/src/cryptonote_core/cryptonote_core.h
@@ -406,6 +406,13 @@ namespace cryptonote
       */
      void set_enforce_dns_checkpoints(bool enforce_dns);
 
+     /**
+      * @brief set whether or not to enable or disable DNS checkpoints
+      *
+      * @param disble whether to disable DNS checkpoints
+      */
+     void disable_dns_checkpoints(bool disable = true) { m_disable_dns_checkpoints = disable; }
+
      /**
       * @copydoc tx_memory_pool::have_tx
       *
@@ -882,6 +889,7 @@ namespace cryptonote
      time_t m_last_json_checkpoints_update; //!< time when json checkpoints were last updated
 
      std::atomic_flag m_checkpoints_updating; //!< set if checkpoints are currently updating to avoid multiple threads attempting to update at once
+     bool m_disable_dns_checkpoints;
 
      size_t block_sync_size;