构建多LAN口多WAN口动态网络

【目的】

在AM335X定制动态网络功能,如下所示,在系统当中有两个以太网口,有4G模块,有wifi芯片8188eu支持AP+STA功能。

【实验环境】

1、  Ubuntu 16.04发行版

2、  MC183平台

3、  交叉编译器arm-linux-gnueabihf-gcc-4.7.3

【步骤】

如下案例,eth0,wlan0为LAN口,eth1,wlan1,eth2(4G)为WAN口

  1. 本地局域网的构建

可以通过brctl,创建虚拟网卡,将网口及WIFI进行绑定。

ifconfig eth0 down

ifconfig eth0 up

brctl addbr br-lan

brctl addif br-lan wan0

brctl addif br-lan eth0

ifconfig br-lan 192.168.188.1 up

既然是局域网,那么需要要提供dhcp功能,本文可以通过dnsmasq

其中dnsmasq的配置如下所示:

root@am335x:~# cat /etc/dnsmasq-tmp.conf

interface=br-lan

listen-address=192.168.188.1,127.0.0.1

domain=am335x.iotx.cn

dhcp-range=192.168.188.100,192.168.188.200,12h

启动dhcp服务:

dnsmasq  –C /etc/dnsmasq-tmp.conf

启动WIFI AP时,也需要指定bridge,这样的话,WIFI也能提供DHCP功能:

启动ap服务:

hostapd  /etc/rtc_hostapd_2G-tmp.conf –B &

配置参考如下:

root@am335x:~# cat /etc/rtl_hostapd_2G-tmp.conf ctrl_interface=/var/run/hostapd

eap_server=1

wps_state=2

uuid=12345678-9abc-def0-1234-56789abcdef0

device_name=RTL8192CU

manufacturer=Realtek

model_name=RTW_SOFTAP

model_number=WLAN_CU

serial_number=12345

device_type=6-0050F204-1

os_version=01020300

config_methods=label display push_button keypad

beacon_int=100

ieee80211n=1

wme_enabled=1

ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]

max_num_sta=8

wpa_group_rekey=86400

interface=wlan0

bridge=br-lan

ssid=test_12345678

channel=8

driver=rtl871xdrv

hw_mode=g

wpa=2

wpa_key_mgmt=WPA-PSK

wpa_pairwise=CCMP

wpa_passphrase=abcdefgh

  1. 本地WAN的构建

针对eth1当成WAN口:

dhcpcd –m  1 –t 0 eth1  &

查看结果如下,可以正常获取IP:

查看ROUTE表,看METRIC值是否生效:

针对WLAN1当成WAN口:

比如连接热点:testWAN 密码为123456789

wpa_passphrase  “testWAN”   “12345678”  >  /etc/wpa_supplicant-tmp.conf

ifconfig wlan1down

ifconfig wlan1 up

wpa_supplicant –iwlan1 –c  /etc/wpa_supplicant-tmp.conf  -B

dhcpcd –m 2 –t 0 wlan1 &

查看结果如下,可以正常获取IP:

查看ROUTE表,看METRIC值是否生效:

针对EC20当成WAN的配置:

由于厂家提供了完整的上层应用的软件包,用于自动的拨号,获取IP功能,故只需要修该其内部DHCP功能,本人采用system(”dhcpcd –m 3 –t 0 eth2”)替代:

至此开发板优先以太网上网,WIFI次之,最后是4G。

3 但是还存在一个问题,就是通过eth0,及ap接入板子,获取到的192.168.188网段的设备还是上不了网:

1)    ip_forward转发功能没有开启,导致br-lan的数据无法从WAN出去。

echo "1" > /proc/sys/net/ipv4/ip_forward

2)    转发功能开启之后,接入该网络的设备发现还是上不了网,为什么呢?熟悉iptabes的朋友应该会对如下所示的图很熟悉,所有的数据最终都是通过postrouting出去的,显然在之前所有的配置里面,我们还是没有针对这方面的配置,通过如下指令可以实现。

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

学习iptable可以在网上搜索朱双印博客

4 总结如下:

通过brctl,dnsmasq构建本地局域网并提供dhcp功能。

通过dhcpcd 获取wan口的IP,更新默认路由表,并指定其metric值

通过iptables配合route表配置,实现上网的优先级。

