SRX Troubleshooting
SRX Troubleshooting
Scope
This document will go in depth into troubleshooting components of the platform to the extent that such troubleshooting is
supported for field purposes. This document will not go into troubleshooting at the developer level, as this will require
JTAC involvement. This document will focus primarily on troubleshooting the SRX itself, and will not going into details of
troubleshooting other platforms, or the use of non JUNOS utilities. A fundamental understanding of JUNOS and the SRX
is expected in this document to gain the best understanding of the content presented.
The “show interfaces” commands will give you important detail around the state of the interfaces on the
JUNOS platform itself.
Sometimes you simply want to see the state of an interface of interfaces. You can specify the interface which
you would like to see the state of, or omit the interface to see all interfaces. Note that if you do not specify the
unit, you will see the physical interface and all of its units. We can also see the L3 Protocols configured and
respective addressing.
show route
Checking the routing table of a platform can provide some very good insight into why the firewall is processing traffic in an
unexpected way. Just like with ScreenOS, when a packet arrives on an interface, we know what the source interface, and
therefore what the source zone is, we then do a route lookup (within that VR) and determine what the outgoing interface is,
and therefore it’s outgoing zone (in Transparent Mode we typically ARP for the destination if we do not know where it is,
although this is configurable.) With the source and destination zones known, we can then do a policy lookup to find the
appropriate rule. Therefore if we have an incorrect route, it can lead to traffic not being processed in an expected manner.
When viewing the routing table, JUNOS will show us all valid routes that we know about, even if they are not selected as
being active. This is very helpful when you get routing information from multiple different sources, such as for different
dynamic routing protocols. We can view the active routes only with the “show route forwarding-table” command. Here we
will show the routing table as is. This will show all routing instances along with active and inactive (but valid) routes.
Routes that are labeled with an * show that they are valid and in the forwarding table. If using Equal Cost Multiple Path,
then you can have multiple active routes for the same prefix.
course, this may differ if there is NAT applied to it when discussing transit sessions. We can also see what interface the
traffic arrives and leaves on.
Session ID: 13284, Policy name: self-traffic-policy/1, Timeout: 1800
In: 192.168.225.100/2192 --> 192.168.224.3/22;tcp, If: ge-0/0/0.0
Out: 192.168.224.3/22 --> 192.168.225.100/2192;tcp, If: .local..0
In the SRX HE platforms you may want to check whether a PIC is online or not, particularly when it is booting up, since
even after you can log into the system, a individual PIC may not yet be operational for a few minutes. This can easily be
done by issuing the “show chassis fpc pic-status” command. We can even see the type of PIC including which one is the
CP and what mode the SPU is in (CP, Flow, or Combo) along with which slot it is installed in.
root@SRX5800-1> show chassis fpc pic-status
node0:
--------------------------------------------------------------------------
Slot 0 Online SRX5k SPC
PIC 0 Online SPU Cp
PIC 1 Online SPU Flow
Slot 1 Online SRX5k SPC
PIC 0 Online SPU Flow
PIC 1 Online SPU Flow
Slot 11 Online SRX5k DPC 40x 1GE
PIC 0 Online 10x 1GE RichQ
PIC 1 Online 10x 1GE RichQ
PIC 2 Online 10x 1GE RichQ
PIC 3 Online 10x 1GE RichQ
node1:
--------------------------------------------------------------------------
Slot 0 Online SRX5k SPC
PIC 0 Online SPU Cp
PIC 1 Online SPU Flow
Slot 1 Online SRX5k SPC
PIC 0 Online SPU Flow
PIC 1 Online SPU Flow
Slot 11 Online SRX5k DPC 40x 1GE
PIC 0 Online 10x 1GE RichQ
PIC 1 Online 10x 1GE RichQ
PIC 2 Online 10x 1GE RichQ
PIC 3 Online 10x 1GE RichQ
{primary:node0}
root@SRX3400-1> show security monitoring fpc 2
node0:
--------------------------------------------------------------------------
FPC 2
PIC 0
CPU utilization : 0 %
Memory utilization : 51 %
Current flow session : 0
Max flow session : 524288
Current CP session : 1
Max CP session : 1048576
node1:
--------------------------------------------------------------------------
FPC 2
PIC 0
CPU utilization : 0 %
Memory utilization : 51 %
Current flow session : 0
Max flow session : 524288
Current CP session : 0
Max CP session : 1048576
User 2 percent
Background 0 percent
Kernel 3 percent
Interrupt 0 percent
Idle 95 percent
Model RE-SRX210-HIGHMEM
Serial ID AAAH2299
Start time 2009-07-30 17:37:21 EDT
Uptime 3 days, 23 hours, 56 minutes, 49 seconds
Last reboot reason 0x1:power cycle/failure
Load averages: 1 minute 5 minute 15 minute
0.04 0.01 0.00
Green * * . * . * * .
CB LEDs:
CB 0 1
-------------
OK * .
Fail . .
Master * .
PS LEDs:
PS 0 1
------------
Red . .
Green . *
HA LED:
HA 0
--------
Red .
Green .
Amber .
SFB LED:
SFB 0
--------
Red .
Green *
Amber .
Blink .
--------
Red .
Green *
Amber .
root@SRX210% pwd
/cf/var/log
The most command logs to check are the following:
• chassisd: Events relating to hardware, chassis control
• idpd: Events relating to the IDP daemon, events and failures
• interactive-commands: By default all commands entered on the platform will be stored in this log, so it is very
useful for checking other’s work. This includes operational commands that are not entered in the configuration.
• jsrpd: Events relating to High Availability
• kmd: Events relating to IKE negotiation
• messages: This would be the first place to look for device events, it is the general log message file, and often has
lots of useful information. While you can often find more detail for other individual specialized files, this is a great
starting point.
• utmd: For platforms that support UTM features, detailed event logs are stored here
When you are looking through these event log files, it is usually very helpful to use the powerful output filtering tools that
JUNOS has to offer. Specifically, you can use “show log <log file> | match <expression>”, show log <log file> | find
<expression>”, show log <log file> | last <show last X number of lines>” , and “show log <log file> | trim <show log after X
number of lines>”.
show security ipsec security-associations / show security ipsec security-associations index <ID>
You can quickly check to see if Phase 2 (which also implies Phase 1) has established by issuing the “show security ipsec
security-associations” command. This will give you a high level overview of the connected gateways, protocols, and
lifetimes of the established Security Associations. You can gather more in depth information by taking the Index ID, and
issuing the second command, which will show more information about that individual SA. In this example, we can see
that the SRX has renegotiated another pair of Security Associations, since the top two are so close to expiring. This is
done to limit disruption of service if you have the “establish-tunnels-immediately” option enabled.
root@SRX210> show security ipsec security-associations
Total active tunnels: 1
ID Gateway Port Algorithm SPI Life:sec/kb Mon vsys
<131073 192.168.224.1 500 ESP:aes-256/sha1 d6393645 26/ unlim - 0
>131073 192.168.224.1 500 ESP:aes-256/sha1 153ec235 26/ unlim - 0
<131073 192.168.224.1 500 ESP:aes-256/sha1 f9a2db9a 3011/ unlim - 0
>131073 192.168.224.1 500 ESP:aes-256/sha1 153ec236 3011/ unlim - 0
TCP winnuke 0
TCP port scan 12
ICMP address sweep 15
IP tear drop 0
TCP SYN flood 0
IP spoofing 0
ICMP ping of death 0
IP source route option 0
TCP land attack 3
TCP SYN fragment 0
TCP no flag 0
IP unknown protocol 156
IP bad options 0
IP record route option 0
IP timestamp option 0
IP security option 0
IP loose source route option 0
IP strict source route option 0
IP stream option 0
ICMP fragment 0
ICMP large packet 210
TCP SYN FIN 0
TCP FIN no ACK 0
Source session limit 0
TCP SYN-ACK-ACK proxy 0
IP block fragment 0
Destination session limit 0
Used : 3 MB ( 3072 KB )
Available : 185 MB ( 189440 KB )
Packet Statistics:
[ICMP: 0] [TCP: 0] [UDP: 0] [Other: 0]
Flow Statistics:
ICMP: [Current: 0] [Max: 0 @ 2009-07-30 17:41:54 EDT]
TCP: [Current: 0] [Max: 0 @ 2009-07-30 17:41:54 EDT]
UDP: [Current: 0] [Max: 0 @ 2009-07-30 17:41:54 EDT]
Other: [Current: 0] [Max: 0 @ 2009-07-30 17:41:54 EDT]
Session Statistics:
[ICMP: 0] [TCP: 0] [UDP: 0] [Other: 0]
Policy Name : Basic
1. Log into the JUNOS OS Shell with the “start shell” command
2. At the “%” prompt, create a new directory with the command “mkdir /var/tmp/usb” this will create a directory
called “usb” in “/var/tmp”. Technically you can call it something else, or even put it in another location if desired.
3. Next mount the USB key with the command “mount_msdosfs /dev/da1 /var/tmp/usb”
In ScreenOS what we know as debugging, is done by issuing the respective debug command, such as “debug
flow basic” some commands such as debug flow basic and debug ike basic allow us to define filters, to only
capture information on certain flows (which is much more powerful than having to look at all flows, which can
have a performance impact on the platform. The information that is logged from the ScreenOS debugs is
captured to a debug buffer, which is stored in memory. It can be limited to 4MB of space before it starts to
rewrite the logs. Also, debugs are typically disabled when the user logs out of the CLI.
In JUNOS, the concept of setting Traceoptions requires setting the actual trace in the configuration itself, rather
than as an operational mode command. When you set the trace in the configuration, you need to define the
“flags” for the actual debug that you want to perform (there are usually different options for each type
depending on what type of information you are looking for) as well as define the file that the trace information
should be written to. This is a very powerful feature because it gives you a lot more flexibility and more storage
space to capture the output. This also means that there are a few extra steps compared to ScreenOS, but it is
quite simple to setup, and remove, and you can also deactivate the trace, so that you can simply enable or
disable it in the future. With the power of JUNOScript, you could even write an event script that could trigger a
debug or collect information when certain events occur. Later in this document, we’ll discuss the power of the
Advanced Insight Solutions (AIS) component which leverages this power.
Configuring a Trace
Here we will configure a basic trace to monitor interfaces going up and down in the platform.
the pipe with this option, however after match, you define the regular expression that you would
like to match on.
4. Issue the commit to apply the configuration exit configuration and exit the configuration mode: commit
and-quit
5. Now you can take a look at the log file. You can do this by either using the “show log Interfaces.txt”
command (even using additional options to match, trim, find, and others by using the pipe output) OR
we can also view the file in realtime, using the command “monitor start Interfaces.txt” which is the
equivalent of the tail –f Unix/Linux command. If you would like to stop the realtime output just type
“monitor stop” even if you do not have an actual prompt (because the text is scrolling) the command
will be accepted (assuming no typos.)
6. Lastly, you can stop the actual trace in a few different ways. If you have not configured any other
changes in the meantime, you can enter the configuration mode and just issue the “rollback 1” and then
the “commit” command. You can also either use the “delete interfaces traceoptions” command to
delete the trace, or you can just deactivate the command with the “deactivate interfaces traceoptions”
command (both delete and deactivate will need to be followed by a “commit” to actually apply the
change. Using the deactivate is a great option if you may need to activate the configuration in the future.
7. You can remote the log with the operational mode command “file delete Interfaces.txt” or you can
clear the file with the command “clear log Interfaces.txt”.
root@SRX210> edit
Entering configuration mode
[edit]
root@SRX210# delete interfaces traceoptions
[edit]
root@SRX210# commit and-quit
Sometimes when you have a lot of information that you need to dig through simply displaying the output can be
burdensome. Luckily JUNOS has an excellent set of output modifiers that can make this task much easier. We
are only going to focus on three in this section, but you should experiment with the different output modifiers to
gain more experience working with them.
To trigger an output modifier with any show command (operational or configuration mode) you simply issue
the “|” character after the command. You can then issue the “?” for a list of the different output modifiers.
Note that you can actually pipe out multiple modifiers (for instance, you can view the last 50 lines of text with
the “| last 50” modifier followed by the “| match flow” modifier to match any line for display with the word
flow in it. In the next three examples, we will use the output of the “show log <log>” command to show how
you can view this information. As mentioned, we can view something other than a log file (e.g. show route |
match 1.1.1.0 for example, anything that displays content.) In this case, we are looking at the output of flow
debugging, explained later in the document. You can ignore the specific content for the moment, but it is
helpful to see the output and how to use the modifiers.
Aug 14 19:09:13 19:07:34.1234876:CID-0:RT: flow process pak fast ifl 69 in_ifp fe-0/0/7.0
Match: The match command will allow us to only display the specific information that we would like to see.
In this case we may only want to see any line with the word route in it. To do so we would use the command
“show log <logfile> | match route” Note that the match statement uses regular expressions so it is looking for
any line with the word route in it. It would match a line with route, routes, router &c. If we only want to match
route, then we would say {show log <logfile> | match “ route “} with the regular expression in the quotes and a
space preceeding and following the route keyword. Viewing the output of “show log <logfile> | match route”
displays this example:
Last: The last command will only show the last “x” number of lines in a file. This is very useful to see the
latest logs in the log file. For instance, if we issue the command “show log messages | last 20” we will get the
following output:
Aug 28 20:21:24 SRX210 init: network-security-trace (PID 29949) terminate signal sent
Aug 28 20:21:24 SRX210 init: can not access /usr/sbin/ipmid: No such file or directory
Aug 28 20:21:24 SRX210 init: ipmi (PID 0) started
Aug 28 20:21:24 SRX210 init: network-security-trace (PID 29949) exited with status=0
Normal Exit
Aug 28 20:27:26 SRX210 init: network-security-trace (PID 33234) started
Aug 28 20:27:26 SRX210 init: can not access /usr/sbin/ipmid: No such file or directory
Aug 28 20:27:26 SRX210 init: ipmi (PID 0) started
Aug 31 13:51:11 SRX210 sshd[34799]: Accepted password for root from 192.168.225.100 port
3197 ssh2
Aug 31 16:08:41 SRX210 sshd[34847]: Accepted password for root from 192.168.225.100 port
1273 ssh2
Sep 1 07:39:32 SRX210 /kernel: twsi0: Device timeout on unit 0 (chassisd, Read, 0x48)
Sep 2 14:05:45 SRX210 sshd[35472]: Accepted password for root from 192.168.225.100 port
3652 ssh2
Sep 2 17:46:23 SRX210 utmd[35538]: AV_PATTERN_KL_CHECK_FAILED: AntiVirus: db file
signature mismatch:
/var/db/kav/kav_db/fa001.avcMFhMU3pucGRJNzFmQjMwMGU3VXdqMVdRWEtjbEVKdUVUUTh2T0Z6cDlQYnluRz
VtdW5Pcmx1QTVBeQ==#284825.
Sep 2 17:46:27 SRX210 utmd[35538]: AV_PATTERN_KL_CHECK_FAILED: AntiVirus: db file
signature mismatch:
/var/db/kav/kav_db/fa001.avcMFhMU3pucGRJNzFmQjMwMGU3VXdqMVdRWEtjbEVKdUVUUTh2T0Z6cDlQYnluRz
VtdW5Pcmx1QTVBeQ==#284825.
Sep 2 17:46:50 SRX210 last message repeated 4 times
Sep 2 17:47:04 SRX210 utmd[35538]: AV_PATTERN_KL_CHECK_FAILED: AntiVirus: db file
signature mismatch:
/var/db/kav/kav_db/dailyc.avcMFhMU3pucGRJNzFmQjMwMGU3VXdqMUpFN0NyNy81UzRNV25XeEZnWDdhZm03S
WFtM3dvYzFkYlc3YQ==#23026.
Sep 2 17:47:17 SRX210 last message repeated 5 times
Sep 3 14:38:56 SRX210 sshd[35914]: Accepted password for root from 192.168.225.100 port
3090 ssh2
Sep 3 19:44:07 SRX210 sshd[35959]: Accepted password for root from 192.168.225.100 port
3865 ssh2
Trim: Some information that is added into the prefix of the line can make it difficult to read. The trim
command will omit the first “x” number of characters in the line. So for instance, if the output is:
Aug 14 19:09:13 19:07:34.1234876:CID-0:RT: flow process pak fast ifl 69 in_ifp fe-0/0/7.0
Aug 14 19:09:13 19:07:34.1234876:CID-0:RT: policy search from zone untrust-> zone trust
Aug 14 19:09:13 19:07:34.1234876:CID-0:RT: app 16, timeout 60s, curr ageout 60s
Then if we use the “| trim 42” option, we can omit all of the timestamp and redundant info in each entry,
making it much more readable:
---- flow_process_pkt: (thd 1): flow_ctxt type 13, common flag 0x0, mbuf 0x422eb680
find flow: table 0x4dd31658, hash 14530(0xffff), sa 1.1.1.100, da 192.168.222.50, sp 61232, dp 53, proto 17,
tok 448
flow_first_create_session
flow_first_routing: call flow_route_lookup(): src_ip 1.1.1.100, x_dst_ip 192.168.222.50, in ifp fe-0/0/7.0, out
ifp N/A sp 61232, dp 53, ip_proto 17, tos 0
In the SRX, we can only set 1 expression per packet filter, so if you want to capture more than 1 flow direction,
then you would need to define multiple packet filters per capture (one for each direction). You will always
want to make sure that you enable packet-filters when tracing traffic, not only because there is often too much
information in the file if you don’t, but also because the box will take a performance hit if you are trying to
trace ALL traffic going through it. If you set the appropriate filter and you are not passing lots of data through
the filter, then it shouldn’t have any noticeable impact.
In this example, we have a machine 1.1.1.100 initiating a Microsoft RDP connection (TCP port 3389) to a
server with the IP address 1.1.1.30 (which is NAT’d to the real server address 192.168.224.30.) 192.168.224.30
does not actually have knowledge of the 1.1.1.0/24 network, so we need to account for that in our Packet Filters.
Note that we set the packet filters as the addresses that the packets will arrive on the SRX as, not as the
translated IP Addresses in NAT. Comments will follow the statements starting with ## in bold.
Aug 12 16:22:22 16:22:21.1100315:CID-0:RT:<1.1.1.100/57650->1.1.1.30/3389;6> matched filter
MatchTraffic:
## Packet from source address 1.1.1.100 (source port 57650) captured by the filter, destined to 1.1.1.30
port 3389, with the protocol # 6 for TCP
##IPID of the packet shows its 885, which is very useful for comparing packets across multiple capture
points (e.g. viewing packet on originating machine, on FW, and on destination to make sure the packet
arrives)
Aug 12 16:22:22 16:22:21.1100315:CID-0:RT:---- flow_process_pkt: (thd 1): flow_ctxt type 13, common flag
0x0, mbuf 0x422ec780
Aug 12 16:22:22 16:22:21.1100315:CID-0:RT: flow process pak fast ifl 69 in_ifp fe-0/0/7.0
Aug 12 16:22:22 16:22:21.1100315:CID-0:RT: no session found, start first path. in_tunnel - 0, from_cp_flag -
0
##No existing session found in the table lookup, so we must do a policy lookup
##Do a route lookup to determine what the destination interface and zone should be so we can do a policy
lookup.
##We find the route lookup that points us out interface ge-0/0/0.0 with a next hop which is the destination
on the attached 192.168.224.0/24 network.
Aug 12 16:22:22 16:22:21.1100315:CID-0:RT: policy search from zone untrust-> zone trust
## Now we do a policy lookup since we determined that the destination zone on ge-0/0/0.0 is trust, and the
packet arrived on fe-0/0/7.0 which is untrust.
## Policy lookup shows that we do not find a match and the traffic is dropped due to no matching policy.
Now we will perform the same test, but we will have the appropriate policy in place do permit the traffic:
Aug 4 16:21:02 16:21:00.1872004:CID-0:RT: flow process pak fast ifl 72 in_ifp fe-0/0/7.0
## Here the traffic arrives from 192.168.224.30 source port 3389, and is destined to our NAT’d interface
192.168.224.3 destination port 48810
Aug 14 19:11:40 19:11:40.192283:CID-0:RT:---- flow_process_pkt: (thd 1): flow_ctxt type 13, common flag
0x0, mbuf 0x42308a00
Aug 14 19:11:40 19:11:40.192283:CID-0:RT: flow process pak fast ifl 67 in_ifp ge-0/0/0.0
## Since this is return traffic, we have found it in the session table, as id 12535
1. Is the packet arriving on the SRX? The first thing that we need to make sure is that the traffic is
arriving on the SRX itself. We should be able to see the traffic by just viewing the output of the debug
itself. This may not be the case if stateless firewall filters are being used, which may drop the packets
before they are processed by the flow engine. If you don’t see the traffic arriving on the SRX, you
should check the routing table of the peer device, as well as checking to see if the peer device has an
ARP entry for the IP address we are trying to reach. This is particularly important if you are using static
NAT, as Proxy ARP MAY be required.
2. Is the packet being blocked by a Screen? If a packet is an invalid packet, and screens are enabled on
the source zone, it may be dropped. An example would be a packet that has a SYN, ACK, and FIN bits
set.
3. Is the packet destined for the firewall itself? This is most common with management traffic such as
telnet, ssh, and SNMP, but also for protocol traffic such as BGP, OSPF, RIP, and PIM. In this case, we
must make sure that these respective services are running on that interface. In JUNOS, this is
configured at either the zone or interface level under [edit security zones security-zone <zone> host-
inbound-traffic] if this is not configured then the firewall will drop the packet.
4. Is the session asymmetric? Stateful SYN checking is on by default, and if the firewall does not see the
SYN packet, it will drop the subsequent packets and the session will not establish. This should be clear
from the debug. In this situation you must either ensure that the SRX is in the initial packet path so that
it sees the SYN packet (recommended!) or turn off SYN checking. If the SRX cannot see both
directions of the flow then some features such as IDP may not be able to work at the full capacity.
5. Is the packet from an existing session? If the packet matches an existing session then we will not
include all debugging information in that output, just some basics, and we refer it to the session ID to
cross reference. You can still examine the session table to track this session with the “show security
flow session” command.
6. Is the packet arriving on the correct interface/zone? When looking at the debug output you should
be able to tell what interface the packet has arrived on, and subsequently, what the source zone is. This
is important for policy lookup, and if it is not matched properly, then most likely a problem will occur.
7. Is the appropriate route / L2 forwarding path being selected? Depending on if you are using Layer
3 more or Transparent mode, we will need to ensure that the appropriate forwarding decision is chosen.
With layer 3 mode, the firewall will do a route lookup based on the destination of the route, which will
determine what the egress interface will be (which also determines the to-zone,) if the device is in
transparent mode, the device will either do an ARP, or will broadcast the packet out all interfaces
(except that from which it came) in the same bridging domain. If the wrong route is set (in transparent
mode, the forwarding decision should happen without intervention, unless other mechanisms such as
Dynamic ARP inspection or L2 Broadcast filtering in place to block this) then we may chose the wrong
outbound interface to send the traffic out, as well as the wrong NAT decision. Currently, we do not give
a route-id in the output of the debug like we did in ScreenOS. This will probably change in the future.
You may need to do a route lookup with the “show route <prefix>” command to make sure that the
correct route is chosen and that the appropriate outbound interface and next-hop is selected. In
transparent mode, you can check the L2 forwarding table with the “show arp” and “show ethernet-
switching table” if using the branch SRX, while the High End SRX use a different command “show l2-
learning interface” to see what entries are known by the system.
8. Is the correct policy being selected by the firewall? Now that we have determined what the
appropriate egress interface / zone are supposed to be, assuming that those are correct, we need to make
sure the correct firewall policy is being selected by the firewall. Today that number is referenced in the
debug logs as “policy <#>” and as shown in the debug above, we can run the “show security policies |
find "Index\: <#>" command to make sure that the policy is correct. If it is not the correct policy, you
will need to take a look at the source/destination address and service. It is often prudent to look into the
address and service objects themselves to make sure that they are really matching what you are looking
for, and not just the names of the address objects themselves as shown in the policy. For instance, we
could name an object 1.1.1.0/24, but the actual address that it matches if we omit the subnet mask would
be 1.1.1.0/32. Just by looking at the object name we may have it wrong. Also, see the next step about
NAT configuration as it may impact your policy.
9. Is the correct NAT being applied by the policy? Today we have some improvements that are going to
be put into NAT debugging, but for now, the best thing to check is to look at the output of the debug and
see what translation takes place. Is it what you expect (e.g. is the source translated or not translated as
expected? Is the destination translated or not translated as expected?) Remember that static translations
happen before policy lookup, while source and destination translations occur AFTER policy lookup, so
you need to make sure that you have factored this in when configuring your policy. If the wrong action
is being taken on your policy, you may want to review the rulebase configuration to visually inspect the
match and action criteria. There can be many NAT rulebases depending on the configuration, so be sure
to take that into account.
10. Does the debug show that the packet is being processed by “Application Services” or is destined to
a VPN tunnel? If the packet is being processed by application services then further debugging may be
necessary, for instance, if you have IDP enabled on that policy, and the IDP detects that packet as
malicious, it may drop it based upon policy (so even though the FW flow looked OK, it could still be
dropped based upon policy) same is true for other UTM features, so you need to keep this in mind. If
the packet is destined to a tunnel, then you should see this output. If a VPN is referenced, the VPN must
be active, or else the packet will not have anywhere to go.
VPN troubleshooting is a very common task, which is exacerbated by the fact that there may be interoperability
issues when working with other vendors. It’s not so much that vendors use proprietary features (although this
does come up from time to time) with standard site to site VPN tunnels, but that at least in IKEv1, there was
some components such as negotiating proxy-ID’s and key lifetimes which were left up to the imagination of the
developers, and since (in the case of proxy-ID’s) they must match, this causes issues with interoperability.
There are also a number of settings which must be coordinated between the two endpoints (often made more
challenging when these are not under 1 administrative domain.) The SRX provides mechanisms to debug the
actual VPN traffic in the event that a VPN does not come up properly. To start, you can easily check the status
of the VPN’s using the following commands:
Starting with those two commands you can get a good feel for the state of the VPN connections. Absence of the
relationships means that they are not currently established. By default, the SRX will log IKE information to the
log /var/log/kmd, which you can view the information by issuing the command:
Without a debug enabled, this may not have very much information. There are two places
where you can enable debug information as it pertains to troubleshooting VPN
establishment. The first is under the IKE configuration, while the second is under the
IPSec configuration. These pertain to Phase 1 and Phase 2 establishment. By default,
they will log to /var/log/kmd, although you can define your own destination for each debug
to log to. The following commands will enable debugs:
Phase 1:
Phase 2:
set security ipsec traceoptions flag all
The above command enables IPSec tracing (all flag facilities) and will automatically send
it to kmd. There is not an option to send it elsewhere like there is for ike.
For this example we have enabled both IKE and IPSec debugging with the commands below:
## In the above statements we determine that the IKE packet is from 1.1.1.100 destined to
1.1.1.1 (our interface) with an IKE ID of type user at hostname (or UFQDN)
[email protected]. We also check the value in the preshared key to make sure that it
matches properly.
Aug 14 21:07:38 ike_get_sa: Start, SA = { d3622295 fb67acf0 - 8980eab2 eb473562 } /
00000000, remote = 1.1.1.100:500
Aug 14 21:07:38 ike_sa_find: Found SA = { d3622295 fb67acf0 - 8980eab2 eb473562 }
Aug 14 21:07:38 ike_decode_packet: Start
Aug 14 21:07:38 ike_decode_packet: Start, SA = { d3622295 fb67acf0 - 8980eab2 eb473562} /
00000000, nego = -1
Aug 14 21:07:38 ike_st_i_hash: Start, hash[0..20] = 52e59171 a54dad00 ...
Aug 14 21:07:38 ike_calc_mac: Start, initiator = false, local = false
Aug 14 21:07:38 ike_st_i_cert: Start
Aug 14 21:07:38 ike_st_i_status_n: Start, doi = 1, protocol = 1, code = Replay status
notification (24577), spi[0..16] = d3622295 fb67acf0 ..., data[0..4] = 00000000 00000000
...
Aug 14 21:07:38 ike_st_i_status_n: Start, doi = 1, protocol = 1, code = Initial contact
notification (24578), spi[0..16] = d3622295 fb67acf0 ..., data[0..0] = 00000000 00000000
...
Aug 14 21:07:38 ike_st_i_private: Start
Aug 14 21:07:38 ike_st_o_wait_done: Marking for waiting for done
Aug 14 21:07:38 ike_st_o_all_done: MESSAGE: Phase 1 { 0xd3622295 fb67acf0 - 0x8980eab2
eb473562 } / 00000000, version = 1.0, xchg = Aggressive, auth_method = Pre shared keys
with XAuth (initiator), Responder, cipher = aes-cbc, hash = sha1, prf = hmac-sha1, life =
0 kB /
Aug 14 21:07:38 1.1.1.1:500 (Responder) <-> 1.1.1.100:500 { d3622295 fb67acf0 - 8980eab2
eb473562 [-1] / 0x00000000 } Aggr; MESSAGE: Phase 1 version = 1.0, auth_method = Pre
shared keys with XAuth (initiator), cipher = aes-cbc, hash = sha1, prf = hmac-sha1, life =
0 kB /
## The above statements show that we are using Aggressive Mode, with Pre-Shared Keys and
XAuth for client negotiation. The proposed Cipher is AES128-Sha1 (128 is implied) and
that the key lifetime is not defined. This negotiation is clearly for a remote client
VPN, typical IPSec Site to Site would show Main Mode, and would not typically have XAuth.
Aug 14 21:07:38 ike_send_notify: Connected, SA = { d3622295 fb67acf0 - 8980eab2 eb473562},
nego = -1
Aug 14 21:07:38 jnp_ike_connect_cfg: Start, remote_name = 1.1.1.100:500, flags = 00008000
Aug 14 21:07:38 ike_sa_find_ip_port: Remote = 1.1.1.100:500, Found SA = { d3622295
fb67acf0 - 8980eab2 eb473562}
Aug 14 21:07:38 ike_alloc_negotiation: Start, SA = { d3622295 fb67acf0 - 8980eab2
eb473562}
## Here we see that the Phase 2 proposal is failing policy lookup. Please see the end of
this debug for steps to take to determine what the root cause can be. In this above
output, we see what the remote end is proposing. In our case, the lookup failure has to
do with the fact that the VPN is attempting to terminate on the wrong interface. Below is
the output that you should see if the connection succeeds Phase 2:
Aug 25 17:09:22 1.1.1.1:500 (Responder) <-> 1.1.1.100:500 { cdf1c372 0f946928 - ad6b9fbb
4594cb35 [2] / 0xf4f71bbc } QM; MESSAGE: Phase 2 connection succeeded, No PFS, group = 0
Aug 25 17:09:22 ike_qm_call_callback: MESSAGE: Phase 2 connection succeeded, No PFS, group
= 0
Aug 25 17:09:22 1.1.1.1:500 (Responder) <-> 1.1.1.100:500 { cdf1c372 0f946928 - ad6b9fbb
4594cb35 [2] / 0xf4f71bbc } QM; MESSAGE: SA[0][0] = ESP 3des, life = 0 kB/0 sec, group =
0, tunnel, hmac-sha1-96, key len = 0, key rounds = 0
Aug 25 17:09:22 ike_qm_call_callback: MESSAGE: SA[0][0] = ESP 3des, life = 0 kB/0 sec,
group = 0, tunnel, hmac-sha1-96, key len = 0, key rounds = 0
Aug 25 17:09:22 ike_st_o_qm_wait_done: Marking for waiting for done
1. Are you seeing the IKE packets from the peer device (either initiated from the peer, or responses
from the peer?) If not make sure that you are allowing IKE packets to enter the firewall, which is
configured under [edit security zones security-zones <zone> host-inbound-traffic system-services] and
IKE. This can also be configured on an interface by interface basis under the zone config. If it is not
enabled, the IKE engine will not see the traffic, eventhough it will be able to send the IKE packets out.
This is a departure from how we supported it on ScreenOS so make sure that you keep this in mind.
2. Is your VPN terminating on the correct interface? Like ScreenOS, we must define which interface
the VPN will listen on for the VPN connection. In the example above, we showed that there was a
proposal mismatch, which was due to the fact that the VPN was terminating on interface fe-0/0/7.0 when
the configuration had originally stated that it was to terminate on interface ge-0/0/0.0 (configuration not
shown for brevity.) Assuming that IKE is enabled on the interface, we will process the traffic and will
not fully define that it fails until Phase 2 if the interface is not correct. This behavior may change in
future JUNOS releases.
3. Do your Phase 1 Negotiation Types match? IKE Phase 1 has two different modes, Aggressive and
Main Mode. The difference has to do with how the IKE negotiation is established. Aggressive mode
negotiates the identity in clear text because it does not have a fixed IP Address (e.g. a client which may
move around) while Main Mode does have fixed configurations (or may use DNS hostnames.) You
cannot mix and match the Phase 1 types, if one side uses Main mode and the other uses aggressive mode,
then the Phase 1 negotiations will fail, with a message stating that there is no matching Phase 1 policy
and will list what the client is attempting to negotiate.
4. Does your Pre-Shared Keys Match? You will see messages in phase one relating to INVALID
Preshared Key if you have a PSK mismatch in the negotiation, this will happen in Phase 1. Make sure
that both sides have the same pre shared key (Case Matters!)
5. If using Certificates, is the appropriate CA certificate loaded on the SRX, and is it configured to
do CRL checking? If you use certificate based authentication, you must make sure that you load the
CA certificate which signed the client certificate onto the SRX. Furthermore, it is a good idea to check
for Revocation status of the certificate. Today this can be done via CRL (OSCP is not yet supported on
the SRX.) If the certificate has been revoked, then it will not be allowed to establish a VPN connection.
6. Do your Phase 1 Proposals match? Phase 1 negotiates what encryption and authentication algorithms
will be used to secure the Phase 2 proposal. The proposals must match on both sides. Juniper allows
you to have a proposal-set, which consists of multiple proposals, but at least one of those must match the
proposal from the peer. If a proposal does match (including bit-length [e.g. AES128 is different from
AES256] then the phase 1 negotiation will fail. Lastly, the Diffie-Hellman group being used must match
(e.g. group2) if these don’t match then phase 1 will fail.
7. Does the Phase 1 Identity match what is being proposed? This is particularly a concern when
matching identities to a client VPN rather than site to site. In site to site, the identity is usually an IP
Address. If using client based connections, there are several different types of IKE ID: Distinguished
Names, hostname (or FQDN), inet (or IP Address), or user-at-hostname (or email Address.) Also, you
must be mindful of the connection limit defined for the IKE Gateway, you cannot go over what the
number of concurrent connections are defined for the VPN.
8. If XAuth is being used, are the credentials provided valid? In the SRX, when using XAuth (which
takes place between Phase 1 and Phase 2) we must use external authentication, we do not support local
authentication at this point like we did in ScreenOS (this will be supported in the future.) You can
determine if authentication is processing properly by using the traceoption “set system processes
general-authentication-service traceoptions file Auth flag all” which will instruct the system to log
authentication requests to the file Auth. You can also check the Radius server logs as well to determine
if this is passing or failing authentication.
9. Is Perfect Forward Secrecy configured, and if so does the Diffie Hellman Group match? Since
Phase 1 negotiation in Aggressive Mode takes place in part in clear text, Perfect Forward Secrecy can
re-negotiate Phase 1 in the security association formed in the initial Phase 1 negotiation so that the
identity is hidden. This can also be performed in Main Mode as well. If using Perfect Forward Secrecy,
we must perform it on the peer device as well, and the Diffie Hellman group must match as well.
10. In Phase 2, does the Encryption and Authentication Algorithms match properly? Just like Phase 1,
we must match the encryption and authentication algorithms in Phase 2, if these do not match, then there
will be a failure in the negotiation, and a message stating that there is No Proposal Chosen will occur in
Quick Mode (Phase 2)
11. In Phase 2, does the Proxy ID’s match? This is one of the most common issues for IPSec VPN
negotiation failure, particularly when interoperating with another VPN vendor. The reason for this is
that the IKEv1 standard specificies that Proxy ID’s (Local/Remote/Service) must be specified, but
doesn’t say how they should be compiled, so therefore, each vendor may do it differently. In Policy
Based VPN’s, unless defined by the IPSec Policy, we will use the policy as the template for the proxy
ID.
a. So for instance, if we have a source address of 192.168.1.0/24 to destination address
192.168.2.0/24, with a service of any, we will negotiate the proxy ID as:
i. Local ID: 192.168.1.0/24
ii. Remote ID: 192.168.2.0/24
iii. Service: Any
b. While the remote side will negotiate it as:
i. Local ID: 192.168.2.0/24
ii. Remote ID: 192.168.1.0/24
iii. Service: Any
c. Note that if you use address-sets or multiple addresses in a policy match, we will negotiate that
as 0.0.0.0/0 since we cannot set multiple proxy-id’s in the proposal.
d. In Route Based VPN’s you must specify what the Proxy ID is since it will not take it from a
policy. In reality, the proxy ID’s don’t really mean very much when it comes to what traffic can
exist in the tunnel, that is still controlled by policy, but rather proxy ID’s are used to define a
tunnel uniquely. You will be able to see what the other side is proposing in the debug output.
1. Is the other side negotiating the correct version of IKE? This will not be that common, but we do
not yet support IKEv2 in SRX, only in ScreenOS. If the other end attempts to use IKEv2 then the
negotiations will fail.
2. Does the other end care about the key lifetimes? SRX does not particularly care about if the
negotiated value for the Phase 1 or Phase 2 key lifetimes match, but some other vendors do care and
require that the key lifetimes match on both sides.
1. If using the branch products, is the hardware the correct hardware to support IDP? In the IDP
100/210 you must be using the high memory versions of the product to use IDP
2. Do you have the IDP License applied to your SRX (or both SRX if performing in HA cluster?)
You must be running the IDP license to be able to download attack signatures from Juniper. If just
using customer signatures you should not need an IDP license, however, there is a bug in 9.5 and 9.6
that requires that you have the license (you will get a warning on commit) so make sure that you have
the license enabled, or use the patched SRX version. You can import them into the WEBUI, NSM, or
do so in the CLI with the command: “request system license add <filename>” You can show the
licenses on the system with the “show system license” command.
3. Have you downloaded the attack signatures successfully? If using the Juniper defined attack
signatures you must download them first from Juniper. If you do not have internet access to do so, then
you can simply transfer the “/var/db/idpd” folder from another SRX to your SRX. To download the
attack objects, you can issue the “request security idp security-package download” command, and issue
the “request security idp security-package download status” to view the status of the download. You
may also want to download the policy templates using the “request security idp security-package
download policy-templates” command.
4. Have you installed the attack signatures on the device? You must install the attack signatures on the
device after you have downloaded them or they will not be used for IDP inspection. To install the attack
signatures use the “request security idp install” for attacks, “request security idp install policy-
templates” for the templates; or check the install status with “request security idp install status”
5. Have you set an active policy for the SRX to detect attacks against? After you have downloaded the
attacks, you must create a policy, or use an existing policy template as you active attack policy. Today,
only 1 policy can be active at a time, and this policy can be configured with the command “set security
idp active-policy <policy>”
6. Have you checked the IDP status to make sure that it is up and running properly? You should
check to make sure that the IDP engine is running properly. You can do this with the following
commands: “show security idp status” and the command “show security idp security-package-version”
7. Have you enabled IDP processing for the firewall rule which you wish to perform IDP processing
on? IDP processing is not on for firewall rules unless it is explicitly configured to be enabled. You can
check to see whether the IDP is enabled on a policy by using the command “show security policies” to
view if application services is enabled—although you will still need to delve further into the
configuration to determine if IDP is enabled:
root@SRX210# run show security policies from-zone vpn to-zone trust
From zone: vpn, To zone: trust
Policy: VPN-Policy, State: enabled, Index: 9, Sequence number: 1
Source addresses: 172.31.0.0/16
Destination addresses: 192.168.0.0/16
Applications: any
Action: permit, application services, log
8. Have you classified traffic in the exempt rulebase, terminal match, or ignore action on the IDP
policy? If the IDP is not detecting the appropriate attacks, make sure that you have not configured these
sessions to match under the exempt rulebase, which will not log or match attacks based upon the
configuration. The ignore action will ignore all other attacks that are matched within that flow, so it will
not drop that connection, and will not futher inspect it, and finally, did you enable terminal match in the
IDP rulebase? Terminal rulebase will not evaluate rules any further when enabled.
Currently the IDP doesn’t have as in depth debugging as the firewall flow processing, however development is
in the works to improve this. Below are some additional command output steps to verify that this is working
properly.
Packet Statistics:
[ICMP: 0] [TCP: 15] [UDP: 0] [Other: 0]
Flow Statistics:
ICMP: [Current: 0] [Max: 0 @ 2009-08-11 16:34:11 UTC]
TCP: [Current: 15] [Max: 2 @ 2009-08-14 19:11:35 UTC]
UDP: [Current: 0] [Max: 0 @ 2009-08-11 16:34:11 UTC]
Other: [Current: 0] [Max: 0 @ 2009-08-11 16:34:11 UTC]
## Here we see the current breakdown of the IDP sessions on the platform based on protocol
Session Statistics:
[ICMP: 0] [TCP: 15] [UDP: 0] [Other: 0]
Policy Name : IDP-Policy v0
Running Detector Version : 9.2.160090324
## Finally, we see which policy is active and the active detector engine
The next example shows how to see which attack db version and detector engines are active.
If your IDP is running, but you are experiencing performance issues, there are a few things that you’ll want to
look into. First, how many sessions/pps is the IDP engine processing? This can have an impact on
performance, and can be checked as show above with the “show security idp status” command. Next, you may
want to check what the memory utilization is of the IDP platform. We pre-allocate a certain amount of memory
for the IDP, but if it is highly utilized then this can cause performance issues. Lastly, having all signatures
enabled is not recommended if the platform is going to approach the performance limits of the box, as this can
severely impact processing. You can check the output of the memory with the command:
Tracing idpd
The IDPD process can be traced to gain some insight into the IDPD if there is a problem with it. However,
currently, there isn’t a good way to debug IDP flows, although development for such a capability is in progress.
If debugging IDP flows must be performed, this should be done by JTAC. The information located within the
IDPD debug is primarily around the downloads/updates to the IDP engine, as well as commit information.
Aug 14 19:07:45 idpd_policy_load: idp policy parser pre compile succeeded, after (1)
retries
Aug 14 19:07:45 idpd_policy_load: policy parser compile subs s0 name
/var/db/idpd/bins/IDP-Policy.bin.gz.v.1 buf 0x0 size 0zones 0xb14542 z_size 102 detector
/var/db/idpd//bins/detector.so ai_buf 0x0 ai_size 0 ai /var/db/idpd/bins/compressed_ai.bin
## Above we see that we successfully compiled the policy, if there is an error compiling
the policy then we would see such an event here.
Aug 14 19:07:45 idpd_comm_server_get_event:522: evGetNext got event.
Aug 14 19:07:45 idpd_comm_server_get_event:530: evDispatch OK
Aug 14 19:07:47 idpd_comm_server_get_event:522: evGetNext got event.
Aug 14 19:07:47 idpd_comm_server_get_event:530: evDispatch OK
Aug 14 19:07:47 idpd_policy_load: idp policy parser compile succeeded
Aug 14 19:07:47 idpd_comm_server_get_event:522: evGetNext got event.
Aug 14 19:07:47 idpd_comm_server_get_event:530: evDispatch OK
Aug 14 19:07:47 idpd_policy_load: idp policy pre-install succeeded
Aug 14 19:07:47 idpd_comm_server_get_event:522: evGetNext got event.
Aug 14 19:07:47 idpd_comm_server_get_event:530: evDispatch OK
Aug 14 19:07:48 idpd_comm_server_get_event:522: evGetNext got event.
Aug 14 19:07:48 idpd_comm_server_get_event:530: evDispatch OK
1. Is chassis clustering enabled? Check the output of the “show chassis cluster status” to determine the
status of a chassis cluster. The output below shows a valid cluster:
root@SRX5800-1> show chassis cluster status
Cluster ID: 1
Node name Priority Status Preempt Manual failover
node1 1 secondary no no
2. Is there like hardware in both chassis members? In a chassis cluster environment you must have the
same hardware in both members. On the SRX 5k, it doesn’t strictly matter which slots are used for the
different cards (however recommended that they match for simplicity sake) so long as you have the
same number and type of cards in both chassis, while the SRX 3k does require the same hardware in
both clusters, in the same slots on both chassis.
3. Is the JUNOS version the same on both members? We require that each member run the same
version of JUNOS in Chassis Clustering. In 9.6 and above, with Low Impact Cluster Upgrades, we can
have RTO sync while the second platform is upgraded to the new version to minimize failover, however
we do not support running the two members indefinitely on different JUNOS versions today.
4. Have both nodes in the chassis cluster been rebooted? In order setup a chassis cluster, each chassis
cluster node must be rebooted (today, this may change in the future) before they can join the cluster. If
you do not reboot the nodes, then the member will not be activated. Also, if you RMA a device (or
routing engine) you will need to issue this command again on the replaced unit, since the setting is
stored in NVRAM and not in the configuration itself, when the device is replaced, it will not have this
setting.
5. Is the control link in the appropriate port on the SRX? On the SRX 3k the control port is fixed to
HA port 0, in 10.0 with dual control links supported (requires 2 RE’s) control port 1 will also be
supported. On the 3k, you can use copper or fiber SFP’s. On the SRX 5k, you can put the control link
ports on any SPC (preferably not the lowest SPC since that has the CP on it) however you must use
Fiber as the interface type, not a copper SFP. On the 5k, you must also configure which ports are used
for the control ports (this is not required on the 3k)
6. If using dual control links are you running the correct version, and do you have dual routing
engines? On the SRX High End, in 10.0 and beyond, we support dual control links, however you must
have two routing engines in each cluster member. The second RE is not used for backup routing today,
but is used to activate the control link port in the internal switch.
7. Is the data link properly configured on the SRX? Unlike ScreenOS, we require separate links for the
control and datalink, along with different connections to the control/dataplane. For the data fabric ports,
this is done by using a dataplane port (revenue port) for the dataplane. This must be configured
manually to specify which interface will be the dataplane port. If using active/passive, 1Gbps will be
more than enough for the function, 10Gbps has no advantage, however in Active/Active, if you are
going to have data arrive on an interface on one chassis member, and cross the datalink to exit an egress
interface on the other member, then a 10Gbps link should be used for this configuration to maximize the
throughput. The datalink must be established for the HA communication to be fully supported, since it
is responsible for synchronizing the real time objects to the other member.
8. If multiple SRX clusters exist on the same L2 broadcast domain, is the same cluster ID used? If
you have multiple SRX clusters on the same L2 broadcast domain, you must use different cluster ID
numbers, because the cluster ID is used to form the virtual MAC address that is used for the RETH
interface. Therefore if you use the same cluster ID then you will have a MAC address overlap and
forwarding problems will occur.
Failover Behavior
9. Have the appropriate redundancy groups been configured on the chassis with the appropriate
priorities? Redundancy Group 0 must be configured for the control plane, and the lower priority is
preferred over high priority. Redundancy Group 1 and higher are used for the dataplane. In order for
proper failover to occur, we must make sure that the appropriate priorities are configured for the
appropriate node.
10. Is preempt configured for redundancy groups? If you enable preempt (which can be done on a
redundancy group by redundancy group basis) the lower priority redundancy group will become the
active member if the other member of the redundancy group has a higher priority and is active. If
preempt is not enabled, then when a higher priority member becomes active (after being disabled) it will
not seize control of the redundancy group.
11. Is the redundant Ethernet configuration configured within the proper redundancy group, is that
group configured with the correct priority on the correct node? When using redundant Ethernet,
you must make sure that the redundant Ethernet is applied to the correct redundancy group (must be
RG1 or higher) and that the redundancy group has the appropriate priority values to be active on the
correct node. When using active/passive, the control plane is RG0, while the dataplane is RG1. In
Active/Active, you can have multiple redundancy groups (RG1, RG2, RG3 &c) which can be active on
different members, controlled by the priority setting for the nodes.
12. After a control link failure, was a reboot performed on the disabled node to reactivate it in the
cluster? Unless “control-link-recovery” is enabled, you will need to manually reboot the disabled node
for it to become the secondary node in the cluster. If you do not reboot the disabled member, then it will
remain in the disabled state.
13. After a data link failure, was a reboot performed on the disabled node to reactivate it in the
cluster? If a data link failure occurs, then a reboot must be performed on the disabled member in order
for it to become active again. If you do not do a reboot, then the disabled member will not be able to
become active. There is no command at this point to automatically reboot when a datalink failure
occurs.
14. After a manual failover of a redundancy group, was the manual failover flag cleared? When you
use the command “request chassis cluster failover <redundancy-group> node <new master node>
command to failover a redundancy group, you must clear the failover with the command “request
chassis cluster failover “request chassis cluster failover reset redundancy-group <redundancy-group>”
15. Is the feature you are trying to use supported in High Availability clusters? Today there are many
features that are only supported in standalone mode and not in HA. These features will change over
time, and this document is not the place to review all the features that are or are not enabled in HA,
however, be cognizant that some features may not be enabled in HA, so check with the documentation,
JTAC, or PLM if you run into an issue.
It is not recommended that you enable Chassis Cluster debugs without the assistance of JTAC as these can have
performance and stability impacting results if you are not careful. There are some basic troubleshooting steps
that you can perform (in addition to what is mentioned above.)
1. Check the status of show chassis cluster status which will display what the current status of the chassis:
Redundant-ethernet Information:
Name Status Redundancy-group
reth0 Down 1
reth1 Down 1
reth2 Down 1
3. Check the status of the control plane to see if you are receiving heartbeats and messages (for both
control and data links) using the command “show chassis cluster control-plane statistics”
4. Lastly, there are two files which you may want to examine to see if there is some sort of hardware
failure. The first is “show log messages” which will contain lots of general purpose log messages, as
well as the “show log chassisd” logs to determine if there are any other hardware chassis failures.
Step 1: Transfer the JAIS package to the SRX. This can be done with SCP, FTP, or other file transfer.
Step 2: Issue the “request system scripts add <JAIS package>” operational mode command to install the
JUNOScripts into the system.
Step 3: Under the configuration mode, configure the AIM settings on the device:
## The above statement defines that the location that we should transfer the AIM Incident
Messages to. In this example, we are using SCP as the transfer protocol, but we can use
any supported protocol. Next, “aim” is the user that we use to authenticate to the system
with, where aim is a linux user on that system. 172.19.101.103 is the hostname of the AIM
server, and where /var/aim/device is the folder that we transfer the messages to. This is
the directory where AIM looks for updated messages from the monitored hosts. Lastly, the
password is the password used to authenticate AIM to the system.