<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Question about NAT Failover SK 25152 in General Topics</title>
    <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281694#M46803</link>
    <description>&lt;P&gt;Hello! We are attempting to set up ISP Redundancy for our static NAT objects according to &lt;A href="https://support.checkpoint.com/results/sk/sk25152" target="_self"&gt;SK 25152&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;We have done all of the steps up until step 10 where the&amp;nbsp;&lt;SPAN&gt;cpisp_update script is updated. In the SK it shows this:&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;# You can see which ISP link is up with this command: tail -f /tmp/cpisp_state
echo "--------------------------" &amp;gt;&amp;gt; /tmp/cpisp_state
echo `/bin/date +%d-%b-%Y_%Hh-%Mm-%Ss` &amp;gt;&amp;gt; /tmp/cpisp_state
echo "RESTARTING SCRIPT" &amp;gt;&amp;gt; /tmp/cpisp_state
echo "LINK1" &amp;gt;&amp;gt; /tmp/cpisp_state
echo $LINK1_STATE &amp;gt;&amp;gt; /tmp/cpisp_state
echo "LINK2" &amp;gt;&amp;gt; /tmp/cpisp_state
echo $LINK2_STATE &amp;gt;&amp;gt; /tmp/cpisp_state
echo "--------------------------" &amp;gt;&amp;gt; /tmp/cpisp_state
echo " " &amp;gt;&amp;gt; /tmp/cpisp_state

# Check if the Link is up or down
if ($LINK2_STATE == "down" || $LINK2_STATE == "disabled") then
  fw tab -t dynobj_cache -x -y
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 255.255.255.255 -a
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 255.255.255.255 -d
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 0.0.0.0 -a 
endif

if ($LINK1_STATE == "down" || $LINK1_STATE == "disabled") then
  fw tab -t dynobj_cache -x -y
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 255.255.255.255 -a
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 255.255.255.255 -d
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 0.0.0.0 -a 
endif&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;In the previous step, I added the dynamic objects and replaced 0.0.0.0 0.0.0.0 with our Public IP ranges from the ISPs. Do I need to add the ISP ranges to this script as well or keep it exactly as shown?&lt;/P&gt;</description>
    <pubDate>Mon, 31 Aug 2026 18:16:28 GMT</pubDate>
    <dc:creator>Jesse140515</dc:creator>
    <dc:date>2026-08-31T18:16:28Z</dc:date>
    <item>
      <title>Question about NAT Failover SK 25152</title>
      <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281694#M46803</link>
      <description>&lt;P&gt;Hello! We are attempting to set up ISP Redundancy for our static NAT objects according to &lt;A href="https://support.checkpoint.com/results/sk/sk25152" target="_self"&gt;SK 25152&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;We have done all of the steps up until step 10 where the&amp;nbsp;&lt;SPAN&gt;cpisp_update script is updated. In the SK it shows this:&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;# You can see which ISP link is up with this command: tail -f /tmp/cpisp_state
echo "--------------------------" &amp;gt;&amp;gt; /tmp/cpisp_state
echo `/bin/date +%d-%b-%Y_%Hh-%Mm-%Ss` &amp;gt;&amp;gt; /tmp/cpisp_state
echo "RESTARTING SCRIPT" &amp;gt;&amp;gt; /tmp/cpisp_state
echo "LINK1" &amp;gt;&amp;gt; /tmp/cpisp_state
echo $LINK1_STATE &amp;gt;&amp;gt; /tmp/cpisp_state
echo "LINK2" &amp;gt;&amp;gt; /tmp/cpisp_state
echo $LINK2_STATE &amp;gt;&amp;gt; /tmp/cpisp_state
echo "--------------------------" &amp;gt;&amp;gt; /tmp/cpisp_state
echo " " &amp;gt;&amp;gt; /tmp/cpisp_state

# Check if the Link is up or down
if ($LINK2_STATE == "down" || $LINK2_STATE == "disabled") then
  fw tab -t dynobj_cache -x -y
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 255.255.255.255 -a
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 255.255.255.255 -d
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 0.0.0.0 -a 
endif

if ($LINK1_STATE == "down" || $LINK1_STATE == "disabled") then
  fw tab -t dynobj_cache -x -y
  dynamic_objects -o DYN_ISP_B -r 0.0.0.0 255.255.255.255 -a
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 255.255.255.255 -d
  dynamic_objects -o DYN_ISP_A -r 0.0.0.0 0.0.0.0 -a 
endif&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;In the previous step, I added the dynamic objects and replaced 0.0.0.0 0.0.0.0 with our Public IP ranges from the ISPs. Do I need to add the ISP ranges to this script as well or keep it exactly as shown?&lt;/P&gt;</description>
      <pubDate>Mon, 31 Aug 2026 18:16:28 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281694#M46803</guid>
      <dc:creator>Jesse140515</dc:creator>
      <dc:date>2026-08-31T18:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Question about NAT Failover SK 25152</title>
      <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281707#M46809</link>
      <description>&lt;P&gt;If you're indeed referring to *static* NAT, then this script is of no use. &amp;nbsp;Static NAT is (by definition) just that; static. &amp;nbsp;What you need for static NAT on ISP Redundancy is manual NAT entries for the internal host and manual static NAT for an IP on both ISP interfaces. &amp;nbsp;You can get away with DNS trickery with an external DNS host if you list multiple IPs for the host (round-robin externally). &amp;nbsp;The firewall will track the inbound/outbound connections for that external host to your inbound static NAT host, regardless of the ISP it came in on. &amp;nbsp;Downside with this trickery is that you are fully at the mercy of external round-robin; might not be an issue if both ISP links are similar (100mbps here, 120mbps there).&lt;/P&gt;
