当前位置: 首页 > 科技观察

如何在OpenHarmony上设置双网卡

时间:2023-03-15 22:10:30 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com前言在一些特殊场景下,我们可能会有这样的网络配置需求,即访问内网也需要访问外网。本文主要梳理此场景,以配置双网卡为例,指导初学者配置网卡,实现内外网同时访问。双网卡配置硬件前提条件:硬件:板子有2块网卡。双网卡配置规则:1、连接外网LAN口,配置外网段IP、子网掩码、路由和网关;2、连接内网LAN口,配置内网IP、子网掩码和路由。注意:需要特别注意的是,一台设备不能同时配置两个网关,网关只能配置为外网网关,否则设备将无法识别外网出口,导致外网访问失败。以下示例中内外网的IP分配如下:(具体以您的网络为准)为例:外网:IP地址10.61.***掩码:255.0.0.0路由:10.61.***网关:10.61。***内网:IP地址192.168.***掩码:255.255.255.0路由:192.168.0.0loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACK运行MTU:65536指标:1RX数据包:15错误:0丢弃:0溢出:0帧:0TX数据包:15错误:0丢弃:0溢出:0载体:0碰撞:0txqueuelen:1000RX字节:1320TX字节:1320eth0链接encap:EthernetHWaddr96:d0:79:2d:9b:88Driverrk_gmac-dwmacinetaddr:10.61.***Bcast:10.255.255.255Mask:255.0.0.0inet6addr:fe80::94d0:79ff:fe2d:9b88/64范围:LinkUP广播运行多播MTU:1500指标:1RX数据包:28813错误:0丢弃:0溢出:0帧:0TX数据包:3445错误:0丢弃:0溢出:0载体:0碰撞X:0tx0queuelen:100字节:2706345TXbytes:330787Interrupt:35eth1Linkencap:EthernetHWaddrc2:5c:62:d7:1f:20Driversmsc75xxinetaddr:192.168.***Bcast:192.168.***Mask:255.255.255.0inet6地址:fe80::c05c:62ff:fed7:1f20/64范围:LinkUP广播运行多播MTU:1500指标:1RX数据包:3282错误:0丢弃:0溢出:0帧:0TX数据包:488错误:0丢弃:0溢出:0运营商:0冲突:0txqueuelen:1000RX字节:280938TX字节:55862#routeKernelIP路由表目标网关Genmask标志度量参考使用Ifacedefault10.61.***0.0.0.0UG000eth010*2.0.0.0U000eth010.61.****255.255.252.0U000eth0192.168.0.0*255.255.255.0U000eth1本例设置192网段为内网,网段10为外网,经过以上配置后ping内网(例如:192.168.***)正常,ping外网(例如:pingwww.baidu.com)也正常这意味着Ping192.168.***(192.168.***):56(84)bytes.64bytesfrom192.168.***:icmp_seq=1ttl=0time=1ms64bytesfrom192.168.****:icmp_seq=2ttl=0time=2ms64bytesfrom192.168.***:icmp_seq=3ttl=0time=1ms---192.168.***ping统计数据---3个数据包传输,3个接收,0%packetlossround-tripmin/avg/max=0/0/1ms#ping10.61.***Ping10.61.***(10.61.***):56(84)bytes.64bytesfrom10.61。***:icmp_seq=1ttl=0time=0ms64bytesfrom10.61.***:icmp_seq=2ttl=0time=0ms64bytesfrom10.61.***:icmp_seq=3ttl=0time=1ms---10.61.***pingstatistics---3packetstransmitted,3received,0%packetlossround-tripmin/avg/max=0/0/0ms知识总结:以上已经顺利完成双网网卡配置,我们来看相关的配置命令。1、相关调试命令1)删除路由routedel-net10.0.0.0netmask255.0.0.0deveth1routedel-net10.61.***netmask255.255.252.0deveth12)删除默认网关routedeldefault3)配置IPifconfigeth0192.168.***//为eth0网卡配置IP地址ifconfigeth0192.168.***netmask255.255.255.0//为eth0网卡配置IP并添加掩码ifconfigeth0192.168.***netmask255.255.255.0broadcast192.168.120.2554)configuredefaultgatewayrouteadddefaultgw1??0.61.***deveth0`5)configurerouterouteadd-net10.61.***netmask255.255.252.0deveth0`2,板子上的路由和IP存放位置:1)routingstoragelocation:/proc/net/route#catproc/net/routeIfaceDestinationGatewayFlagsRefCntUseMetricMaskMTUWindowIRTTeth00000000001C43D0A000300000000000000eth00000000A000000000001000000000FF000eth000C43D0A00000000000100000FCFFFF000eth10000A8C000000000000100000FFFFFF0002)静态IP存储location#catdata/ethernet/eth0DEVICE=eth0BOOTPROTO=STATICIPADDR=10.61.***NETMASK=255.255.255.0GATEWAY=10.61.***61.*10。**#猫数据/等hernet/eth1DEVICE=eth1BOOTPROTO=STATICIPADDR=192.168.***23NETMASK=255.255.255.0GATEWAY=192.168.***ROUTE=192.168.***3)动态IP(dhcp)存放位置:/data/dhcp/eth0.result#cat/data/dhcp/eth0.resultIP4166695241810.61.***10.61.***255.255.252.010.61.10.610.60.10.610.61.****问题总结:【问题】:拔网线不自动清除IP和路由【原因分析】:拔掉网线后,事件触发StopDhcpClient,但网络信息没有同步更新;【解决方法】:在foundation\communication\netmanager_ext\services\ethernetmanager\src\ethernet_management.cpp的StopDhcpClient()函数中添加更新网络链接状态索引9b03ad8..0c4f708100644#NAME?#NAME?@@-569,6+569,7@@voidEthernetManagement::StopDhcpClient(conststd::string&dev,sptrStopDhcpClient(dev,false);+devState->RemoteUpdateNetLinkInfo();devState->SetDhcpReqState(false);}@@-581,4+582,4@@voidEthernetManagement::SetDevState(sptr&devState,conststdevState->SetLowerUp(lowerUp);}}//namespaceNetManagerStandard-}//namespaceOHOS\Nonewlineatendoffile+}//namespaceOHOS由上面的例子,相信大家已经掌握了如何配置双网卡实现内外网同时访问,这个例子比较简单,重点是配置默认网关为外网网关。同时,通过这个例子,相信你也掌握了网络配置相关的命令。当然,accessing同时内网和外网的网络结构,例子中不止一个,大家也可以继续尝试,举一反三。了解更多开源,请访问:基础软件社区https://ost.51cto.com