Platform: RK3368

OS: Android 6.0

Kernel: 3.10.0


文章目录

  • 1. 以太网与Wi-Fi共存问题
  • 2. 修改ip路由
  • 3. 双IP地址也是类似
  • 4. Android 路由相关代码:

1. 以太网与Wi-Fi共存问题

想要多个网卡同时使用,首先就要解决多网卡共存问题。Android系统默认会将不需要的网络给关闭的,以降低功耗。所以要解决以太网与Wi-Fi共存问题,需要做如下改动:

--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -4247,7 +4248,8 @@ public class ConnectivityService extends IConnectivityManager.Stubloge("Dead network still had at least " + nr);break;}
-        nai.asyncChannel.disconnect();
+        log("don't teardownUnneededNetwork " + nai);
+        //nai.asyncChannel.disconnect();}private void handleLingerComplete(NetworkAgentInfo oldNetwork) {

查一下当前系统的网络优先级配置:
frameworks/base/core/res/res/values/config.xml

    <string-array translatable="false" name="networkAttributes"><item>"wifi,1,1,2,-1,true"</item><item>"mobile,0,0,0,-1,true"</item><item>"mobile_mms,2,0,2,60000,true"</item><item>"mobile_supl,3,0,2,60000,true"</item><item>"mobile_dun,4,0,2,60000,true"</item><item>"mobile_hipri,5,0,3,60000,true"</item><item>"mobile_fota,10,0,2,60000,true"</item><item>"mobile_ims,11,0,2,60000,true"</item><item>"mobile_cbs,12,0,2,60000,true"</item><item>"bluetooth,7,7,0,-1,true"</item><item>"ethernet,9,9,9,-1,true"</item></string-array>

可以看到以太网优先级高于wifi,也就是说以太网和wifi同时打开,默认会使用以太网。

2. 修改ip路由

解决了多网卡共存问题,那么接下来就是要配置ip路由了,先ifconfig看一下设备的网络信息如下,一个以太网,一个wifi:

# ifconfig
eth0      Link encap:Ethernet  HWaddr C8:97:06:8B:F0:02inet addr:192.168.88.29  Bcast:192.168.88.255  Mask:255.255.255.0 inet6 addr: fe80::ca97:6ff:fe8b:f002/64 Scope: LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:980 errors:0 dropped:0 overruns:0 frame:0 TX packets:50 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:76080 TX bytes:16928 Interrupt:59 wlan0     Link encap:Ethernet  HWaddr 88:06:95:C9:1B:1Ainet addr:192.168.43.3  Bcast:192.168.43.255  Mask:255.255.255.0 inet6 addr: fe80::8a06:95ff:fec9:1b1a/64 Scope: Linkinet6 addr: 240e:c0:f612:2990:c159:79be:bbdd:ba2c/64 Scope: Globalinet6 addr: 240e:c0:f612:2990:8a06:95ff:fec9:1b1a/64 Scope: GlobalUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:56 errors:0 dropped:101 overruns:0 frame:0 TX packets:58 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7712 TX bytes:7511
......

可以看到两个网卡为不同网段的IP地址,但这个时候相互ping的话是ping不通的.

我们再查看当前路由信息:

# ip route
192.168.43.0/24 dev wlan0  proto kernel  scope link  src 192.168.43.3192.168.88.0/24 dev eth0  proto kernel  scope link  src 192.168.88.29

IP路由似乎也是没问题的,系统自动添加了路由配置。
这如果是ubuntu,debian等linux系统的话当然可以ping通;但是在Android系统中就行不通了。由于Android系统默认使用的是优先级和评分高的网络,而这台设备系统配置的是以太网优先级高于wifi,所以默认路由使用的是以太网的路由规则。直接用ping命令是不能ping通wifi那边的网络。需要将无线的默认路由规则添加到以太网的路由表中(也就是Android系统当前用的路由表为优先级最高的那个).

所以现在需要修改eth0路由表:

# ip route add 192.168.43.0/24 dev wlan0 proto static scope link table eth0
或者直接复制wlan0路由表的规则添加到eth0路由表:
# ip route add 192.168.43.0/24 dev wlan0  proto kernel  scope link  src 192.168.43.3 table eth0

上面命令的意思是:向路由表eth0中添加一条‘192.168.43.0/24 dev wlan0’路由规则.这样发送到192.168.43网段的数据就会通过wifi出去了。在设备中就可以ping通无线和有线两个网络了.

3. 双IP地址也是类似

比如要将一个网卡设置两个IP地址。

# ip address add 10.0.0.10/8 dev wlan0
# ip route
10.0.0.0/8 dev wlan0  proto kernel  scope link  src 10.0.0.10
#将默认的路由配置,复制到wlan0路由表中:
# ip route add 10.0.0.0/8 dev wlan0  proto kernel  scope link  src 10.0.0.10 table wlan0

