多网卡下网络配置#
如下图所示,模块集成了多种网卡设备,不同的网卡配置不同的工作模式,提供了不同的网络服务。 其中可以通过 4G 网卡、Wi-Fi 网卡 AP 模式、以太网终端模式( WAN )访问外部网络,Wi-Fi 网卡 STATION 模式、以太网网关模式( LAN )、USB 网卡均提供了局域网络,那么该如何选择网卡使用,以及如何配置网络转发,按照自己想要的方式进行网络通信?

针对多网卡使用情况下,QuecPython 提供如下两种方式进行操作。
- 指定网卡数据发送
多网卡情况下,当进行网络通信时,无法确定走哪个网卡进行发出,但是有时网络服务在不同的局域网内,需要从指定网卡发出,此时可以通过标准的socket接口,通过 bind 网卡的 ip,来固定 tcp/udp 通信从哪个网口发出。如下图所示,当绑定10.11.129.252时走4G网卡交互,当绑定192.168.1.100时走以太网卡交互。

- 网卡转发配置
使用提供的默认网卡配置接口set_default_NIC(ip),当配置默认网卡后,将该网卡作为对外访问网络网卡,启用 NAT 功能,对其他网卡数据进行转发。如下图所示,使用nic.set_default_NIC('10.11.129.252')配置立即生效,然后会对来自以太网卡的非本机数据从 4G 网卡转发处理。
- 默认网卡接口开出,主要由用户维护默认网卡,便于切换网络转发。
- 其中 4G 网卡第一路固定配置为默认网卡,第一路拨号成功后会触发重新配置成默认网卡。目前使用场景基本都是4G网卡作为默认网卡对外转发,防止用户使用的不确定性,导致网络不可用,为了网络可靠性增加此操作。

Wi-Fi(AP)-> LTE(单路)#
在 Wi-Fi 网卡和蜂窝无线网卡(LTE)同时存在时,通过 Wi-Fi 网络使用 4G 网络连通外网,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。
示例代码如下展示:
# 此处展示只是配置转发方向,具体 Wi-Fi 网卡初始化配置请参考 Wi-Fi 网卡应用指导章节。
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。
nic.set_default_NIC('10.11.129.251')
# 此时 AP 网络下的终端设备可以通过 LTE 连接外部网络
Ethernet(LAN)-> LTE(单路)#
在以太网卡和蜂窝无线网卡(LTE)同时存在时,通过以太网络使用 4G 网络连通外网,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。
示例代码如下展示:
# 此处展示只是配置转发方向,具体以太网卡初始化配置请参考以太网卡应用指导章节 。
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。
nic.set_default_NIC('10.11.129.252')
# 此时 LAN 网络下的终端设备可以通过 LTE 连接外部网络。
Wi-Fi(AP)-> LTE(多路)#
在 Wi-Fi 网卡和蜂窝无线网卡(LTE)同时存在时,并且 LTE 进行多路拨号,一路为 Wi-Fi 网络提供 LTE 网络服务,一路为模组内部通信,该如何配置?工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。
如上图所示,蜂窝无线网卡第一路拨号 ip 为 10.11.129.251 ,第二路拨号 ip 为 10.11.129.252 ,我们使用第一路作为模组内部通信,第二路为 Wi-Fi 网络提供 LTE 网络服务。
第一路作为内部通信网络服务,使用第一路进行 TCP 通信示例代码如下展示:
# 导入usocket模块
import usocket
if __name__ == '__main__':
# 创建一个socket实例
sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.TCP_CUSTOMIZE_PORT)
sock.settimeout(5)
sock.bind(("10.11.129.251", 0))
# 解析域名
sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
print('start connect')
# 建立连接
sock.connect(sockaddr)
# 向服务端发送消息
ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
print('send %d bytes' % ret)
#接收服务端消息
data=sock.recv(1024)
print('recv %s bytes:' % len(data))
print(data.decode())
# 关闭连接
sock.close()
第二路为 Wi-Fi 网络提供 LTE 网络服务,配置示例代码如下展示:
# 此处展示只是配置转发方向,具体 Wi-Fi 网卡初始化配置请参考 Wi-Fi 网卡应用指导章节。
# nic 指具体的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。
nic.set_default_NIC('10.11.129.252')
# 此时 AP 网络下的终端设备可以通过 LTE 连接外部网络。
Ethernet(WAN)-> LTE(多路)#
在以太网卡和蜂窝无线网卡(LTE)同时存在时,并且 LTE 进行多路拨号,一路为以太网络提供 LTE 网络服务,一路为模组内部通信,,该如何配置,工作方式见下图:

对于多种网卡,配置转发关系,当前 QuecPython 尚未提供复杂详细的路由表转发配置功能,我们只需要配置默认网卡即可。再多的网卡,也只有唯一的一个默认网卡,通过默认网卡配置,都会从默认网卡进行 NAT 转发。
如上图所示,蜂窝无线网卡第一路拨号 ip 为 10.11.129.251 ,第二路拨号 ip 为 10.11.129.252 ,我们使用第一路作为模组内部通信,第二路为以太网提供 LTE 网络服务。
第一路作为内部通信网络服务,使用第一路进行 TCP 通信示例代码如下展示:
# 导入usocket模块
import usocket
if __name__ == '__main__':
# 创建一个socket实例
sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM, usocket.TCP_CUSTOMIZE_PORT)
sock.settimeout(5)
sock.bind(("10.11.129.251", 0))
# 解析域名
sockaddr=usocket.getaddrinfo('python.quectel.com', 80)[0][-1]
print('start connect')
# 建立连接
sock.connect(sockaddr)
# 向服务端发送消息
ret=sock.send('GET /NEWS HTTP/1.1\r\nHost: python.quectel.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n')
print('send %d bytes' % ret)
#接收服务端消息
data=sock.recv(1024)
print('recv %s bytes:' % len(data))
print(data.decode())
# 关闭连接
sock.close()
第二路为以太网络提供 LTE 网络服务,配置示例代码如下展示:
# 此处展示只是配置转发方向,具体以太网卡初始化配置请参考以太网卡应用指导章节。
# nic 指具体网卡的网卡对象,当前我们默认网卡配置接口在具体网卡功能内部,后续会作为基础接口放置在网络配置模块下。
nic.set_default_NIC('10.11.129.252')
# 此时 WAN 网络下的终端设备可以通过 LTE 连接外部网络。
228

被折叠的 条评论
为什么被折叠?



