单主机多网卡位于同一个网段

一个设备有两张网卡,一个以太网卡,一个wifi无线网卡,如route命令输出的,

eth0的IP地址是10.12.39.10;wlan0的IP地址是10.12.39.11;

当eth0的RJ45接口的网线连上,wlan0的无线wifi不连上。

发现ping eth0,发现能ping通;ping wlan0时,发现也能ping通。反过来,发现也能ping通。


现象:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.12.39.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.12.39.0      0.0.0.0         255.255.255.0   U     0      0        0 wlan0
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 eth0
0.0.0.0         10.12.39.254    0.0.0.0         UG    0      0        0 eth0
通过以下命令设置后;

发现ping eth0通而ping wlan0时不同。

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
 
实践发现,下述命令也会需要
 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter


 if (arp->ar_op == htons(ARPOP_REQUEST) &&
 843         ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {
 844 
 845         rt = skb_rtable(skb);
 846         addr_type = rt->rt_type;
 847 
 848         if (addr_type == RTN_LOCAL) {
 849             int dont_send;
 850 
 851             dont_send = arp_ignore(in_dev, sip, tip);
 852             if (!dont_send && IN_DEV_ARPFILTER(in_dev))
 853                 dont_send = arp_filter(sip, tip, dev);
 854             if (!dont_send) {
 855                 n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
 856                 if (n) {
 857                     arp_send(ARPOP_REPLY, ETH_P_ARP, sip,
 858                          dev, tip, sha, dev->dev_addr,
 859                          sha);
 860                     neigh_release(n);
 861                 }
 862             }
 863             goto out;
 864         } else if (IN_DEV_FORWARD(in_dev)) {
 865             if (addr_type == RTN_UNICAST  &&
 866                 (arp_fwd_proxy(in_dev, dev, rt) ||
 867                  arp_fwd_pvlan(in_dev, dev, rt, sip, tip) ||
 868                  (rt->dst.dev != dev &&
 869                   pneigh_lookup(&arp_tbl, net, &tip, dev, 0)))) {
 870                 n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
 871                 if (n)
 872                     neigh_release(n);
 873 
 874                 if (NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED ||
 875                     skb->pkt_type == PACKET_HOST ||
 876                     in_dev->arp_parms->proxy_delay == 0) {
 877                     arp_send(ARPOP_REPLY, ETH_P_ARP, sip,
 878                          dev, tip, sha, dev->dev_addr,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值