1、硬件

Ubuntu 16.04.5 LTS运行在正点原子 阿尔法 开发板上面,cpu imx6ull具有2个有线以太网接口,再接上一下移远的EC20模块,目有3个网卡,实现一个有线网卡与4G网卡的上网配置。

2、配置网络

移植ubuntu 16根文件系统到上面以后,设置开机 eth0为静态IP, eth1为dhcp,动态获取IP。需要修改配置文件如下:/etc/network/interfaces.d/目录下创建2个文件eth0, eth1。

配置eth0网卡为静态IP,eth1网卡为自动IP.

3、EC20移植设置

EC20移植把驱动加入内核中编译,再编译生成qeucet-CM文件,quectel-CM用启动控制EC20的启动入网,获取IP地址等操quectel-CM文件放在/usr/bin/目录下。由于quectel-CM启动中需要使用udhcpc和busybox两个文件,可以通过apt-get install udhcpc来安装一下即可。最后可以查看到usr/bin/目录下要有udhcpc, busybox这两个文件。

quectel-CM启动时会调用udhcpc命令,如下面和启动记录中。udhcpc命令会使用一个default.script的脚本来设置4G网卡的IP地址。default.script脚本可以从开发板光盘的根文件系统中获取,并且放在usr/share/udhcpc目录下。

root@imx6ull:~# quectel-CM -s cenet &
[1] 345
root@imx6ull:~# [11-02_09:35:31:253] WCDMA&LTE_QConnectManager_Linux&Android_V1.1.34
[11-02_09:35:31:256] quectel-CM profile[1] = cenet///0, pincode = (null)
[11-02_09:35:31:262] Find /sys/bus/usb/devices/2-1.2 idVendor=2c7c idProduct=0125
[11-02_09:35:31:264] Find /sys/bus/usb/devices/2-1.2:1.4/net/eth2
[11-02_09:35:31:266] Find usbnet_adapter = eth2
[11-02_09:35:31:268] Find /sys/bus/usb/devices/2-1.2:1.4/GobiQMI/qcqmi2
[11-02_09:35:31:270] Find qmichannel = /dev/qcqmi2
[11-02_09:35:31:333] Get clientWDS = 7
[11-02_09:35:31:364] Get clientDMS = 8
[11-02_09:35:31:396] Get clientNAS = 9
[11-02_09:35:31:428] Get clientUIM = 10
[11-02_09:35:31:460] Get clientWDA = 11
[11-02_09:35:31:493] requestBaseBandVersion EC20CEHCR06A03M1G
[11-02_09:35:31:588] requestGetSIMStatus SIMStatus: SIM_READY
[11-02_09:35:31:588] requestSetProfile[1] cenet///0
[11-02_09:35:31:653] requestGetProfile[1] cenet///0
[11-02_09:35:31:684] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_09:35:31:716] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[11-02_09:35:31:780] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[11-02_09:35:31:813] requestSetupDataCall WdsConnectionIPv4Handle: 0xe17f8390
[11-02_09:35:31:907] requestQueryDataCall IPv4ConnectionStatus: CONNECTED
[11-02_09:35:31:940] ifconfig eth2 up
[11-02_09:35:31:980] busybox udhcpc -f -n -q -t 5 -i eth2
udhcpc: started, v1.29.0
[11-02_09:35:32:046] Setting IP address 0.0.0.0 on eth2
udhcpc: sending discover
udhcpc: sending select for 10.33.149.162
udhcpc: lease of 10.33.149.162 obtained, lease time 7200
[11-02_09:35:32:234] Setting IP address 10.33.149.162 on eth2

以下是default.script的源代码,也可以直接复制创建文件。