&lt;P&gt;However, the preferred/recommended/documented way, tho, is to let the firewall read the inbound DNS requests which means (yay!) you hosting your own DNS server internally so the firewall re-writes the DNS reply based on the DYN_ISP_A/DYN_ISP_B state. &amp;nbsp;This only works if you build the table of hostnames and their ISP A/B IP addresses. &amp;nbsp;Not fun to do. &amp;nbsp;(are you *sure* you want to host static NAT through ISP Redundancy? just sayin'... &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; ).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The ISP update script is more appropriate for primary/backup failure for outbound only. &amp;nbsp;It doesn't matter for inbound traffic (because that's not the goal of ISP Redundancy).&lt;/P&gt;
&lt;P&gt;The inbound static NAT rule will be:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;- original_source: Any
  original_destination: HostA_ISP1_NAT
  translated_source: Original
  translated_destination: HostA
- original_source: Any
  original_destination: HostA_ISP2_NAT
  translated_source: Original
  translated_destination: HostA
&lt;/LI-CODE&gt;
&lt;P&gt;Because it's manual now, you'll need an outbound NAT for *each* ISP for this host, and that's where you DYN_ISP_A/DYN_ISP_B dynamic objects come into play:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;- original_source: HostA
  original_destination: DYN_ISP_A
  translated_source: HostA_ISP1_NAT
  translated_destination: Original
- original_source: HostA
  original_destination: DYN_ISP_B
  translated_source: HostA_ISP2_NAT
  translated_destination: Original
&lt;/LI-CODE&gt;
&lt;P&gt;Yes, you counted that correctly.. 4 rules per host. &amp;nbsp;Yep. &amp;nbsp;It's not so bad now with Ansible, tho (in fact I just gave you the YAML model for them) &amp;nbsp; However, "back in the day" when I configured this on R70.40 manually clicking my way through SmartDashboard... omg... and *of course* the customer had a dozen or so hosts. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Be sure you also set some ISP link aliveness check. &amp;nbsp;Unique ping hosts per ISP. &amp;nbsp;The firewall will take care of emitting these packets; no route table trickery necessary.&lt;/P&gt;
&lt;P&gt;Anyhoo.. it works.. it's just a pain to setup the one time. &amp;nbsp;That's why it's considered "poor man's BGP". &amp;nbsp;Once it's in place, it works well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2026 02:06:52 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281707#M46809</guid>
      <dc:creator>Duane_Toler</dc:creator>
      <dc:date>2026-09-01T02:06:52Z</dc:date>
    </item>
    <item>
      <title>Re: Question about NAT Failover SK 25152</title>
      <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281735#M46820</link>
      <description>&lt;P&gt;Thanks for the reply! We use AWS for our external DNS with health checks that will fail over to the secondary if the primary is inaccessible. I have created 3 manual objects for the host, Host_ISPA, Host_ISPB, and Host_Internal. So if I'm understanding you correctly, it should just work for inbound NAT since the firewall will receive the traffic from AWS in the event of a primary ISP outage? The firewall is configured with ISP redundancy in primary/backup mode as a whole, so would I still need to configure outbound NAT objects for each host or will the firewall figure out how to route the traffic automatically?&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2026 14:20:06 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281735#M46820</guid>
      <dc:creator>Jesse140515</dc:creator>
      <dc:date>2026-09-01T14:20:06Z</dc:date>
    </item>
    <item>
      <title>Re: Question about NAT Failover SK 25152</title>
      <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281736#M46821</link>
      <description>&lt;P&gt;Yep! So long as the packet "gets there", you're good to go.&lt;/P&gt;
&lt;P&gt;Granted "get there" would also mean you need to have proxy ARP in place, one way or another. &amp;nbsp;Global Properties has the option now to merge manual proxy ARP. &amp;nbsp;Be sure you verify this is published before troubleshooting the wrong things (&lt;EM&gt;&lt;FONT face="andale mono,times"&gt;fw ctl arp -n&lt;/FONT&gt;&lt;/EM&gt; is your friend here.)&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2026 14:18:37 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281736#M46821</guid>
      <dc:creator>Duane_Toler</dc:creator>
      <dc:date>2026-09-01T14:18:37Z</dc:date>
    </item>
    <item>
      <title>Re: Question about NAT Failover SK 25152</title>
      <link>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281737#M46822</link>
      <description>&lt;P&gt;For your ISP redundancy question: Outbound is gonna be pinned to the ISP link that's active from the cpisp_update script, and that will be selected in the NAT rule like the SK shows.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Sep 2026 14:23:28 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/General-Topics/Question-about-NAT-Failover-SK-25152/m-p/281737#M46822</guid>
      <dc:creator>Duane_Toler</dc:creator>
      <dc:date>2026-09-01T14:23:28Z</dc:date>
    </item>
  </channel>
</rss>

