Тем, кто только начинает разбираться с устройством Cisco ASA, может быть очень полезен данный инструмент. В том числе и мне он очень понравился 🙂
Для того, чтобы проверить, на какой стадии застревает пакет, почему не происходит коннект куда-либо, и вобще где искать проблему packet-tracer очень подходит, точнее он как раз и создан для этого.
Как это работает данный инструмент?
Синтаксис очень простой.
здесь мы указываем с какого интерфейса мы будем запускать наш тестовый пакет. Допустим извне, тоесть выибарем интерфейс outside.
Здесь собственно выбираем протокол. Допустим udp
Далее указываем адрес источника, в нашем случае это какой-то интернетовский IP-адрес (мы ведь пакет посылать собираемся извне), пусть это будет 77.88.21.8
Далее нам необходимо выбрать порт источника, выбираем нужный, пусть это будет 10530.
Затем указываем адрес назначения (тоесть это наш ip адрес), здесь он будет как : XXX.XXX.XXX.XXX и после указываем порт, пусть это будет 5060 (SIP)
Команда полностью примет вид: packet-tracer input outside udp 77.88.21.8 10530 XXX.XXX.XXX.XXX 5060
После выполениня данной команды, мы увидим как проходил пакет, через какие правила, через какие политики, NAT’ы и так далее и тому подобное, в каждом этапе будет указано ALLOW (прошел пакет), DROP (не прошел пакет), тем самым мы и определим где же у нас пошло что-то не так.
как это примерно выглядит:
Subtype:
Result: ALLOW
Config:
Additional Information:
Found no matching flow, creating a new flow
Phase: 2
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
static (inside,outside) udp interface sip 10.0.0.241 sip netmask 255.255.255.255
match udp inside host 10.0.0.241 eq 5060 outside any
static translation to XXX.XXX.XXX.XXX/5060
translate_hits = 7, untranslate_hits = 30
Additional Information:
NAT divert to egress interface inside
Untranslate XXX.XXX.XXX.XXX/5060 to 10.0.0.241/5060 using netmask 255.255.255.255
Phase: 3
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in 0.0.0.0 0.0.0.0 outside
Phase: 4
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group 100 in interface outside
access-list 100 extended permit udp any any eq sip
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: INSPECT
Subtype: inspect-sip
Result: ALLOW
Config:
class-map inspection_default
match default-inspection-traffic
policy-map global_policy
class inspection_default
inspect sip
service-policy global_policy global
Additional Information:
Phase: 7
Type: VPN
Subtype: ipsec-tunnel-flow
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
static (inside,outside) udp interface sip 10.0.0.241 sip netmask 255.255.255.255
match udp inside host 10.0.0.241 eq 5060 outside any
static translation to XXX.XXX.XXX.XXX/5060
translate_hits = 7, untranslate_hits = 30
Additional Information:
Phase: 9
Type: NAT
Subtype: host-limits
Result: ALLOW
Config:
static (inside,outside) tcp interface sip 10.0.0.241 sip netmask 255.255.255.255
match tcp inside host 10.0.0.241 eq 5060 outside any
static translation to XXX.XXX.XXX.XXX/5060
translate_hits = 0, untranslate_hits = 3
Additional Information:
Phase: 10
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 11
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 6581902, packet dispatched to next module
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
В нашем случае пакет прошел куда нам нужно (через static nat попал на внутреннюю машину, прошел инспектирование, прошел через все ACL) о чем свидетельствует поле Result : Access
Вот такая небольшая заметка на сегодня 🙂
Good Luck 🙂