#!/bin/sh
# udhcpc script edited by Tim Riker <Tim@Rikers.org>RESOLV_CONF="/etc/resolv.conf"[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }NETMASK=""
[ -n "$subnet" ] && NETMASK="netmask $subnet"
BROADCAST="broadcast +"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"case "$1" indeconfig)echo "Setting IP address 0.0.0.0 on $interface"ifconfig $interface 0.0.0.0;;renew|bound)echo "Setting IP address $ip on $interface"ifconfig $interface $ip $NETMASK $BROADCASTif [ -n "$router" ] ; thenecho "Deleting routers"while route del default gw 0.0.0.0 dev $interface ; do:donemetric=10for i in $router ; doecho "Adding router $i"if [ "$subnet" = "255.255.255.255" ]; then# special case for /32 subnets:# /32 instructs kernel to always use routing for all outgoing packets# (they can never be sent to local subnet - there is no local subnet for /32).# Used in datacenters, avoids the need for private ip-addresses between two hops.ip route add $i dev $interfacefiroute add default gw $i dev $interface metric $((metric++))donefiecho "Recreating $RESOLV_CONF"# If the file is a symlink somewhere (like /etc/resolv.conf# pointing to /run/resolv.conf), make sure things work.realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF")tmpfile="$realconf-$$"# set the eth0 nameserver 114.114.114.114 echo "nameserver 114.114.114.114" > "$tmpfile"[ -n "$domain" ] && echo "search $domain" >> "$tmpfile"for i in $dns ; doecho " Adding DNS server $i"echo "nameserver $i" >> "$tmpfile"donemv "$tmpfile" "$realconf";;
esacexit 0

经过以上一系列的操作,可以启动4G网卡了。在命令行输入quectel-CM -s cenet &命令后,启动进行设置4G网卡,输出的打印记录中有arithmetic expression: expecting primary: "metric++"这样一句提示,意思是执行default.script脚本错误,原因是程序启动使用的命令行中不支持脚本中route add default gw $i dev $interface metric $((metric++))。

Ubuntu 中/bin/sh链接默认指向的是dash shell,而服务器上指向的是bash shell。
dash是一个小巧的shell,他的功能自然也就没有bash强大,上述问题就是有与dash shell不支持metric++运算和let命令造成的。

解决办法:sudo ln -sf /bin/bash /bin/sh

经过以上操作4G网卡可以正常出来,获取到了IP地址,但是在默认的网络配置下,无法连接外网了。

4、路由表的问题

不能连接外网,使用ping www.qq.com不通,一般是路由表的问题或是dns服务器地址配置的不对。通过route -n和ip route show查看路由表。如下:

root@imx6ull:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.33.149.161   0.0.0.0         UG    0      0        0 eth2
0.0.0.0         10.10.26.1      0.0.0.0         UG    0      0        0 eth0
10.10.26.0      0.0.0.0         255.255.254.0   U     0      0        0 eth0
10.33.149.160   0.0.0.0         255.255.255.252 U     0      0        0 eth2
root@imx6ull:~# ip route show
default via 10.10.26.1 dev eth0 onlink
default via 10.33.149.161 dev eth2
10.10.26.0/23 dev eth0  proto kernel  scope link  src 10.10.26.8
10.33.149.160/30 dev eth2  proto kernel  scope link  src 10.33.149.162

查看DNS服务器, cat /etc/resolv.conf。输出nameserver 221.179.155.193
nameserver 221.179.155.209。根据quecel-CM启动的记录可以查看到,这两个dns是4G网卡的设置的,原来的默认的有线网卡的DNS地址没有了。

上面的ip route show查看到路由表可以知道,上外网优先使用前的默认网卡 eth0,而eth0又没有dns服务器地址,无法进行域名解析,只能连接内网,无法ping通外网。

5、配置路由表

通过分析quectel-CM的程序代码,关于ip与路由的设置是由default.script文件来实现的,所以修改4G卡的跃点为10, 由于4G网卡获取 dns服务器后改resolv.conf文件时,保留原来的有线网卡使用的dns。

具体修改如下:

有线网卡eth0的跃点配置:

经过以上设置后,上外网会低跃点的使用4G网卡。如果想使用有线网卡就修改eth0的跃点比4G网卡跃点低即可了。

linux连接网的路由选择是选择Mertic(跃点)小的网卡连接外网,目前的配置两个卡的跃点一样全部为0。

经过以上设备查看路由配置可以看到eth2 4G网卡的跃点10,有线网卡eth0为50,上外网使用4G网卡。此时路由表如下:

6、开机自动启动设置

开机自动启动加上4G网卡的自启动,修改rc.local文件,具体如下:

