通常可以在设备使用show junos junos-defaults 查看到系统自定义的应用参数,Junos-OS提供是的默认参数命令Hidden的,junos-defaults group包含了预定义的参数和通用的应用状态;
Junos-OS软件使用的提供的Traceroute的应用配置如下所示:
Traceroute application:
application junos-traceroute {
application-protocol traceroute;
protocol udp;
destination-port 33435-33450;
ttl-threshold 30;
}
The traceroute application stops at the device supporting the firewall (packets with ttl > 1 will be discarded).
application junos-traceroute-ttl-1 {
application-protocol traceroute;
protocol udp;
destination-port 33435-33450;
ttl-threshold 1;
}
以上应用配置仅支持在J-Series基于数据包设备(junos-os 9.3是最后一版本)
现在,必须配置一个特定的应用程序来显式地允许traceroute包在运行Junos OS 9.6及以后版本的SRX设备上,而不是上面提到的应用程序。
当配置以上指定 的应用协议和TTL溢出值时,将会显示以下报错:
application traceroute {
##
## Warning: statement ignored: unsupported platform (srx210h-poe)
##
application-protocol traceroute;
##
## Warning: statement ignored: unsupported platform (srx210h-poe)
##
ttl-threshold 30;
}
若需要了解Traceroute更多的类型,参考以下链接:
http://en.wikipedia.org/wiki/Traceroute
在大多数情况下,我们使用UDP traceroute或ICMP traceroute,下面两个示例说明如何配置一个应用程序集,以专门允许traceroute数据包。
- 对于基于Unix或Linux的操作系统来允许UDP的Traceroute
root@Router-A# show applications |display set
set applications application udp-trace protocol udp
set applications application udp-trace destination-port 33434-33534
-
配置允许ICMP的Traceroute,Note:将会允许所有ICMP类型数据包,如果有UDP还是需要结合上面一种实现方式
application junos-icmp-all {
term t1 protocol icmp;}
application junos-ping {
term t1 protocol 1;}
Note: This will permit all ICMP packet types.
也可以将上面两种方式进行结合使用:
[edit]
root# show applications
application trace-icmp {
term 1 protocol icmp;
}
application trace-udp {
term 2 protocol udp destination-port 33434-33534;
}
application-set trace-udp-icmp {
application trace-icmp;
application trace-udp;
}
如下拓扑:

当从Router-A发送Traceroute到Rotuer-B时, 10.10.10.1------------20.20.20.1,防火墙并不会创建会话,因为TTL小于等于1。
如下所示:
[edit]
root@Router-A# run traceroute 20.20.20.1
traceroute to 20.20.20.1 (20.20.20.1), 30 hops max, 40 byte packets
1 10.10.10.2 (10.10.10.2) 4.644 ms 4.654 ms 3.877 ms
2 20.20.20.1 (20.20.20.1) 12.605 ms 11.529 ms 6.266 ms
root@vSRX# run show log icmp-ping |match ttl
Jul 25 09:48:36
Jul 25 09:48:30 09:48:30.271369:CID-0:RT:flow_first_complete_session: ttl <=1 for transit pkt, skipping flow creation
Jul 25 09:48:30 09:48:30.271428:CID-0:RT:flow_first_complete_session: Sending icmp for ttl expiry
Jul 25 09:48:30 09:48:30.271429:CID-0:RT: packet dropped, ttl expiry.
Jul 25 09:48:30 09:48:30.281040:CID-0:RT:flow_first_complete_session: ttl <=1 for transit pkt, skipping flow creation
Jul 25 09:48:30 09:48:30.281087:CID-0:RT:flow_first_complete_session: Sending icmp for ttl expiry
Jul 25 09:48:30 09:48:30.281089:CID-0:RT: packet dropped, ttl expiry.
Jul 25 09:48:30 09:48:30.286239:CID-0:RT:flow_first_complete_session: ttl <=1 for transit pkt, skipping flow creation
Jul 25 09:48:30 09:48:30.286286:CID-0:RT:flow_first_complete_session: Sending icmp for ttl expiry
Jul 25 09:48:30 09:48:30.286287:CID-0:RT: packet dropped, ttl expiry.
同时当在设备上发送Traceroute时,设备会发送三个Traceroute数据包,如上所述,就会显示三个会话创建的记录,通过Wireshark抓包如下记录:
包含TTL超时及端口不可达的回复:

当从Rourter-A发送Traceroute到 VCP-30.30.30.30网段时,防火墙就会对应的创建会话:
Session ID: 805, Policy name: 1/4, Timeout: 60, Valid
In: 10.10.10.1/40044 --> 30.30.30.30/33437;udp, If: ge-0/0/2.0, Pkts: 1, Bytes: 40
Out: 30.30.30.30/33437 --> 10.10.10.1/40044;udp, If: ge-0/0/3.0, Pkts: 0, Bytes: 0
Session ID: 806, Policy name: 1/4, Timeout: 60, Valid
In: 10.10.10.1/40044 --> 30.30.30.30/33438;udp, If: ge-0/0/2.0, Pkts: 1, Bytes: 40
Out: 30.30.30.30/33438 --> 10.10.10.1/40044;udp, If: ge-0/0/3.0, Pkts: 0, Bytes: 0
Session ID: 807, Policy name: 1/4, Timeout: 60, Valid
In: 10.10.10.1/40044 --> 30.30.30.30/33439;udp, If: ge-0/0/2.0, Pkts: 1, Bytes: 40
Out: 30.30.30.30/33439 --> 10.10.10.1/40044;udp, If: ge-0/0/3.0, Pkts: 0, Bytes: 0
Total sessions: 3
会话超时时间是60秒。 UDP数据包
本文介绍了如何在运行Junos OS 9.6及更高版本的SRX设备上配置允许ICMP-Traceroute的特定应用程序,以解决TTL大于1的数据包被丢弃的问题。内容包括配置UDP和ICMP Traceroute的应用示例,以及通过Wireshark抓包分析防火墙如何处理Traceroute数据包。
490

被折叠的 条评论
为什么被折叠?