其他的相关工具移植,使用与验证可参考如下链接:

8188EU 在AM335X MC183上以AP+STA工作
https://www.cnblogs.com/lianghong881018/p/9582401.html

am335x system upgrade rootfs for bridge-utils cross compile (十四)
https://www.cnblogs.com/lianghong881018/p/10129695.html

am335x system upgrade rootfs for dhcpcd cross compile(十三)
https://www.cnblogs.com/lianghong881018/p/10129682.html

am335x using brctl iptables dhcpcd make multi wan & multi lan network(十五)的更多相关文章

  1. 网络小白之WAN与LAN的区别

    剑指Offer--网络小白之WAN与LAN的区别 基本作用 wan接口是外网接口,是用来连接互联网或局域网等外部网络的. lan接口是内网接口,是用来连接计算机终端或其他路由器等终端设备的. 举例 w ...

  2. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

  3. Deep Learning 28:读论文“Multi Column Deep Neural Network for Traffic Sign Classification”-------MCDNN 简单理解

    读这篇论文“ Multi Column Deep Neural Network for Traffic Sign Classification”是为了更加理解,论文“Multi-column Deep ...

  4. How to set an Apache Kafka multi node – multi broker cluster【z】

    Set a multi node Apache ZooKeeper cluster On every node of the cluster add the following lines to th ...

  5. 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作

    1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...

  6. iptables详解(2):四表五链

    关于iptables中“四表五链”,我们今天来好好唠唠: 1.表的概念: 我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而ip ...

  7. python multi process multi thread

    muti thread: python threading: https://docs.python.org/2/library/threading.html#thread-objects https ...

  8. OpenWrt防火墙配置(极路由)

    说明: 1.极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已. 2.Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防 ...

  9. iptables rule

    和H3C中的acl很像,或者就是一会事,这就是不知道底层的缺陷,形式一变,所有的积累都浮云了 参考准确的说copy from http://www.ibm.com/developerworks/cn/ ...

随机推荐

  1. Wing电信平台操作方法

    Wing电信平台操作文档 当前文档编制于2019/9/3 一.登陆 登陆网址 https://www.ctwing.cn/ 点击右上角控制台 点击左侧栏点击产品中心 选择需要注册的产品 二.注册设备 ...

  2. AX2009取销售订单的税额

    直接用以下方法即可: Tax::calcTaxAmount(salesLine.TaxGroup, salesLine.TaxItemGroup, systemDateGet(),    salesL ...

  3. shell 学习笔记9-while/until循环语句

    一.while循环语句 1.循环语句 循环愈久就是重复执行一条指令或一组执行,知道条件不在满足时停止,shell循环语句包括,while.until.for.select语句 2.while循环 主要 ...

  4. CORS讲解

    跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器  让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源.当一个资源从与该资 ...

  5. 1.ASP.NET Core介绍

    优点: 1.跨平台,高性能,开源,运行在.Net Core 或.Net Framework框架上(asp.net core 3.0及以后只支持.Net Core). 2.各平台上开发工具支持,能够开发 ...

  6. FindWindow SendMessage

    FindWindow 用来根据类名和窗口名来得到窗口句柄的.但是这个函数不能查找子窗口,也不区分大小写. 如果要从一个窗口的子窗口中查找需要使用FindWindowEX. 1.在C#中使用方法如下: ...

  7. Hadoop之HDFS读写流程

    hadoophdfs 1. HDFS写流程 2. HDFS写流程 1. HDFS写流程 HDFS写流程 副本存放策略: 上传的数据块后,触发一个新的线程,进行存放. 第一个副本:与client最近的机 ...

  8. sql 注入风险

    目录 sql 注入风险 什么是sql注入呢? 查看sql注入风险 如何避免 sql 注入风险 pymysql 简单规避注入风险示列 sql 注入风险 什么是sql注入呢? 参考百度 查看sql注入风险 ...

  9. 纯JavaScript实现的调用设备摄像头并拍照的功能

    这篇文章本来不在Jerry计划内的,咱们SAP中国研究院今天已经正式上班了,Jerry也回到工作岗位开始搬砖了. 今天一位同事问我关于本文标题描述的功能如何实现,Jerry在网上随便搜了一下,类似的例 ...

  10. laravel使用withCount获取列表下关联模型的数量

    模型里面 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model ...