ubuntu16 ARM 4G双网卡的上网配置相关推荐

  1. CentOS 6.6下双网卡共享上网配置

    CentOS 6.6下双网卡共享上网配置 时间:2015-10-15 01:03来源:blog.51cto.com作者:l19891223j 的BLOG 举报 点击:494次   实现方式:通过设置i ...

  2. linux下双网卡共享上网配置

    双网卡共享上网配置 ###环境 主机1: 192.168.1.1(外网)eth0192.168.0.1(内网)eth1 主机2:192.168.0.2 eth0###配置主机1 1.临时开启转发功能s ...

  3. Windows下笔记本双网卡同时上网设置方法

    Windows下笔记本双网卡同时上网设置方法 配置如下: 外网网关为:192.168.8.1 内网网关为:192.168.1.1 内网环境下需要访问的其他IP为:180.167.245.170 以管理 ...

  4. linux环境双网卡主机路由配置

    Linux环境下双网卡主机路由配置 一.环境: 三台直接相连的计算机主机如图 PC1<------>PC2<------>PC3 其中PC2上有两块网卡eth0.eth1,分别 ...

  5. 两台XP系统电脑用双网卡共享上网操作

    两台XP系统电脑用双网卡共享上网操作   双网卡互联共享上网两个步骤:一个是硬件连接,另一个是网卡设置.    一.硬件连接 1.安装网卡:一台机器安装双网卡做为服务机,并安装上驱动,另一台也同样安上 ...

  6. Win7双网卡共享上网

    Win7通过双网卡共享上网,安装另外一块网卡,用于共享网络.设定可以直接上网的网卡为A,另一块网卡为B,A联网后,在"控制面板\网络和 Internet\网络连接"中右键A的属性, ...

  7. 直接用网线连接两台电脑,实现双网卡共享上网

    原文 直接用网线连接两台电脑,实现双网卡共享上网 我有两台电脑,一台笔记本,一台台式机,都是 XP 操作系统.笔记本收到 邻居无线信号,能正常上网.想通过有线连接使台式机同样能够共享网.经过摸 索总算 ...

  8. Windows Servers双网卡绑定并配置IP地址

    1. 首先要确保Windows Server有两块网卡,我们同时按下win+R键:输入ncpa.cpl,点击确定. 2.有上面这张图片可以看到我们的Windows Server已经有两块网卡,在这里要 ...

  9. liunx 双网卡同网段配置

    配置了同网段的双网卡 因其他网段无法访问第二个网卡所以百度了一下方案 转载https://blog.csdn.net/blade2001/article/details/46271449 echo & ...

最新文章

  1. Modus串行链路系统电气特性:2线-Modus、4线-Modus、RS232-Modus和RS485-Modus的特性
  2. ThinkPHP连接数据库
  3. 戏说肥哥系列之---买车
  4. 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
  5. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门
  6. 物联网安全的三个重点
  7. 报错:TypeError: can‘t pickle _thread.RLock objects
  8. zabbix安装MySQL失败_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
  9. java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值
  10. 再谈 最速下降法/梯度法/Steepest Descent
  11. 南大计算机面经(结果:WaitList)
  12. Laravel压缩图片
  13. 【R语言】他说每个生存曲线一定要看到p值,不能0.05,0.01,0.001
  14. 国家住宅装饰装修工程施工规范
  15. 说散就散乃是人生常态
  16. PyCharm Community 2021.2 安装与汉化
  17. 2023年首家!上海万得征信获企业征信备案公示
  18. 微信小程序版狼人杀+服务端系列(1)
  19. 小学妹听了都说棒的:国王试毒酒问题
  20. 程序员都秃顶?Python创始人笑了,养生还得学这门语言

热门文章

  1. 笔记:阿里云服务器下python 配置邮箱服务
  2. 国产小品牌纽麦平板T118的ADB清楚锁屏手势之旅
  3. Java~链表反转/链表逆置的多种方法(超详细,含完整代码)
  4. java 导出excel 大数据量 报错_java导出excel
  5. 激活海量数据价值,实现生产过程优化
  6. 用移动飞信。。免费下载,免费发短信!
  7. 利用OpenSearch API检索和下载数据 附Python代码实例
  8. mybatis-generator-core插件无法下载解决办法
  9. 电源测试软件怎么增加通道口,关于测试通道数问题解析
  10. 适用于iPhone或iPod Touch的最佳Office应用程序是什么?