Android双网卡或双IP
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相关推荐
- linux双网卡绑定同一IP步骤,linux系统双网卡绑定单个IP地址
双网卡绑定单个IP地址为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断.多网卡绑. 为了提供网络的高可用性,我们可能 ...
- centos 设置双网卡,双网关
centos 设置双网卡,双网关 centos 设置双网卡,双网关 centos 设置双网卡,双网关 centos操作系统 一个是192段(eth1外网),一个是172(eth0内网)段,我们都知道一 ...
- Win10双网卡不双待攻略
转载:https://www.cnblogs.com/idorax/p/6999482.html Win10双网卡不双待攻略 声明:本文与个人的技术兴趣毫无关系,只是因为有迫不得已的实际需求,才不得不 ...
- linux 双网卡浮动ip,Linux 双网卡绑定一个IP原理及实现
我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作.其实 ...
- red flag linux双网卡,centos双网卡绑定负载均衡
通过linux自带的bond技术实现linux双网卡绑定和负载均衡 绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片 一.建立虚拟网络接口ifcfg-bond0文件[root@j ...
- CentOS配置双网卡以及双网卡报错处理
设置两个网卡,先在外面添加网卡 添加完成网卡,使用ifconfig去查看配置,可以看出来ens33为网卡一,而ens37为网卡二,网卡二的IP没有. 使用cd /etc/sysconfig/netwo ...
- linux6做双网卡,linux6--linux7 双网卡管理
若水三千,我只饮一瓢!在众多操作系统中,我独对Linux 情有独钟. 但是在Linux7 以后不但用systemctl来管理服务了,进程界别也是systemd.就连大家熟悉的eth0-eth1都变成- ...
- ubuntu server双网卡设置静态IP*(同网关)
最近公司新服务器进机房,该服务器为多网卡,我们申请两个IP,因此需要手动设置两个IP. 前提:同网关,双IP都能上网. 第一步: sudo ip addr.查看网卡名字. 第二步:sudo vim / ...
- linux网卡team0,Linux双网卡绑定单个IP之(team)
前言 (1)简单的说就是多个物理的端口绑定在一起当成一个逻辑端口来使用,以便提高带宽,实现负 载平衡或高可用的功能. (2)配置的基本过程就是配置一个逻辑端口的连接,视作 master:然后把需要的物 ...
最新文章
- linux系统中指定端口连接数限制
- 让vue-router渲染为指定的标签
- JAVA实现创建Excel表并导出(转发)
- java中常用的IO,你可否分得清、流的分类
- Media Player Classic - HC 源代码分析 7:详细信息选项卡(CPPageFileInfoDetails)
- 将Excel表格数据转换成XML格式文件
- AS中XML注释和取消注释快捷键,实际操作真实有效!!!
- VLC相关参数中文说明!
- RH358配置电子邮件传输--配置仅发送电子邮件服务
- 运动会分数统计(数据结构课程设计)
- 「HDU 2298」Toxophily
- android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏
- Java基础项目——基于文本家庭简易收支记账程序
- 如何判断Convex Set(凸集)、Convex Function(凸函数)
- accountmanager 调用说明
- 我能查看Instagram 所有用户的私人邮件和生日信息
- 异形窗体WinFrom
- 我的LaTeX开发环境配置
- 教师计算机应用能力办法,教师计算机应用能力检测方案
- 【SQL注入-15】自动化注入案例—以sqli-labs-less9为例(利用sqlmap工具)