4. Android 路由相关代码:

当然啦!以上都是手动敲命令实现的,如果要做到自动修改路由表,还需要修改系统相关代码,要等有时间再去研究了。
相关代码目录:framework/base/

     services/core/java/com/android/server/ConnectivityService.javaservices/core/java/com/android/server/NetworkManagementService.javaservices/core/java/com/android/server/net/IpConfigStore.java

网络调试相关日志查看:

$ logcat -s ConnectivityService ConnectivityManager EthernetNetworkFactory WifiConfigStore IpConfigStore NetworkManagement

Android双网卡或双IP相关推荐

  1. linux双网卡绑定同一IP步骤,linux系统双网卡绑定单个IP地址

    双网卡绑定单个IP地址为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断.多网卡绑. 为了提供网络的高可用性,我们可能 ...

  2. centos 设置双网卡,双网关

    centos 设置双网卡,双网关 centos 设置双网卡,双网关 centos 设置双网卡,双网关 centos操作系统 一个是192段(eth1外网),一个是172(eth0内网)段,我们都知道一 ...

  3. Win10双网卡不双待攻略

    转载:https://www.cnblogs.com/idorax/p/6999482.html Win10双网卡不双待攻略 声明:本文与个人的技术兴趣毫无关系,只是因为有迫不得已的实际需求,才不得不 ...

  4. linux 双网卡浮动ip,Linux 双网卡绑定一个IP原理及实现

    我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作.其实 ...

  5. red flag linux双网卡,centos双网卡绑定负载均衡

    通过linux自带的bond技术实现linux双网卡绑定和负载均衡 绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片 一.建立虚拟网络接口ifcfg-bond0文件[root@j ...

  6. CentOS配置双网卡以及双网卡报错处理

    设置两个网卡,先在外面添加网卡 添加完成网卡,使用ifconfig去查看配置,可以看出来ens33为网卡一,而ens37为网卡二,网卡二的IP没有. 使用cd /etc/sysconfig/netwo ...

  7. linux6做双网卡,linux6--linux7 双网卡管理

    若水三千,我只饮一瓢!在众多操作系统中,我独对Linux 情有独钟. 但是在Linux7 以后不但用systemctl来管理服务了,进程界别也是systemd.就连大家熟悉的eth0-eth1都变成- ...

  8. ubuntu server双网卡设置静态IP*(同网关)

    最近公司新服务器进机房,该服务器为多网卡,我们申请两个IP,因此需要手动设置两个IP. 前提:同网关,双IP都能上网. 第一步: sudo ip addr.查看网卡名字. 第二步:sudo vim / ...

  9. linux网卡team0,Linux双网卡绑定单个IP之(team)

    前言 (1)简单的说就是多个物理的端口绑定在一起当成一个逻辑端口来使用,以便提高带宽,实现负 载平衡或高可用的功能. (2)配置的基本过程就是配置一个逻辑端口的连接,视作 master:然后把需要的物 ...

最新文章

  1. linux系统中指定端口连接数限制
  2. 让vue-router渲染为指定的标签
  3. JAVA实现创建Excel表并导出(转发)
  4. java中常用的IO,你可否分得清、流的分类
  5. Media Player Classic - HC 源代码分析 7:详细信息选项卡(CPPageFileInfoDetails)
  6. 将Excel表格数据转换成XML格式文件
  7. AS中XML注释和取消注释快捷键,实际操作真实有效!!!
  8. VLC相关参数中文说明!
  9. RH358配置电子邮件传输--配置仅发送电子邮件服务
  10. 运动会分数统计(数据结构课程设计)
  11. 「HDU 2298」Toxophily
  12. android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏
  13. Java基础项目——基于文本家庭简易收支记账程序
  14. 如何判断Convex Set(凸集)、Convex Function(凸函数)
  15. accountmanager 调用说明
  16. 我能查看Instagram 所有用户的私人邮件和生日信息
  17. 异形窗体WinFrom
  18. 我的LaTeX开发环境配置
  19. 教师计算机应用能力办法,教师计算机应用能力检测方案
  20. 【SQL注入-15】自动化注入案例—以sqli-labs-less9为例(利用sqlmap工具)

热门文章

  1. 专精特新新企业技术创新发展趋势研究分析讲座详情
  2. 瑞银分析师:4月份iPhone在华销量明显好转 同比仅下滑3%
  3. Java服务端推送--SSE
  4. redis 必知必会
  5. JS节点操作(2)- 创建节点,添加节点,删除节点,复制节点
  6. mysql md5 盐值_md5盐值加密
  7. 数据库设计原则(不错)
  8. MyBatis-05-笔记
  9. 全球与中国塑料瓶回收市场深度研究分析报告
  10. 女孩子转行软件测试还是ui,女生可以做软件测试吗?