日期:2014-05-16 浏览次数:20725 次
308int ip_output(struct sk_buff *skb) 309{ 310 struct net_device *dev = skb_dst(skb)->dev; 311 312 IP_UPD_PO_STATS(dev_net(dev), IPSTATS_MIB_OUT, skb->len); 313 314 skb->dev = dev; 315 skb->protocol = htons(ETH_P_IP); 316 317 return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb, NULL, dev, 318 ip_finish_output, 319 !(IPCB(skb)->flags & IPSKB_REROUTED)); 320}
------解决方案--------------------
"当路由要发送一个包时,发现该包的地址不在路由表中",这个时候会使用默认的路由选项,即默认的端口把包送出去。
“如果从dev1中收到该包的回应,就会在路由表中建立该项,以后发往该地址的包就会从dev1中发送.”,这句话说的不对。收包时记录路由表,它可不知道什么“回应”。发包时查路由表,看目的IP是否在路由表上已存在。