ADC 41 - C00 Slides
ADC 41 - C00 Slides
Material:
Lecture materials
Lab equipment
Additional Resources:
Support web site for latest releases / User Guides / Release Notes / AppNotes
Community – http://www.a10networks.com/vadc/
.1 .1
100.0.0.0/24
210.0.0.0/24
200.0.0.0/24
.1 .11
3.0.0.0/24
.100
.21 .11
.21
.2 .2 .12
110.0.0.0/24 .254
.100 .254 .254 .2 .2 .254 .12
.254 .210
.254
.3 .3 .210
.3 .3
.4
50.0.0.0/24 .1 .1 60.0.0.0/24
100.0.0.0/24 100.0.1.0/24
200.0.0.1
100.0.0.0/24 100.0.1.0/24
200.0.0.1
100.0.0.0/24 100.0.1.0/24
200.0.0.1
100.0.0.0/24 100.0.1.0/24
200.0.0.1
100.0.0.0/24 100.0.0.0/24
200.0.0.1
100.0.0.0/24 100.0.0.0/24
200.0.0.1
100.0.0.0/24 100.0.0.0/24
200.0.0.1
Dest IP Source IP
200.0.0.1 100.0.0.10
100.0.0.0/24 100.0.0.0/24
200.0.0.1
VIP Server
DNS
SMTP
Server
Web
DNS
SMTP
Name Web
Ports SMTP
Server configuration
CLI: ACOS(config)# slb server <name> […]
Web
DNS
SMTP
Web
Health monitors can test server availability DNS
ArrowB
Assign the SLB Source NAT Pool to the Virtual Server Port
* Known as “Smart NAT” or Automatic
©A10 Networks, Inc. 27
Smart NAT (Automatic NAT)
The IP addresses that Smart NAT uses to create the mappings depend on whether VRRP-A
or HA is enabled and floating-IP addresses are configured
If VRRP-A or HA is configured, Smart NAT uses configured floating IP addresses as
NAT addresses
If neither VRRP-A nor HA is configured, Smart NAT uses primary IP address on the
ACOS interface connected to the real server
A virtual port can use both Smart NAT and configured NAT pool(s). By default, the
configured pool addresses are used first, but this can be modified using the “precedence”
command on the v-port:
source-nat auto precedence
DNS
IP address (accessed by end users)
SMTP
Virtual Server Ports (usually)
Server
DNS
Type: (TCP/UDP/HTTP/HTTPS/Fast-HTTP/RTSP/FTP/MMS/ SMTP
SSL-Proxy/SMTP/SIP/SIP-TCP/SIP-TLS/Others)
Port number (or range)
Service Group (usually)
Pre-configured elements (nat pools, templates, aFlex scripts) are applied at the vport level
creating the Virtual Service
Verify functionality
AX offers advanced flexibility options for web applications via HTTP templates
HTTP templates are associated with virtual server ports of service type “HTTP" or
"HTTPS”
GET /
Host: www.abc.com
Redirect
http://site2.abc.com
ACOS(config-http)#insert-client-ip ?
WORD<length:1-63> HTTP Header Name for inserting Client IP
replace Replace the existing header
<cr>
Proxy AX Series
Verify functionality
SERVER_DONE
CERTIFICATE_VERIFY (Client informs the server that it has verified the server's certificate)
CHANGE_CIPHER_SPEC (contents of subsequent SSL record data sent by the client during the SSL session will be encrypted)
FINISHED (digest of all the SSL handshake commands so far for validation)
CHANGE_CIPHER_SPEC (subsequent data sent by the server during the SSL session will be encrypted)
FINISHED (digest of all the SSL handshake commands so far for validation)
Client sends server symmetric secret key encrypted with server’s public key.
From now user data is encrypted.
Public certificate
1. Request server public certificate + Private Key
AX Series (signed by CA)
List of 2. Server public certificate
trusted CA
AX Series
Client connects to VIP via https Requires Client SSL template on V-Port
ACOS decrypts and sends traffic to webservers Client SSL certificate usually comes from a
via http commercial, trusted CA
Off-loads encryption CPU cycles from Port 80 should be configured with aFlex or re-
webservers providing faster client response direct template converting http requests to
times https
AX Series
GET / GET /
Host: www.abc.com Host: www.abc.com
Redirect Redirect
https://www.abc.com/login.html http://www.abc.com/ogin.html
Note: Redirects and rewrites can also be achieved using aFlex scripts
Verify functionality
Note: Web browsers keep their TCP connections open - even after all objects are loaded
A10 Series
AX Series
HTTPS HTTP
AX Series
AX Series
HTTP/HTTPS
requests
HTTP/HTTPS
requests
AX Series
HTTP/HTTPS
requests
HTTP/HTTPS
RAM Caching
requests
Parameterized requests
The URL matches a specific pattern.
Specific query parameters are present.
Specific cookies in the request are present.
Specific HTTP headers in the request are present.
Policies are evaluated in the order they are specified. The action in the first policy that
matches will be applied.
Because the “list” URI is hit often, caching that URI while it is current is reasonable.
However, when the user does an add/delete operation or one of the other URIs arrives,
resulting database changes would require refreshing the cached list.
Verify functionality
DDoS configuration
GUI: Security > DDoS
CLI: ACOS(config)# ip anomaly-drop <DDoS-type>
These filters are disabled by default and are automatically enabled when system-wide
PBSLB policy is enabled. The filters can also be configured on an individual basis
Trusted
User Production
Servers
AX Series
Unknown
User
“Honeypot”
Server
Bad
User
Lists are stored in highly efficient hash tables for fast processing
Supports Dynamic entries via wildcard
Available on system wide (not v-port) Configurations. Can set connection limit to drop, reset or
lockup clients who don’t match static entries
Create in GUI or import txt file via CLI (no CLI support for creating lists)
Can configure automatic list download
ACOS can update its PBSLB black/white list automatically at specific intervals via TFTP
Production Servers
Normal AX Series
Users
Bad
User
aFleX allows:
Content inspection (headers / data)
Actions on traffic
Block traffic
Redirect traffic to a specific Service Group (pool) or Server (node)
Modify traffic content
Events
aFleX scripts are event-driven, which means that the AX system triggers the aFleX whenever that
event occurs. Examples:
HTTP_REQUEST is triggered when an HTTP request is received.
CLIENT_ACCCEPTED is triggered when a client has established a connection.
aFleX commands
Used to query for data, manipulate data, or specify a traffic destination. These may be grouped
into three main categories:
Statement commands
Example: "pool <name>“ directs traffic to the named load balancing pool
Note: aFleX is extensible. In future releases, additional aFleX events and aFleX
commands will be added
Disadvantages
Requires changes to DNS server configuration
Add Sub-domain to existing DNS for ACOS
Add ACOS “proxy ip” as NS records
Add ACOS “proxy ip” as A records
CNAME existing records to sub-domain
Requires second DNS request by client
Disadvantages
Requires changes to DNS server IP address, or change in registered NS server IP address
Can not be implemented without downtime
Customer has to own and run their own DNS servers
Note – To configure Proxy mode, follow standard SLB procedures (Servers, Service
Groups, VIP, etc.) that utilize “external” DNS servers and enable it for GSLB when
configuring the virtual port
Note 2 – GSLB Policies will be covered in another module
To configure Proxy Mode, create Servers for the actual (external) DNS servers, place
them in a Service Group and apply to the Virtual Port
The Service IP can also have health checks assigned and, if needed, an External IP
allowing a service IP that has an internal IP address to be reached from outside the
internal network
In the above example, the zone name is “a10class.com”, the service is HTTP with the
name “www.” Clients would then query www.a10class.com when connecting to the VIP
At the Service level of the configuration, additional dns records such as C-NAME, mx,
and NS can be created
The GSLB controller collects following information from the site AX load balancers
Virtual IP addresses & active servers
aRDT (active-Round Delay Time)
Site session capacity statistics
Connection load
Number of active sessions
For redundancy, multiple controllers can be enabled and placed in a controller group
which can automatically synchronize GSLB configurations and service IP status among
multiple GSLB controllers for a GSLB zone
Enabling the protocol on devices in other sites in the GSLB configuration is optional, but
is required for in order to take advantage of certain policy options and default health
checks. A10 recommends enabling the GSLB protocol on all devices
gslb protocol enable device
Note - For more information on Controller Groups see the GSLB configuration guide
Once in the policy’s context, enable and configure policy entries. Some metrics are
enabled by entering the name of the metric
(config-gslb policy)#least-response
Other metrics are first configured at the site or zone level and then enabled by adding
them to the policy
(config-gslb site-slb dev)#admin-preference ?
<0-255> Specify admin-preference value, default is 100
In the above example, a priority is set at the device level of a site, the metric will then be
evaluated once enabled on the policy
(config-gslb policy)#admin-preference
Using the above example, least-response and admin-preference are now 1 and 2 in the
evaluation order. Heath-check, being the previous number 1 drops to 3
#show gslb policy pol1
------------------------------------
least-response | 1 | | yes
admin-preference | 2 | | yes
health-check | 3 | | yes
To apply at Service level, from the Zone page, select the service name and click edit.
Choose policy from the dropdown.
Layer 3
ACOS#show arp
ACOS#show ip route
ACOS#show access-list
ACOS#show run | sec router
Layer 4
ACOS#show slb l4
host#telnet <ip> <port>
ACOS#axdebug
Packet trace
ACOS#axdebug
Is server receiving the request sent by the ACOS device?
Any standard HTTP header missing? (host, method, … and so on)
Do all of the HTTP headers have desired values?
Response Code from server’s response?
Size of request / response payload?
Is it taking a long time to process the request?
What are the cookies?
Packet trace
ACOS#axdebug
Is client able to finish SSL Handshake with VIP?
Is ACOS device able to finish SSL Handshake with server?
Any issues pertaining to redirect?
Decrypted trace
Are there any absolute links in Javascripts / Links / Images (http://xxx)?
CLI: generate and export file to a remote server or view on the screen
ACOS# show techsupport [export] [use-mgmt-port] [<remote_destination>]
GUI
packet1 packet2
Src 40.40.40.40 Src 30.30.30.123 (nat pool)
Src port 35525 Src port 35525
Dst 30.30.30.90 Dst 10.10.10.30
Dst port 80 Dst port 80
axdebug example
ACOS#axdebug
ACOS(axdebug)#filter 1
ACOS(axdebug-filter:1)#ip 1.2.3.4 /32
ACOS(axdebug)#capture save <file_name>
Example
ACOS(config)#session-filter c1 source-add 10.0.1.161 dest-add 10.0.1.12 dest-port 80
ACOS#show session filter c1
Prot Forward Source Forward Dest Reverse Source Reverse Dest Age Hash Flags Type
Tcp 10.0.1.161:36690 10.0.1.12:80 10.0.2.18:80 10.0.2.16:14075 0 1 NSe1 SLB-L7
Tcp 10.0.1.161:36660 10.0.1.12:80 10.0.2.18:80 10.0.2.16:14045 0 1 NSe1 SLB-L7
HTTP
buf-ovf-max-url-len 0
15
buf-ovf-max-cookie-len 0
buf-ovf-max-hdrs-len 0
23
Notes – Default definition files cannot be deleted, edited or re-named. To create custom definitions, use the clone
feature and edit as needed. WAF features which require definition files will use these defaults, unless custom files
are specified
<cr>
Hitting return will apply the default SQL definition file. If a custom file has been created, enter the name
See the WAF configuration guide for the full list of template options and features
Custom (cloned) Black/White list definition files are required if additional URI patterns are needed.