ubuntu16 ARM 4G双网卡的上网配置
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<E_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双网卡的上网配置相关推荐
- CentOS 6.6下双网卡共享上网配置
CentOS 6.6下双网卡共享上网配置 时间:2015-10-15 01:03来源:blog.51cto.com作者:l19891223j 的BLOG 举报 点击:494次 实现方式:通过设置i ...
- linux下双网卡共享上网配置
双网卡共享上网配置 ###环境 主机1: 192.168.1.1(外网)eth0192.168.0.1(内网)eth1 主机2:192.168.0.2 eth0###配置主机1 1.临时开启转发功能s ...
- Windows下笔记本双网卡同时上网设置方法
Windows下笔记本双网卡同时上网设置方法 配置如下: 外网网关为:192.168.8.1 内网网关为:192.168.1.1 内网环境下需要访问的其他IP为:180.167.245.170 以管理 ...
- linux环境双网卡主机路由配置
Linux环境下双网卡主机路由配置 一.环境: 三台直接相连的计算机主机如图 PC1<------>PC2<------>PC3 其中PC2上有两块网卡eth0.eth1,分别 ...
- 两台XP系统电脑用双网卡共享上网操作
两台XP系统电脑用双网卡共享上网操作 双网卡互联共享上网两个步骤:一个是硬件连接,另一个是网卡设置. 一.硬件连接 1.安装网卡:一台机器安装双网卡做为服务机,并安装上驱动,另一台也同样安上 ...
- Win7双网卡共享上网
Win7通过双网卡共享上网,安装另外一块网卡,用于共享网络.设定可以直接上网的网卡为A,另一块网卡为B,A联网后,在"控制面板\网络和 Internet\网络连接"中右键A的属性, ...
- 直接用网线连接两台电脑,实现双网卡共享上网
原文 直接用网线连接两台电脑,实现双网卡共享上网 我有两台电脑,一台笔记本,一台台式机,都是 XP 操作系统.笔记本收到 邻居无线信号,能正常上网.想通过有线连接使台式机同样能够共享网.经过摸 索总算 ...
- Windows Servers双网卡绑定并配置IP地址
1. 首先要确保Windows Server有两块网卡,我们同时按下win+R键:输入ncpa.cpl,点击确定. 2.有上面这张图片可以看到我们的Windows Server已经有两块网卡,在这里要 ...
- liunx 双网卡同网段配置
配置了同网段的双网卡 因其他网段无法访问第二个网卡所以百度了一下方案 转载https://blog.csdn.net/blade2001/article/details/46271449 echo & ...
最新文章
- Modus串行链路系统电气特性:2线-Modus、4线-Modus、RS232-Modus和RS485-Modus的特性
- ThinkPHP连接数据库
- 戏说肥哥系列之---买车
- 报错整理:ImportError: cannot import name ‘mean_absolute_percentage_error‘ from ‘sklearn.metrics‘
- 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门
- 物联网安全的三个重点
- 报错:TypeError: can‘t pickle _thread.RLock objects
- zabbix安装MySQL失败_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
- java中插入表格_java 集成 pageoffice 实现在 word 中插入表格并赋值
- 再谈 最速下降法/梯度法/Steepest Descent
- 南大计算机面经(结果:WaitList)
- Laravel压缩图片
- 【R语言】他说每个生存曲线一定要看到p值,不能0.05,0.01,0.001
- 国家住宅装饰装修工程施工规范
- 说散就散乃是人生常态
- PyCharm Community 2021.2 安装与汉化
- 2023年首家!上海万得征信获企业征信备案公示
- 微信小程序版狼人杀+服务端系列(1)
- 小学妹听了都说棒的:国王试毒酒问题
- 程序员都秃顶?Python创始人笑了,养生还得学这门语言
热门文章
- 笔记:阿里云服务器下python 配置邮箱服务
- 国产小品牌纽麦平板T118的ADB清楚锁屏手势之旅
- Java~链表反转/链表逆置的多种方法(超详细,含完整代码)
- java 导出excel 大数据量 报错_java导出excel
- 激活海量数据价值,实现生产过程优化
- 用移动飞信。。免费下载,免费发短信!
- 利用OpenSearch API检索和下载数据 附Python代码实例
- mybatis-generator-core插件无法下载解决办法
- 电源测试软件怎么增加通道口,关于测试通道数问题解析
- 适用于iPhone或iPod Touch的最佳Office应用程序是什么?