shaohui973 发表于 2013-11-20 15:47
环境背景:
linux服务器
话机1 -------------- ...
2)如果在话机发送第一个包之后才设置NAT规则,则话机2发送的RTP包无法通过NAT规则的转换,最终死在路由的结果上,返回icmp,code = 3, type =3 (目的端口不可达)
第二个包为什么不去查?第一包到达时,由于此时还没有设置NAT规则,则nf_find_rule查找匹配失败,返回NF_ACCEPT;由于是查找失败的,所以没有机会调用对应的target函数---ipt_snat_target或ipt_dnat_target,也就没有机会设置ct->status为DNAT或者SNAT。既然没机会设置,那第二包到达时,它判断ct->status没有设置DNAT或SNAT,不是还会调用nf_find_rule去查找规则。
或许,是不是还有什么地方会设置这个ct->status???
你是说,第一个包之后,CT就不是NEW状态了吗?我对CT这块没了解,指导下我,谢谢。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |