• am335x using brctl iptables dhcpcd make multi wan & multi lan network(十五)


    构建多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

     

  • 相关阅读:
    Codeforces 1184C1. Heidi and the Turing Test (Easy)题解
    CodeChef Chef and Digit Jumps 题解
    CodeChef Squirrel and chestnut 题解
    Atcoder Beginner Contest 082 C
    Atcoder Beginner Contest 081 C
    Atcoder Beginner Contest 080 C
    Atcoder Beginner Contest 079 C
    Atcoder Beginner Contest 078 C
    Topcoder 10524(SRM451 Div.1 C) BrickPuzzle题解
    广义表是非线性结构
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/10129816.html
Copyright © 2020-2023  润新知