{"id":2057,"date":"2009-07-05T08:44:06","date_gmt":"2009-07-05T06:44:06","guid":{"rendered":"http:\/\/www.corelan.be:8800\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/"},"modified":"2009-07-05T08:44:06","modified_gmt":"2009-07-05T06:44:06","slug":"juniper-screenos-activepassive-clustering","status":"publish","type":"post","link":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/","title":{"rendered":"Juniper ScreenOS : Active\/Passive clustering"},"content":{"rendered":"<h3>Introduction<\/h3>\n<p>In this blog post, I\u2019ll show the easy steps to set up a screenOS based active\/passive cluster. I\u2019m not going to discuss the configuration of active\/active clusters because, in my opinion, this configuration is only needed in rare circumstances and may introduce some weird behaviour issues.&#160; Furthermore, active\/passive clusters have been working quite well for me.<\/p>\n<p>These are the main requirements to set up a cluster :<\/p>\n<ul>\n<li>The 2 devices need to be the same model <\/li>\n<li>The 2 devices need to run exactly the same screenOS version (Or you\u2019ll get \u201cconfiguration out of sync\u201d messages because the checksums will fail) <\/li>\n<li>The 2 devices need to be connected to each other : You need to have at least one free interface on each device to interconnect the device (HA link). Use the same interface number on both devices. <\/li>\n<li>It makes no real sense to build a cluster if your switches are not redundant as well.&#160; Having a cluster on one switch will bring some redundancy, but the switch becomes a single point of failure. Just something to keep in mind. <\/li>\n<li>License : SSG5 devices require an additional license. SSG140 and other models have the NSRP license included. (check the documentation !). Run \u201cget lic | incl NSRP\u201d. If the output states \u201cNSRP: Active\/Active\u201d then you can set up an Active\/Active cluster, and an Active\/Passive cluster. <\/li>\n<\/ul>\n<p>In addition to this, you\u2019ll need additional IP addresses because you will need to set separate management IP addresses on both devices. This will not only allow you to connect to each device separately, but it is also a requirement for track-ip (when used) and for the cluster to operate properly.&#160; These management IP\u2019s are not replicated between devices.&#160; Login banners are not replicated either.<\/p>\n<p>In fact, I usually put separate management IP\u2019s on every interface that has management enabled. The interface IP will be the same on each cluster member so you\u2019ll only need one IP per interface.<\/p>\n<p>The procedures below are based on screenOS 6.2, but it should work with earlier versions as well.<\/p>\n<p>&#160;<\/p>\n<h3>Terminology<\/h3>\n<p>Before looking at the configuration steps, I need to explain some cluster terminology :<\/p>\n<ul>\n<li>NSRP : Netscreen Redundancy Protocol : This is the protocol used by Netscreen to set up and operate a cluster <\/li>\n<li>VSD : Virtual Security Device&#160; : this is the logical representation of a firewall device.&#160; If you set up a cluster, both devices run the same VSD. This means that they have the same configuration. In a VSD, only one device actively runs the VSD (=\u201dMaster\u201d) (and the other one is the backup).&#160;&#160; To end users, traffic always uses the VSD, not one or another physical device. <\/li>\n<li>VSI : Virtual Security Interface : VSI\u2019s overlay physical interfaces so they can move the active VSD from one device to another. <\/li>\n<li>VSD Group : pair of security devices that are contained in the same VSD. <\/li>\n<li>VSD States : A VSD can be in any of the following states :\n<ul>\n<li>Master : this refers to the active node, the device that processes traffic sent to the VSI <\/li>\n<li>Backup : this refers to the passive node. This device monitors the state of the master and takes over when the master fails <\/li>\n<li>Initial : state of a VSD group member when it is being joined to the VSD group <\/li>\n<li>Ineligible : state assigned by an admin so it cannot particiate in the election process (more info about this process later) <\/li>\n<li>Inoperable : state of a member that cannot be joinged to the VSD because there is an internal problem or network connection problem. <\/li>\n<\/ul>\n<\/li>\n<li>Priority &amp; Election : Upon initial NSRP configuration, the VSD group member that has the <em>lowest (closest to zero)<\/em> priority number will become the master device.&#160; If two devices have the same priority, the device that has the lowest mac address will win. <\/li>\n<li>Preempt : By default, the master\/backup device election is purely based on priorities. But there may be a reason where you want to control the election.&#160; Let\u2019s say the master device goes down. The backup device takes control. Suppose the master device is broken and you need to replace it (and the replacement unit has a lower mac address). So you reconfigure the new device with the same VSD information, same priority. You connect the master device back and all of a sudden both devices have an empty config.&#160; When you put the master device back, with the same priority, and a lower MAC, it will become master again\u2026 But it does not have the config yet. So it pushes its (empty) config to the other device and the entire cluster is broken. This scenario can be avoided by setting different priorities, or by manually setting the node that has the entire config to preempt mode. This will ensure that this node (with preempt enabled) will become the master even if the other node has a lower priority.&#160; So in the scenario where the previous master broke down and was replaced, I would put the active node (the backup node at that point) in preempt and then reconnect the new node into the cluster. <\/li>\n<li>The preempt holddown parameter specifies how long a device will wait for another device with higher priority to assume the master role before it takes over.&#160; The default is 3 seconds. <\/li>\n<li>Failover : when the master device goes down, the backup device will send ARP messages from each VSI to inform the connected switches (Layer 2) about the new location of the VSI MAC address. Because these ARP messages are not required for address resolution, they are called \u201cgratuitous ARP\u201d messages. You can control how many ARP packets are sent upon failover. <\/li>\n<li>RTO : Run-Time objects : objects created dynamically in memory (such as session table entries, ARP cache, DHCP leases, IPSec SA\u2019s).&#160; When a failover occurs, the new master needs to maintain these RTO\u2019s to allow a smooth failover.&#160;&#160; By default, NSRP cluster members only synchronize sessions.&#160; You can sync the other RTO\u2019s as well, but you should only enable RTO sync when the configurations are in sync first. <\/li>\n<li>HA link : this connection is used for heartbeat and to synchronize configs, rto\u2019s, \u2026 between the members of the cluster. You can interconnect the devices with a crosscable or with a switch between the 2 devices.&#160; The devices need to be in the same layer 2 network (so you cannot cross a router with a HA link).&#160;&#160; It\u2019s recommended to always use a secondary HA interface (which can be a regular firewall interface that is used for traffic).&#160; In normal operations, only the primary HA link is used for heartbeat and to synchronize RTO\u2019s and config. The secondary is only used for heartbeat (unless the primary HA link goes down) <\/li>\n<li>HA link protection : you can enable encryption and authentication on the HA link. <\/li>\n<\/ul>\n<p>&#160;<\/p>\n<p>When you want to build an A\/P cluster, you need a single VSD.&#160; With older versions of screenOS, you could not synchronise dynamic routing between the devices, so you needed to set up a VSD-Less cluster.&#160; With screenOS 6 and up, this is no longer needed. Routing entries (both static and dynamic) can be synchronized as well. The static routes will simply be put in the RIB as static routes, the dynamic routes will be marked with a trailing \u2018B\u2019 (Backup route).&#160; So OSPF routes will be displayed as \u201cOB\u201d, iBGP will be displayed as \u201ciBB\u201d, eBGP will be displayed as \u201ceBB\u201d and so on<\/p>\n<p>&#160;<\/p>\n<h3>Configuring NSRP Active\/Passive<\/h3>\n<p>Before looking at the configuration steps, it\u2019s important to know that you can convert a fully working firewall into a cluster without any downtime.&#160; You don\u2019t need to reboot. You just have to make sure all interfaces on both devices are used for the same zone\/link\/\u2026<\/p>\n<p>First, pick the interface on both devices to be used as HA link. Let\u2019s say you want to use eth0\/6 for HA. So on both cluster devices, put this interfaces in nsrp mode :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp <span style=\"color: #0000ff\">interface<\/span> eth0\/6<\/pre>\n<\/div>\n<p>(on some devices, you need to put the interface in the HA zone instead : set int e0\/6 zone HA)<\/p>\n<h4>Set up master device<\/h4>\n<p>Next, create the cluster on the first device. We will create a cluster id 1, name it \u201cMyCluster1\u201d and set some cluster parameters.<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp cluster id 1\nset nsrp cluster name MyCluster1\nset nsrp arp 5\nset nsrp auth password MyAuthPassword\nset nsrp encrypt password MyEncryptionKey<\/pre>\n<\/div>\n<blockquote>\n<p>When you enter the \u201cset nsrp cluster id 1\u201d, you will get the message \u201cUnit becomes master of NSRP vsd-group 0\u201d. The prompt now indicates that the device is master (M)<\/p>\n<p>As soon as you enter the \u201cset nsrp cluster name\u201d command, the command prompt will also indicate the cluster name.&#160; On the master device, the prompt will look like this :<\/p>\n<p><strong>MyCluster1:hostname(M)-&gt;<\/strong><\/p>\n<p>On a backup device, you\u2019ll see <strong>MyCluster1:hostname(B)-&gt;<\/strong><\/p>\n<p>The arp, auth and encrypt statements are optional. The \u201carp\u201d statement refers to the number of gratuitous arp messages that need to be sent upon failover.&#160; The default is 4.<\/p>\n<\/blockquote>\n<p>In the current setup, the device can failover when the other device goes down.&#160; If you want devices to failover when interfaces go down, you need to set interface monitoring :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp monitor <span style=\"color: #0000ff\">interface<\/span> eth0\/1<\/pre>\n<\/div>\n<p>This is optional and is only required if you want to do interface based failover. Keep in mind that not just the interface will failover. The entire device will failover.<\/p>\n<p>Now it\u2019s time to set some VSD specific settings (priority, preempt and preempt holddown). I usually configure the master device with a priority of 50 and enable preempt :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp vsd id 0 priority 50\nset nsrp vsd id 0 preempt<\/pre>\n<\/div>\n<p>Then, enable RTO sync and enable route sync<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp rto-mirror sync\nset nsrp rto-mirror route<\/pre>\n<\/div>\n<p>Define a secondary interface.<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp secondary-path ethernet0\/4<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<h4>Set up backup device<\/h4>\n<p>On the backup device, the configuration is pretty much the same, except for the priority and preempt :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\"><p>set nsrp cluster id 1\nset nsrp cluster name MyCluster1\nset nsrp arp 5\nset nsrp auth password MyAuthPassword\nset nsrp encrypt password MyEncryptionKey\nset nsrp monitor <span style=\"color: #0000ff\">interface<\/span> eth0\/1\n\nset nsrp vsd id 0 priority 100\n\nset nsrp rto-mirror sync\nset nsrp rto-mirror route\n\nset nsrp secondary-path ethernet0\/4<\/p><\/pre>\n<\/div>\n<p>=&gt; on the backup node, I have set the priority to 100 (higher than the master) and I do not enable preempt. This will make sure that, if the master goes down (e.g. for maintenance) and comes online again, it will surely become the master node again.<\/p>\n<p>When the cluster devices are configured, they will start synchronizing information. You can check if the configurations are in sync by running :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">MyCluster1:fw01(M)-&gt; <strong>exec nsrp sync global-config check-sum<\/strong>&#160;&#160;&#160;&#160; configuration <span style=\"color: #0000ff\">in<\/span> sync<\/pre>\n<\/div>\n<p>Before the cluster is fully in sync, you should force sync, by running (<strong>on the backup device !<\/strong>):<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">MyCluster1:fw02(B)-&gt; exec nsrp sync global-config save\n   load peer system config to save\nSave global configuration successfully.\nSave local configuration successfully.\ndone.\nPlease reset your box to let cluster configuration take effect!\n\n&lt;reset&gt;\n\nSystem change state to Active(1)\nconfiguration <span style=\"color: #0000ff\">in<\/span> sync (local checksum 12345678 == remote checksum 12345678)\nReceived all run-time-<span style=\"color: #0000ff\">object<\/span> from peer.<\/pre>\n<\/div>\n<p>After the reboot of the passive (backup) device, the cluster is fully operational. Note : when the device prompts you to save the config, enter \u201cn\u201d (no)<\/p>\n<blockquote>\n<p>Even if you have create a cluster on an existing device and added a second (new, empty) device into the cluster, you only have to reboot the passive node (and the active node always stays online)<\/p>\n<\/blockquote>\n<p>When both cluster members are synced ( = when the files are synced), you should enable config sync.&#160; <\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp config sync<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<h4>Verify cluster status<\/h4>\n<p>You can get some nsrp information with the following commands :<\/p>\n<p>\u201cget nsrp\u201d : shows information about the cluster and cluster nodes, the vsd group, etc :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">MyCluster1:fw01(M)-&gt; get nsrp\nnsrp version: 2.0\n\ncluster info:\ncluster id: 1, name: MyCluster1\nlocal unit id: 8992891\nactive units discovered: \nindex: 0, unit id:   8992891, ctrl mac: 00222386308b , data mac: ffffffffffff\nindex: 1, unit id:    413691, ctrl mac: 0024ac04580a , data mac: ffffffffffff\ntotal number of units: 2\n\nVSD group info:\ninit hold time: 5\nheartbeat lost threshold: 3\nheartbeat interval: 1000(ms)\nmaster always exist: disabled\ngroup priority preempt holddown inelig   master       PB other members\n    0       50 yes            3 no       myself   413691 \ntotal number of vsd groups: 1\nTotal iteration=4632604,time=88222673,max=29752,min=87,average=19\n\nRTO mirror info:\nrun time <span style=\"color: #0000ff\">object<\/span> sync:   enabled\nroute synchronization: enabled\nping session sync: enabled\ncoldstart sync done\nnsrp data packet forwarding <span style=\"color: #0000ff\">is<\/span> enabled\n\nnsrp link info:\ncontrol   channel: ethernet0\/6 (ifnum: 10)  mac: 00222386308b state: up\nha data link not available\nsecondary path channel: ethernet0\/4 (ifnum: 8)  mac: 00222386308d state: up\n\nNSRP encryption: enabled\nNSRP authentication: enabled\ndevice based nsrp monitoring threshold: 255, weighted sum: 0, not failed\ndevice based nsrp monitor <span style=\"color: #0000ff\">interface<\/span>: ethernet0\/1\ndevice based nsrp monitor zone: \ndevice based nsrp track ip: (weight: 255, disabled)\nnumber of gratuitous arps: 5\nconfig sync: enabled\n\ntrack ip: disabled<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>If you want to see the differences between the 2 nodes, run<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">MyCluster1:fw01(M)-&gt; <strong>exec nsrp sync global diff<\/strong>\nMyCluster1:fw01(M)-&gt; rcv_sys_config_diff: get local config sucess\nLocal have 0 different cmd lines:\nPeer have 0 different cmd lines:<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<h3>Test failover<\/h3>\n<p>You can test if the cluster works by turning off the master device and wait a couple of seconds (typically 1 or 2 seconds) before the backup becomes master and processes all traffic.<\/p>\n<p>Alternatively, you can perform a manual failover using the following command :<\/p>\n<p><u>On the master device<\/u> :<\/p>\n<ul>\n<li>If preempt is enabled, run : <\/li>\n<\/ul>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">exec nsrp vsd-group 0 mode ineligible<\/pre>\n<\/div>\n<ul>\n<li>If preempt is not enabled, run : <\/li>\n<\/ul>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">exec nsrp vsd-group 0 mode backup<\/pre>\n<\/div>\n<p>These commands will force the primary (master) device to step down. The other device will become master right away<\/p>\n<p>You can verify which one of the devices is master by performing the routines explained at <a title=\"http:\/\/kb.juniper.net\/KB11199\" href=\"http:\/\/kb.juniper.net\/KB11199\">http:\/\/kb.juniper.net\/KB11199<\/a><\/p>\n<p>&#160;<\/p>\n<h3>Impact of cluster on certificates and snmp<\/h3>\n<p>Cluster members can have different hostnames. If digital certificates\/snmp settings are configured with individual hostnames, then communication may break upon a failover.&#160; It\u2019s better to set a cluster name for all members and to use this VSD identity for snmp and digital certificates.<\/p>\n<p>You can set a cluster name with the following command :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set nsrp cluster name MyGlobalClusterName<\/pre>\n<\/div>\n<p>For snmp, use the cluster name :<\/p>\n<div>\n<pre style=\"padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none\">set snmp name MyGlobalClusterName<\/pre>\n<\/div>\n<p>Also, It is important to install\/sync all PKI related components on both devices before installing the cluster, or you may get \u201cconfig out of sync\u201d messages.&#160; (exec nsrp sync pki\u2026)<\/p>\n<p>See Concepts&amp;Examples <a title=\"PDF [27 MB]\" href=\"http:\/\/www.juniper.net\/techpubs\/software\/screenos\/screenos6.2.0\/ce_all.pdf\">PDF [27 MB]<\/a>, page 1864<\/p>\n<p>Check <a title=\"http:\/\/kb.juniper.net\/KB11326\" href=\"http:\/\/kb.juniper.net\/KB11326\">http:\/\/kb.juniper.net\/KB11326<\/a> for more reasons why configurations can get out of sync<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this blog post, I\u2019ll show the easy steps to set up a screenOS based active\/passive cluster. I\u2019m not going to discuss the configuration of active\/active clusters because, in my opinion, this configuration is only needed in rare circumstances and may introduce some weird behaviour issues.&#160; Furthermore, active\/passive clusters have been working quite well &hellip; <a href=\"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Juniper ScreenOS : Active\/Passive clustering\"<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[554,164,127],"tags":[3740,3735],"class_list":["post-2057","post","type-post","status-publish","format-standard","hentry","category-juniper","category-networking","category-security","tag-backup-restore","tag-juniper-netscreen-screenos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Juniper ScreenOS : Active\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Juniper ScreenOS : Active\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"og:description\" content=\"Introduction In this blog post, I\u2019ll show the easy steps to set up a screenOS based active\/passive cluster. I\u2019m not going to discuss the configuration of active\/active clusters because, in my opinion, this configuration is only needed in rare circumstances and may introduce some weird behaviour issues.&#160; Furthermore, active\/passive clusters have been working quite well &hellip; Continue reading &quot;Juniper ScreenOS : Active\/Passive clustering&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/\" \/>\n<meta property=\"og:site_name\" content=\"Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/corelanconsulting\" \/>\n<meta property=\"article:published_time\" content=\"2009-07-05T06:44:06+00:00\" \/>\n<meta name=\"author\" content=\"corelanc0d3r\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@corelanc0d3r\" \/>\n<meta name=\"twitter:site\" content=\"@corelanc0d3r\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/\"},\"author\":{\"name\":\"corelanc0d3r\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\"},\"headline\":\"Juniper ScreenOS : Active\\\/Passive clustering\",\"datePublished\":\"2009-07-05T06:44:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/\"},\"wordCount\":2013,\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"keywords\":[\"backup restore\",\"juniper netscreen screenos\"],\"articleSection\":[\"Juniper\",\"Networking\",\"Security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/\",\"name\":\"Juniper ScreenOS : Active\\\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\"},\"datePublished\":\"2009-07-05T06:44:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2009\\\/07\\\/05\\\/juniper-screenos-activepassive-clustering\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.corelan.be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Juniper ScreenOS : Active\\\/Passive clustering\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"name\":\"Corelan CyberSecurity Research\",\"description\":\"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.corelan.be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\",\"name\":\"Corelan CyberSecurity Research\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"contentUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"width\":200,\"height\":200,\"caption\":\"Corelan CyberSecurity Research\"},\"image\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/corelanconsulting\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\",\"https:\\\/\\\/x.com\\\/corelanconsulting\",\"https:\\\/\\\/instagram.com\\\/corelanconsult\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\",\"name\":\"corelanc0d3r\",\"pronouns\":\"he\\\/him\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"caption\":\"corelanc0d3r\"},\"description\":\"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.\",\"sameAs\":[\"https:\\\/\\\/www.corelan-training.com\",\"https:\\\/\\\/instagram.com\\\/corelanc0d3r\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/petervaneeckhoutte\\\/\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\"],\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/author\\\/admin0\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Juniper ScreenOS : Active\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/","og_locale":"en_US","og_type":"article","og_title":"Juniper ScreenOS : Active\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research","og_description":"Introduction In this blog post, I\u2019ll show the easy steps to set up a screenOS based active\/passive cluster. I\u2019m not going to discuss the configuration of active\/active clusters because, in my opinion, this configuration is only needed in rare circumstances and may introduce some weird behaviour issues.&#160; Furthermore, active\/passive clusters have been working quite well &hellip; Continue reading \"Juniper ScreenOS : Active\/Passive clustering\"","og_url":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/","og_site_name":"Corelan | Exploit Development &amp; Vulnerability Research","article_publisher":"https:\/\/www.facebook.com\/corelanconsulting","article_published_time":"2009-07-05T06:44:06+00:00","author":"corelanc0d3r","twitter_card":"summary_large_image","twitter_creator":"@corelanc0d3r","twitter_site":"@corelanc0d3r","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/#article","isPartOf":{"@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/"},"author":{"name":"corelanc0d3r","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f"},"headline":"Juniper ScreenOS : Active\/Passive clustering","datePublished":"2009-07-05T06:44:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/"},"wordCount":2013,"publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"keywords":["backup restore","juniper netscreen screenos"],"articleSection":["Juniper","Networking","Security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/","url":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/","name":"Juniper ScreenOS : Active\/Passive clustering - Corelan | Exploit Development &amp; Vulnerability Research","isPartOf":{"@id":"https:\/\/www.corelan.be\/#website"},"datePublished":"2009-07-05T06:44:06+00:00","breadcrumb":{"@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.corelan.be\/index.php\/2009\/07\/05\/juniper-screenos-activepassive-clustering\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.corelan.be\/"},{"@type":"ListItem","position":2,"name":"Juniper ScreenOS : Active\/Passive clustering"}]},{"@type":"WebSite","@id":"https:\/\/www.corelan.be\/#website","url":"https:\/\/www.corelan.be\/","name":"Corelan CyberSecurity Research","description":"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.","publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.corelan.be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.corelan.be\/#organization","name":"Corelan CyberSecurity Research","url":"https:\/\/www.corelan.be\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/","url":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","contentUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","width":200,"height":200,"caption":"Corelan CyberSecurity Research"},"image":{"@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/corelanconsulting","https:\/\/x.com\/corelanc0d3r","https:\/\/x.com\/corelanconsulting","https:\/\/instagram.com\/corelanconsult"]},{"@type":"Person","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f","name":"corelanc0d3r","pronouns":"he\/him","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","url":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","caption":"corelanc0d3r"},"description":"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.","sameAs":["https:\/\/www.corelan-training.com","https:\/\/instagram.com\/corelanc0d3r","https:\/\/www.linkedin.com\/in\/petervaneeckhoutte\/","https:\/\/x.com\/corelanc0d3r"],"url":"https:\/\/www.corelan.be\/index.php\/author\/admin0\/"}]}},"views":51430,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/2057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/comments?post=2057"}],"version-history":[{"count":0,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/2057\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/media?parent=2057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/categories?post=2057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/tags?post=2057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}