本文帶大家了解如何配置雙網(wǎng)卡達(dá)成同時訪問內(nèi)、外網(wǎng)的目的,該示例相對簡單,重點(diǎn)是需要將默認(rèn)網(wǎng)關(guān)配置為外網(wǎng)網(wǎng)關(guān)。
?
前言
在某些特殊場景下,我們可能有這樣的網(wǎng)絡(luò)配置訴求,即:訪問內(nèi)網(wǎng)同時也需要訪問外網(wǎng)。
本文主要針對該場景進(jìn)行梳理,以雙網(wǎng)卡配置為例,指導(dǎo)初學(xué)者進(jìn)行網(wǎng)卡配置,達(dá)成同時訪問內(nèi)外網(wǎng)。
雙網(wǎng)卡配置硬件前提條件:
硬件方面:板卡有2個網(wǎng)卡。
雙網(wǎng)卡配置規(guī)則:1、連接外網(wǎng)LAN口,配置外網(wǎng)網(wǎng)段IP、子網(wǎng)掩碼、路由和網(wǎng)關(guān);2、連接內(nèi)網(wǎng)LAN口,配置內(nèi)網(wǎng)網(wǎng)段IP、子網(wǎng)掩碼和路由。
說明:特別要注意,一臺設(shè)備不能同時配置兩個網(wǎng)關(guān),且網(wǎng)關(guān)只能配置為外網(wǎng)網(wǎng)關(guān),否則設(shè)備將無法區(qū)分外網(wǎng)出口,導(dǎo)致外網(wǎng)訪問失敗。
以下示例內(nèi)外網(wǎng)的IP分配如下:(具體以你所在的網(wǎng)絡(luò)為準(zhǔn))
如下為例:
外網(wǎng):IP地址10.61.*** 掩碼:255.0.0.0 路由:10.61.*** 網(wǎng)關(guān):10.61.***
內(nèi)網(wǎng):IP地址192.168.*** 掩碼:255.255.255.0 路由:192.168.0.0
lo Link encap:Local Loopback
.NET addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope: Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1320 TX bytes:1320
eth0 Link encap:Ethernet HWaddr 96:d0:79:2d:9b:88 Driver rk_gmac-dwmac
inet addr:10.61.*** Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::94d0:79ff:fe2d:9b88/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28813 errors:0 dropped:0 overruns:0 frame:0
TX packets:3445 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2706345 TX bytes:330787
Interrupt:35
eth1 Link encap:Ethernet HWaddr c2:5c:62:d7:1f:20 Driver smsc75xx
inet addr:192.168.*** Bcast:192.168.*** Mask:255.255.255.0
inet6 addr: fe80::c05c:62ff:fed7:1f20/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3282 errors:0 dropped:0 overruns:0 frame:0
TX packets:488 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:280938 TX bytes:55862
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.61.*** 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth0
10.61.*** * 255.255.252.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
本例中設(shè)置192網(wǎng)段為內(nèi)網(wǎng),10網(wǎng)段為外網(wǎng),經(jīng)過以上配置后,ping內(nèi)網(wǎng)(例如:192.168.***)正常,ping外網(wǎng)(例如:ping www.baidu.com)正常。說明同時訪問內(nèi)外網(wǎng)成功
Ping 192.168.*** (192.168.***): 56(84) bytes.
64 bytes from 192.168.***: icmp_seq=1 ttl=0 time=1 ms
64 bytes from 192.168.***: icmp_seq=2 ttl=0 time=2 ms
64 bytes from 192.168.***: icmp_seq=3 ttl=0 time=1 ms
--- 192.168.*** ping statistics ---
3 packets transmitted, 3 received, 0% packet loss
round-trip min/avg/max = 0/0/1 ms
# ping 10.61.***
Ping 10.61.*** (10.61.***): 56(84) bytes.
64 bytes from 10.61.***: icmp_seq=1 ttl=0 time=0 ms
64 bytes from 10.61.***: icmp_seq=2 ttl=0 time=0 ms
64 bytes from 10.61.***: icmp_seq=3 ttl=0 time=1 ms
--- 10.61.*** ping statistics ---
3 packets transmitted, 3 received, 0% packet loss
round-trip min/avg/max = 0/0/0 ms
知識總結(jié):
以上已經(jīng)成功完成了雙網(wǎng)卡配置,下面我們來看下相關(guān)配置命令。
1、相關(guān)調(diào)試命令
1)刪除路由
route del -net 10.0.0.0 netmask 255.0.0.0 dev eth1
route del -net 10.61.*** netmask 255.255.252.0 dev eth1
2)刪除默認(rèn)網(wǎng)關(guān)
route del default
3)配置IP
ifconfig eth0 192.168.*** //給eth0網(wǎng)卡配置IP地址
ifconfig eth0 192.168.*** netmask 255.255.255.0 //給eth0網(wǎng)卡配置IP,并加mask
ifconfig eth0 192.168.*** netmask 255.255.255.0 broadcast 192.168.120.255
4)配置默認(rèn)網(wǎng)關(guān)
route add default gw 10.61.*** dev eth0`
5)配置路由
route add -net 10.61.*** netmask 255.255.252.0 dev eth0`
2、路由及IP在板子保存位置:
1)路由保存位置:/proc/net/route
# cat proc/net/route
Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
eth0 00000000 01C43D0A 0003 0 0 0 00000000 0 0 0
eth0 0000000A 00000000 0001 0 0 0 000000FF 0 0 0
eth0 00C43D0A 00000000 0001 0 0 0 00FCFFFF 0 0 0
eth1 0000A8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0
2)靜態(tài)IP保存位置
# cat data/ethernet/eth0
DEVICE=eth0
BOOTPROTO=STATIC
IPADDR=10.61.***
NETMASK=255.255.255.0
GATEWAY=10.61.***
ROUTE=10.61.***
# cat data/ethernet/eth1
DEVICE=eth1
BOOTPROTO=STATIC
IPADDR=192.168.***23
NETMASK=255.255.255.0
GATEWAY=192.168.***
ROUTE=192.168.***
3)動態(tài)IP(dhcp)保存位置 :/data/dhcp/eth0.result
# cat /data/dhcp/eth0.result
IP4 1666952418 10.61.*** 10.61.*** 255.255.252.0 10.61.10.6 10.60.10.6 10.61.*** *
問題總結(jié):
【問題現(xiàn)象】:拔掉網(wǎng)線不自動清除IP和路由
【原因分析】:拔掉網(wǎng)線后事件觸發(fā)StopDhcpClient,但未同步更新網(wǎng)絡(luò)信息;
【解決方案】:
在foundationcommunicationnetmanager_extservicesethernetmanagersrcethernet_management.cpp 的StopDhcpClient()函數(shù)中增加更新網(wǎng)絡(luò)鏈接狀態(tài)。
index 9b03ad8..0c4f708 100644
#NAME?
#NAME?
@@ -569,6 +569,7 @@ void EthernetManagement::StopDhcpClient(const std::string &dev, sptr<DevInterfac
{
NETMGR_EXT_LOG_D("EthernetManagement StopDhcpClient[%{public}s]", dev.c_str());
ethDhcpController_->StopDhcpClient(dev, false);
+ devState->RemoteUpdateNetLinkInfo();
devState->SetDhcpReqState(false);
}
@@ -581,4 +582,4 @@ void EthernetManagement::SetDevState(sptr<DevInterfaceState> &devState, const st
devState->SetLowerUp(lowerUp);
}
} // namespace NetManagerStandard
-} // namespace OHOS
No newline at end of file
+} // namespace OHOS
通過以上示例指導(dǎo),相信大家已經(jīng)掌握了如何配置雙網(wǎng)卡達(dá)成同時訪問內(nèi)、外網(wǎng)的目的,該示例相對簡單,重點(diǎn)是需要將默認(rèn)網(wǎng)關(guān)配置為外網(wǎng)網(wǎng)關(guān)。同時,通過該示例,相信大家也熟練掌握了網(wǎng)絡(luò)配置相關(guān)命令。當(dāng)然,同時訪問內(nèi)網(wǎng)和外網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu),不止示例中一種,大家也可以不斷嘗試,舉一反三。