一、功能说明

本文以Mfgtools烧录工具中提供的根文件系统为基础,修改根文件系统。设置eth0作为WAN口,设置eth1作为LAN口。eth0连接路由器,eth1连接设备并为设备动态分配IP地址。

二、修改方法

  1. 将/etc/init.d/S41dhcpcd文件名修改为S31dhcpcd

    mv /etc/init.d/S41dhcpcd /etc/init.d/S31dhcpcd
  2. 将/etc/initd-bak/80dhcp-server文件移动至/etc/init.d/目录

    mv /etc/initd-bak/80dhcp-server /etc/init.d/
  3. 修改/etc/network/interfaces文件
    设置eth0为dhcp,设置eth1为static,修改后的文件内容如下

    # interface file auto-generated by buildroot
    auto lo
    iface lo inet loopback
    # eth0
    auto eth0
    iface eth0 inet dhcp
    # eth1
    auto eth1
    iface eth1 inet static
    address 192.168.3.1
    netmask 255.255.255.0
    gateway 192.168.3.1
  4. 修改dhcp服务配置文件
    在/etc/dhcp/dhcpd.conf文件中添加subnet参数,设置网段为192.168.3.x

    subnet 192.168.3.0 netmask 255.255.255.0 {
    range 192.168.3.100 192.168.3.110;
    option domain-name-servers 114.114.114.114;
    option domain-name "dhcp";
    option routers 192.168.3.1;
    }
  5. 修改/usr/app/invokeExe
    删除eth1默认路由,执行脚本开启网络地址转换通过eth0上网,在文件中添加以下内容:

    #删除eth1的路由
    route del default gw 192.168.3.1 
    #执行nat网络地址转换脚本,通过eth0上网
    /etc/wifi/nat_start
  6. 重启系统
    重启系统让所有服务重新执行。

三、功能验证

将eth0连接到路由器中,eth1使用网线连接一个开发板(连接的设备的网口需要支持动态获取ip地址)。

  1. 查看开发板ip地址是否分配成功
    此处eth0连接的路由器网段为192.168.0.X
# ifconfig 
eth0      Link encap:Ethernet  HWaddr 1A:C1:3F:A5:FE:90  
          inet addr:192.168.0.139  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::884d:435b:3de3:b60a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11973 errors:0 dropped:42 overruns:0 frame:0
          TX packets:305 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:938083 (916.0 KiB)  TX bytes:27585 (26.9 KiB)

eth1      Link encap:Ethernet  HWaddr 72:D0:B9:65:61:89  
          inet addr:192.168.3.1  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::fef6:7370:39d:99a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:52 errors:0 dropped:0 overruns:0 frame:0
          TX packets:886 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7920 (7.7 KiB)  TX bytes:239256 (233.6 KiB)

ifconfig结果显示eth0连接路由器已经分配到了ip地址192.168.0.139,eth1静态ip地址192.168.3.1设置成功。

  1. 验证开发板是否可以上网
    # ping www.baidu.com
    PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=56 time=6.86 ms
    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=56 time=6.71 ms
    如果无法上网或无法ping通eth0的网关,则需要查看route中网关设置是否正确,正确设置如下:
    # route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.0.1     0.0.0.0         UG    204    0        0 eth0
    192.168.0.0     *               255.255.255.0   U     204    0        0 eth0
    192.168.3.0     *               255.255.255.0   U     0      0        0 eth1
  2. 查看连接eth1网口的设备是否可以动态获取到eth1分配的ip地址。
    # ifconfig 
    eth0      Link encap:Ethernet  HWaddr 32:F4:6E:BC:CA:80  
           inet addr:192.168.3.103  Bcast:192.168.3.255  Mask:255.255.255.0
           inet6 addr: fe80::a53a:a60c:d802:19ca/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:237 errors:0 dropped:0 overruns:0 frame:0
           TX packets:168 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000 
           RX bytes:28452 (27.7 KiB)  TX bytes:22415 (21.8 KiB)
    ifconfig结果显示连接eth1网口的设备已经分配到ip地址192.168.3.103。
  3. 连接eth1的设备上网测试
    # ping www.baidu.com
    PING www.baidu.com (14.215.177.39): 56 data bytes
    64 bytes from 14.215.177.39: seq=0 ttl=55 time=8.111 ms
    64 bytes from 14.215.177.39: seq=1 ttl=55 time=8.214 ms
文档更新时间: 2020-08-11 14:13   作者:admin